Log if rejecting 3PE query metadata result due to type check

This commit is contained in:
Paul "LeoNerd" Evans 2016-09-09 15:09:46 +01:00
parent ed44c475d8
commit 776594f99d

View File

@ -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
@ -164,10 +172,9 @@ class ApplicationServiceApi(SimpleHttpClient):
try:
info = yield self.get_json(uri, {})
# Ignore any result that doesn't contain an "instances" list
if "instances" not in info:
defer.returnValue(None)
if not isinstance(info["instances"], list):
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)