diff options
author | Erik Johnston <erik@matrix.org> | 2016-11-23 14:09:47 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-11-23 14:09:47 +0000 |
commit | 26072df6af7ca37b8e6e5f340a00e695de5c93d5 (patch) | |
tree | 2abd7451b4b1ffbef5f8e899f1fed7272e89c193 /synapse/server.py | |
parent | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/split_out_... (diff) | |
download | synapse-26072df6af7ca37b8e6e5f340a00e695de5c93d5.tar.xz |
Ensure only main or federation_sender process can send federation traffic
Diffstat (limited to 'synapse/server.py')
-rw-r--r-- | synapse/server.py | 13 |
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): |