Skip to content
Snippets Groups Projects
Commit 40c6fe1b authored by Erik Johnston's avatar Erik Johnston
Browse files

Don't bother requesting PDUs with bad signatures from the same server

parent 941f5910
No related branches found
No related tags found
No related merge requests found
......@@ -225,11 +225,11 @@ class FederationClient(object):
]
signed_pdus = yield self._check_sigs_and_hash_and_fetch(
pdus, outlier=True
destination, pdus, outlier=True
)
signed_auth = yield self._check_sigs_and_hash_and_fetch(
auth_chain, outlier=True
destination, auth_chain, outlier=True
)
signed_auth.sort(key=lambda e: e.depth)
......@@ -249,7 +249,7 @@ class FederationClient(object):
]
signed_auth = yield self._check_sigs_and_hash_and_fetch(
auth_chain, outlier=True
destination, auth_chain, outlier=True
)
signed_auth.sort(key=lambda e: e.depth)
......@@ -291,11 +291,11 @@ class FederationClient(object):
]
signed_state = yield self._check_sigs_and_hash_and_fetch(
state, outlier=True
destination, state, outlier=True
)
signed_auth = yield self._check_sigs_and_hash_and_fetch(
auth_chain, outlier=True
destination, auth_chain, outlier=True
)
auth_chain.sort(key=lambda e: e.depth)
......@@ -355,7 +355,7 @@ class FederationClient(object):
]
signed_auth = yield self._check_sigs_and_hash_and_fetch(
auth_chain, outlier=True
destination, auth_chain, outlier=True
)
signed_auth.sort(key=lambda e: e.depth)
......@@ -378,7 +378,7 @@ class FederationClient(object):
return event
@defer.inlineCallbacks
def _check_sigs_and_hash_and_fetch(self, pdus, outlier=False):
def _check_sigs_and_hash_and_fetch(self, origin, pdus, outlier=False):
"""Takes a list of PDUs and checks the signatures and hashs of each
one. If a PDU fails its signature check then we check if we have it in
the database and if not then request if from the originating server of
......@@ -414,15 +414,16 @@ class FederationClient(object):
continue
# Check pdu.origin
new_pdu = yield self.get_pdu(
destinations=[pdu.origin],
event_id=pdu.event_id,
outlier=outlier,
)
if new_pdu:
signed_pdus.append(new_pdu)
continue
if pdu.origin != origin:
new_pdu = yield self.get_pdu(
destinations=[pdu.origin],
event_id=pdu.event_id,
outlier=outlier,
)
if new_pdu:
signed_pdus.append(new_pdu)
continue
logger.warn("Failed to find copy of %s with valid signature")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment