diff options
author | Erik Johnston <erik@matrix.org> | 2019-04-02 11:16:57 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-04-02 11:20:09 +0100 |
commit | 24232514bfdd476b037052889d81a6651062446d (patch) | |
tree | 5936760bc9bb2124b2e45703c39f72ae5023aab2 /synapse | |
parent | Fixup docstrings (diff) | |
download | synapse-24232514bfdd476b037052889d81a6651062446d.tar.xz |
Remove threepid binding if id server returns 400/404/501
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/handlers/identity.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/synapse/handlers/identity.py b/synapse/handlers/identity.py index 3eb112bf9d..22469486d7 100644 --- a/synapse/handlers/identity.py +++ b/synapse/handlers/identity.py @@ -227,23 +227,24 @@ class IdentityHandler(BaseHandler): content, headers, ) - - yield self.store.remove_user_bound_threepid( - user_id=mxid, - medium=threepid["medium"], - address=threepid["address"], - id_server=id_server, - ) + changed = True except HttpResponseException as e: + changed = False if e.code in (400, 404, 501,): # The remote server probably doesn't support unbinding (yet) logger.warn("Received %d response while unbinding threepid", e.code) - defer.returnValue(False) else: logger.error("Failed to unbind threepid on identity server: %s", e) raise SynapseError(502, "Failed to contact identity server") - defer.returnValue(True) + yield self.store.remove_user_bound_threepid( + user_id=mxid, + medium=threepid["medium"], + address=threepid["address"], + id_server=id_server, + ) + + defer.returnValue(changed) @defer.inlineCallbacks def requestEmailToken(self, id_server, email, client_secret, send_attempt, **kwargs): |