diff --git a/synapse/federation/federation_server.py b/synapse/federation/federation_server.py
index 4742ca9390..b23f72c7fa 100644
--- a/synapse/federation/federation_server.py
+++ b/synapse/federation/federation_server.py
@@ -25,6 +25,8 @@ from synapse.events import FrozenEvent
from synapse.api.errors import FederationError, SynapseError
+from synapse.crypto.event_signing import compute_event_signature
+
import logging
@@ -156,6 +158,15 @@ class FederationServer(FederationBase):
auth_chain = yield self.store.get_auth_chain(
[pdu.event_id for pdu in pdus]
)
+
+ for event in auth_chain:
+ event.signatures.update(
+ compute_event_signature(
+ event,
+ self.hs.hostname,
+ self.hs.config.signing_key[0]
+ )
+ )
else:
raise NotImplementedError("Specify an event")
diff --git a/synapse/federation/transaction_queue.py b/synapse/federation/transaction_queue.py
index f38aeba7cc..731019ad9f 100644
--- a/synapse/federation/transaction_queue.py
+++ b/synapse/federation/transaction_queue.py
@@ -157,15 +157,19 @@ class TransactionQueue(object):
else:
logger.info("TX [%s] is ready for retry", destination)
- logger.info("TX [%s] _attempt_new_transaction", destination)
-
if destination in self.pending_transactions:
# XXX: pending_transactions can get stuck on by a never-ending
# request at which point pending_pdus_by_dest just keeps growing.
# we need application-layer timeouts of some flavour of these
# requests
+ logger.info(
+ "TX [%s] Transaction already in progress",
+ destination
+ )
return
+ logger.info("TX [%s] _attempt_new_transaction", destination)
+
# list of (pending_pdu, deferred, order)
pending_pdus = self.pending_pdus_by_dest.pop(destination, [])
pending_edus = self.pending_edus_by_dest.pop(destination, [])
@@ -176,6 +180,7 @@ class TransactionQueue(object):
destination, len(pending_pdus))
if not pending_pdus and not pending_edus and not pending_failures:
+ logger.info("TX [%s] Nothing to send", destination)
return
logger.debug(
|