diff options
author | Brendan Abolivier <babolivier@matrix.org> | 2019-07-09 18:48:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-09 18:48:38 +0100 |
commit | 65434da75d0f59c3973259416a9cf80d20cc4fc7 (patch) | |
tree | 4651d641717343d1a0cbec8fe67c7df80402be6e /synapse/handlers/room_member.py | |
parent | remove unused and unnecessary check for FederationDeniedError (#5645) (diff) | |
parent | Merge branch 'develop' into babolivier/invite-json (diff) | |
download | synapse-65434da75d0f59c3973259416a9cf80d20cc4fc7.tar.xz |
Merge pull request #5638 from matrix-org/babolivier/invite-json
Use JSON when querying the IS's /store-invite endpoint
Diffstat (limited to 'synapse/handlers/room_member.py')
-rw-r--r-- | synapse/handlers/room_member.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index 679daaa074..e0196ef83e 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -29,7 +29,7 @@ from twisted.internet import defer import synapse.server import synapse.types from synapse.api.constants import EventTypes, Membership -from synapse.api.errors import AuthError, Codes, SynapseError +from synapse.api.errors import AuthError, Codes, HttpResponseException, SynapseError from synapse.types import RoomID, UserID from synapse.util.async_helpers import Linearizer from synapse.util.distributor import user_joined_room, user_left_room @@ -872,9 +872,23 @@ class RoomMemberHandler(object): "sender_avatar_url": inviter_avatar_url, } - data = yield self.simple_http_client.post_urlencoded_get_json( - is_url, invite_config - ) + try: + data = yield self.simple_http_client.post_json_get_json( + is_url, invite_config + ) + except HttpResponseException as e: + # Some identity servers may only support application/x-www-form-urlencoded + # types. This is especially true with old instances of Sydent, see + # https://github.com/matrix-org/sydent/pull/170 + logger.info( + "Failed to POST %s with JSON, falling back to urlencoded form: %s", + is_url, + e, + ) + data = yield self.simple_http_client.post_urlencoded_get_json( + is_url, invite_config + ) + # TODO: Check for success token = data["token"] public_keys = data.get("public_keys", []) |