diff options
author | Erik Johnston <erik@matrix.org> | 2015-02-18 13:57:55 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-02-18 13:57:55 +0000 |
commit | a7925259a15f2995af2fedc2a8c59cdabd78b963 (patch) | |
tree | 079f8fefaf9ae250d13bb3d3ec888cc16356a577 | |
parent | Add errback to all deferreds in transaction_queue (diff) | |
parent | Merge pull request #80 from matrix-org/restrict-destinations (diff) | |
download | synapse-a7925259a15f2995af2fedc2a8c59cdabd78b963.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into release-v0.7.1
-rw-r--r-- | synapse/federation/transaction_queue.py | 30 | ||||
-rw-r--r-- | synapse/python_dependencies.py | 10 | ||||
-rw-r--r-- | synapse/rest/media/v1/base_resource.py | 2 |
3 files changed, 33 insertions, 9 deletions
diff --git a/synapse/federation/transaction_queue.py b/synapse/federation/transaction_queue.py index 1e5505a4bf..7d30c924d1 100644 --- a/synapse/federation/transaction_queue.py +++ b/synapse/federation/transaction_queue.py @@ -66,6 +66,26 @@ class TransactionQueue(object): # HACK to get unique tx id self._next_txn_id = int(self._clock.time_msec()) + def can_send_to(self, destination): + """Can we send messages to the given server? + + We can't send messages to ourselves. If we are running on localhost + then we can only federation with other servers running on localhost. + Otherwise we only federate with servers on a public domain. + + Args: + destination(str): The server we are possibly trying to send to. + Returns: + bool: True if we can send to the server. + """ + + if destination == self.server_name: + return False + if self.server_name.startswith("localhost"): + return destination.startswith("localhost") + else: + return not destination.startswith("localhost") + @defer.inlineCallbacks @log_function def enqueue_pdu(self, pdu, destinations, order): @@ -74,8 +94,9 @@ class TransactionQueue(object): # table and we'll get back to it later. destinations = set(destinations) - destinations.discard(self.server_name) - destinations.discard("localhost") + destinations = set( + dest for dest in destinations if self.can_send_to(dest) + ) logger.debug("Sending to: %s", str(destinations)) @@ -110,7 +131,7 @@ class TransactionQueue(object): def enqueue_edu(self, edu): destination = edu.destination - if destination == self.server_name or destination == "localhost": + if not self.can_send_to(destination): return deferred = defer.Deferred() @@ -139,6 +160,9 @@ class TransactionQueue(object): deferred = defer.Deferred() + if not self.can_send_to(destination): + return + self.pending_failures_by_dest.setdefault( destination, [] ).append( diff --git a/synapse/python_dependencies.py b/synapse/python_dependencies.py index ec78fc3627..9464b4fb62 100644 --- a/synapse/python_dependencies.py +++ b/synapse/python_dependencies.py @@ -25,6 +25,11 @@ def github_link(project, version, egg): DEPENDENCY_LINKS = [ github_link( + project="pyca/pynacl", + version="d4d3175589b892f6ea7c22f466e0e223853516fa", + egg="pynacl-0.3.0", + ), + github_link( project="matrix-org/syutil", version="v0.0.3", egg="syutil-0.0.3", @@ -34,11 +39,6 @@ DEPENDENCY_LINKS = [ version="v0.6.2", egg="matrix_angular_sdk-0.6.2", ), - github_link( - project="pyca/pynacl", - version="d4d3175589b892f6ea7c22f466e0e223853516fa", - egg="pynacl-0.3.0", - ) ] diff --git a/synapse/rest/media/v1/base_resource.py b/synapse/rest/media/v1/base_resource.py index d44d5f1298..b10cbddb81 100644 --- a/synapse/rest/media/v1/base_resource.py +++ b/synapse/rest/media/v1/base_resource.py @@ -54,7 +54,7 @@ class BaseMediaResource(Resource): try: yield request_handler(self, request) except CodeMessageException as e: - logger.exception(e) + logger.info("Responding with error: %r", e) respond_with_json( request, e.code, cs_exception(e), send_cors=True ) |