diff options
author | David Baker <dave@matrix.org> | 2016-09-09 19:11:34 +0100 |
---|---|---|
committer | David Baker <dave@matrix.org> | 2016-09-09 19:11:34 +0100 |
commit | b91e2833b3b59d6a8d104d8f6304383e68de2086 (patch) | |
tree | 4df820b06f89d7cb98ec6f75a99be4eebbd92ef6 /synapse/appservice/api.py | |
parent | Add index to event_push_actions (diff) | |
parent | Merge pull request #1096 from matrix-org/markjh/get_access_token (diff) | |
download | synapse-b91e2833b3b59d6a8d104d8f6304383e68de2086.tar.xz |
Merge remote-tracking branch 'origin/develop' into dbkr/make_notif_highlight_query_fast
Diffstat (limited to 'synapse/appservice/api.py')
-rw-r--r-- | synapse/appservice/api.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/synapse/appservice/api.py b/synapse/appservice/api.py index cc4af23962..b0eb0c6d9d 100644 --- a/synapse/appservice/api.py +++ b/synapse/appservice/api.py @@ -32,6 +32,14 @@ HOUR_IN_MS = 60 * 60 * 1000 APP_SERVICE_PREFIX = "/_matrix/app/unstable" +def _is_valid_3pe_metadata(info): + if "instances" not in info: + return False + if not isinstance(info["instances"], list): + return False + return True + + def _is_valid_3pe_result(r, field): if not isinstance(r, dict): return False @@ -162,11 +170,18 @@ class ApplicationServiceApi(SimpleHttpClient): urllib.quote(protocol) ) try: - defer.returnValue((yield self.get_json(uri, {}))) + info = yield self.get_json(uri, {}) + + if not _is_valid_3pe_metadata(info): + logger.warning("query_3pe_protocol to %s did not return a" + " valid result", uri) + defer.returnValue(None) + + defer.returnValue(info) except Exception as ex: logger.warning("query_3pe_protocol to %s threw exception %s", uri, ex) - defer.returnValue({}) + defer.returnValue(None) key = (service.id, protocol) return self.protocol_meta_cache.get(key) or ( |