forked from MirrorHub/synapse
Merge branch 'develop' of github.com:matrix-org/synapse into release-v0.7.1
This commit is contained in:
commit
a7925259a1
3 changed files with 33 additions and 9 deletions
|
@ -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(
|
||||
|
|
|
@ -24,6 +24,11 @@ def github_link(project, version, egg):
|
|||
return "https://github.com/%s/tarball/%s/#egg=%s" % (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",
|
||||
|
@ -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",
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue