mirror of
https://github.com/element-hq/synapse
synced 2024-08-19 06:50:52 +00:00
simplify get_persisted_pdu
it doesn't make much sense to use get_persisted_pdu on the receive path: just get the event straight from the store.
This commit is contained in:
parent
bd348f0af6
commit
9fc5b74b24
2 changed files with 27 additions and 30 deletions
|
@ -277,7 +277,7 @@ class FederationServer(FederationBase):
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
@log_function
|
@log_function
|
||||||
def on_pdu_request(self, origin, event_id):
|
def on_pdu_request(self, origin, event_id):
|
||||||
pdu = yield self._get_persisted_pdu(origin, event_id)
|
pdu = yield self.handler.get_persisted_pdu(origin, event_id)
|
||||||
|
|
||||||
if pdu:
|
if pdu:
|
||||||
defer.returnValue(
|
defer.returnValue(
|
||||||
|
@ -470,17 +470,6 @@ class FederationServer(FederationBase):
|
||||||
ts_now_ms = self._clock.time_msec()
|
ts_now_ms = self._clock.time_msec()
|
||||||
return self.store.get_user_id_for_open_id_token(token, ts_now_ms)
|
return self.store.get_user_id_for_open_id_token(token, ts_now_ms)
|
||||||
|
|
||||||
@log_function
|
|
||||||
def _get_persisted_pdu(self, origin, event_id, do_auth=True):
|
|
||||||
""" Get a PDU from the database with given origin and id.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Deferred: Results in a `Pdu`.
|
|
||||||
"""
|
|
||||||
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
|
||||||
transmission.
|
transmission.
|
||||||
|
|
|
@ -103,8 +103,10 @@ class FederationHandler(BaseHandler):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# 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(
|
existing = yield self.store.get_event(
|
||||||
origin, pdu.event_id, do_auth=False
|
pdu.event_id,
|
||||||
|
allow_none=True,
|
||||||
|
allow_rejected=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# FIXME: Currently we fetch an event again when we already have it
|
# FIXME: Currently we fetch an event again when we already have it
|
||||||
|
@ -1468,11 +1470,20 @@ class FederationHandler(BaseHandler):
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
@log_function
|
@log_function
|
||||||
def get_persisted_pdu(self, origin, event_id, do_auth=True):
|
def get_persisted_pdu(self, origin, event_id):
|
||||||
""" Get a PDU from the database with given origin and id.
|
"""Get an event from the database for the given server.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
origin [str]: hostname of server which is requesting the event; we
|
||||||
|
will check that the server is allowed to see it.
|
||||||
|
event_id [str]: id of the event being requested
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Deferred: Results in a `Pdu`.
|
Deferred[EventBase|None]: None if we know nothing about the event;
|
||||||
|
otherwise the (possibly-redacted) event.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
AuthError if the server is not currently in the room
|
||||||
"""
|
"""
|
||||||
event = yield self.store.get_event(
|
event = yield self.store.get_event(
|
||||||
event_id,
|
event_id,
|
||||||
|
@ -1493,20 +1504,17 @@ class FederationHandler(BaseHandler):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if do_auth:
|
in_room = yield self.auth.check_host_in_room(
|
||||||
in_room = yield self.auth.check_host_in_room(
|
event.room_id,
|
||||||
event.room_id,
|
origin
|
||||||
origin
|
)
|
||||||
)
|
if not in_room:
|
||||||
if not in_room:
|
raise AuthError(403, "Host not in room.")
|
||||||
raise AuthError(403, "Host not in room.")
|
|
||||||
|
|
||||||
events = yield self._filter_events_for_server(
|
|
||||||
origin, event.room_id, [event]
|
|
||||||
)
|
|
||||||
|
|
||||||
event = events[0]
|
|
||||||
|
|
||||||
|
events = yield self._filter_events_for_server(
|
||||||
|
origin, event.room_id, [event]
|
||||||
|
)
|
||||||
|
event = events[0]
|
||||||
defer.returnValue(event)
|
defer.returnValue(event)
|
||||||
else:
|
else:
|
||||||
defer.returnValue(None)
|
defer.returnValue(None)
|
||||||
|
|
Loading…
Reference in a new issue