1 files changed, 11 insertions, 2 deletions
diff --git a/synapse/server.py b/synapse/server.py
index 6c57ab3e18..ef75ab434c 100644
--- a/synapse/server.py
+++ b/synapse/server.py
@@ -274,14 +274,23 @@ class HomeServer(object):
return TransportLayerClient(self)
def build_federation_sender(self):
- if self.config.send_federation:
+ if self.should_send_federation():
return TransactionQueue(self)
- else:
+ elif not self.config.worker_app:
return FederationRemoteSendQueue(self)
+ else:
+ raise Exception("Workers cannot send federation traffic")
def remove_pusher(self, app_id, push_key, user_id):
return self.get_pusherpool().remove_pusher(app_id, push_key, user_id)
+ def should_send_federation(self):
+ "Should this server be sending federation traffic directly?"
+ return self.config.send_federation and (
+ not self.config.worker_app
+ or self.config.worker_app == "synapse.app.federation_sender"
+ )
+
def _make_dependency_method(depname):
def _get(hs):
|