We don't always want to Auth get_persisted_pdu

This commit is contained in:
Erik Johnston 2014-11-24 12:56:17 +00:00
parent a46e5ef621
commit 4bd0ab76c6
2 changed files with 20 additions and 11 deletions

View File

@ -504,13 +504,15 @@ class ReplicationLayer(object):
defer.returnValue(self.event_from_pdu_json(pdu_dict)) defer.returnValue(self.event_from_pdu_json(pdu_dict))
@log_function @log_function
def _get_persisted_pdu(self, origin, event_id): def _get_persisted_pdu(self, origin, event_id, do_auth=True):
""" Get a PDU from the database with given origin and id. """ Get a PDU from the database with given origin and id.
Returns: Returns:
Deferred: Results in a `Pdu`. Deferred: Results in a `Pdu`.
""" """
return self.handler.get_persisted_pdu(origin, event_id) return self.handler.get_persisted_pdu(
origin, event_id, do_auth=do_auth
)
def _transaction_from_pdus(self, pdu_list): def _transaction_from_pdus(self, pdu_list):
"""Returns a new Transaction containing the given PDUs suitable for """Returns a new Transaction containing the given PDUs suitable for
@ -529,7 +531,9 @@ class ReplicationLayer(object):
@log_function @log_function
def _handle_new_pdu(self, origin, pdu, backfilled=False): def _handle_new_pdu(self, origin, pdu, backfilled=False):
# We reprocess pdus when we have seen them only as outliers # We reprocess pdus when we have seen them only as outliers
existing = yield self._get_persisted_pdu(origin, pdu.event_id) existing = yield self._get_persisted_pdu(
origin, pdu.event_id, do_auth=False
)
if existing and (not existing.outlier or pdu.outlier): if existing and (not existing.outlier or pdu.outlier):
logger.debug("Already seen pdu %s", pdu.event_id) logger.debug("Already seen pdu %s", pdu.event_id)
@ -547,7 +551,11 @@ class ReplicationLayer(object):
if min_depth and pdu.depth > min_depth: if min_depth and pdu.depth > min_depth:
for event_id, hashes in pdu.prev_events: for event_id, hashes in pdu.prev_events:
exists = yield self._get_persisted_pdu(origin, event_id) exists = yield self._get_persisted_pdu(
origin,
event_id,
do_auth=False
)
if not exists: if not exists:
logger.debug("Requesting pdu %s", event_id) logger.debug("Requesting pdu %s", event_id)

View File

@ -529,7 +529,7 @@ class FederationHandler(BaseHandler):
@defer.inlineCallbacks @defer.inlineCallbacks
@log_function @log_function
def get_persisted_pdu(self, origin, event_id): def get_persisted_pdu(self, origin, event_id, do_auth=True):
""" Get a PDU from the database with given origin and id. """ Get a PDU from the database with given origin and id.
Returns: Returns:
@ -541,12 +541,13 @@ class FederationHandler(BaseHandler):
) )
if event: if event:
in_room = yield self.auth.check_host_in_room( if do_auth:
event.room_id, in_room = yield self.auth.check_host_in_room(
origin event.room_id,
) origin
if not in_room: )
raise AuthError(403, "Host not in room.") if not in_room:
raise AuthError(403, "Host not in room.")
defer.returnValue(event) defer.returnValue(event)
else: else: