We don't always want to Auth get_persisted_pdu
This commit is contained in:
parent
a46e5ef621
commit
4bd0ab76c6
|
@ -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)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue