diff options
author | Erik Johnston <erik@matrix.org> | 2019-05-15 17:28:33 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-05-15 17:28:33 +0100 |
commit | e6459c26b45866558056bee991024e093e0de059 (patch) | |
tree | e5712db4e3e40a3c27c57de6d8208128c43d3d02 /synapse | |
parent | Newsfile (diff) | |
download | synapse-e6459c26b45866558056bee991024e093e0de059.tar.xz |
Actually implement idempotency
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/rest/client/v2_alpha/relations.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/synapse/rest/client/v2_alpha/relations.py b/synapse/rest/client/v2_alpha/relations.py index bac9e85c21..c3ac73b8c7 100644 --- a/synapse/rest/client/v2_alpha/relations.py +++ b/synapse/rest/client/v2_alpha/relations.py @@ -31,6 +31,7 @@ from synapse.http.servlet import ( parse_json_object_from_request, parse_string, ) +from synapse.rest.client.transactions import HttpTransactionCache from ._base import client_v2_patterns @@ -59,6 +60,7 @@ class RelationSendServlet(RestServlet): super(RelationSendServlet, self).__init__() self.auth = hs.get_auth() self.event_creation_handler = hs.get_event_creation_handler() + self.txns = HttpTransactionCache(hs) def register(self, http_server): http_server.register_paths( @@ -69,7 +71,12 @@ class RelationSendServlet(RestServlet): http_server.register_paths( "PUT", client_v2_patterns(self.PATTERN + "/(?P<txn_id>[^/]*)$", releases=()), - self.on_PUT_or_POST, + self.on_PUT, + ) + + def on_PUT(self, request, *args, **kwargs): + return self.txns.fetch_or_execute_request( + request, self.on_PUT_or_POST, request, *args, **kwargs ) @defer.inlineCallbacks |