'Content is a dict with keys::
auth_chain (list): A list of events that give the auth chain.
missing (list): A list of event_ids indicating what the other
side (`origin`) think we\'re missing.
rejects (dict): A mapping from event_id to a 2-tuple of reason
string and a proof (or None) of why the event was rejected.
The keys of this dict give the list of events the `origin` has
rejected.
Args:
origin (str)
content (dict)
event_id (str)
Returns:
Deferred: Results in `dict` with the same format as `content`'

@defer.inlineCallbacks
def on_query_auth_request(self, origin, content, room_id, event_id):

    with (yield self._server_linearizer.queue((origin, room_id))):
        auth_chain = [self.event_from_pdu_json(e) for e in content['auth_chain']]
        signed_auth = (yield self._check_sigs_and_hash_and_fetch(origin, auth_chain, outlier=True))
        ret = (yield self.handler.on_query_auth(origin, event_id, signed_auth, content.get('rejects', []), content.get('missing', [])))
        time_now = self._clock.time_msec()
        send_content = {'auth_chain': [e.get_pdu_json(time_now) for e in ret['auth_chain']], 'rejects': ret.get('rejects', []), 'missing': ret.get('missing', [])}
    defer.returnValue((200, send_content))
