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
|
# HACK to get unique tx id
|
||||||
self._next_txn_id = int(self._clock.time_msec())
|
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
|
@defer.inlineCallbacks
|
||||||
@log_function
|
@log_function
|
||||||
def enqueue_pdu(self, pdu, destinations, order):
|
def enqueue_pdu(self, pdu, destinations, order):
|
||||||
|
@ -74,8 +94,9 @@ class TransactionQueue(object):
|
||||||
# table and we'll get back to it later.
|
# table and we'll get back to it later.
|
||||||
|
|
||||||
destinations = set(destinations)
|
destinations = set(destinations)
|
||||||
destinations.discard(self.server_name)
|
destinations = set(
|
||||||
destinations.discard("localhost")
|
dest for dest in destinations if self.can_send_to(dest)
|
||||||
|
)
|
||||||
|
|
||||||
logger.debug("Sending to: %s", str(destinations))
|
logger.debug("Sending to: %s", str(destinations))
|
||||||
|
|
||||||
|
@ -110,7 +131,7 @@ class TransactionQueue(object):
|
||||||
def enqueue_edu(self, edu):
|
def enqueue_edu(self, edu):
|
||||||
destination = edu.destination
|
destination = edu.destination
|
||||||
|
|
||||||
if destination == self.server_name or destination == "localhost":
|
if not self.can_send_to(destination):
|
||||||
return
|
return
|
||||||
|
|
||||||
deferred = defer.Deferred()
|
deferred = defer.Deferred()
|
||||||
|
@ -139,6 +160,9 @@ class TransactionQueue(object):
|
||||||
|
|
||||||
deferred = defer.Deferred()
|
deferred = defer.Deferred()
|
||||||
|
|
||||||
|
if not self.can_send_to(destination):
|
||||||
|
return
|
||||||
|
|
||||||
self.pending_failures_by_dest.setdefault(
|
self.pending_failures_by_dest.setdefault(
|
||||||
destination, []
|
destination, []
|
||||||
).append(
|
).append(
|
||||||
|
|
|
@ -24,6 +24,11 @@ def github_link(project, version, egg):
|
||||||
return "https://github.com/%s/tarball/%s/#egg=%s" % (project, version, egg)
|
return "https://github.com/%s/tarball/%s/#egg=%s" % (project, version, egg)
|
||||||
|
|
||||||
DEPENDENCY_LINKS = [
|
DEPENDENCY_LINKS = [
|
||||||
|
github_link(
|
||||||
|
project="pyca/pynacl",
|
||||||
|
version="d4d3175589b892f6ea7c22f466e0e223853516fa",
|
||||||
|
egg="pynacl-0.3.0",
|
||||||
|
),
|
||||||
github_link(
|
github_link(
|
||||||
project="matrix-org/syutil",
|
project="matrix-org/syutil",
|
||||||
version="v0.0.3",
|
version="v0.0.3",
|
||||||
|
@ -34,11 +39,6 @@ DEPENDENCY_LINKS = [
|
||||||
version="v0.6.2",
|
version="v0.6.2",
|
||||||
egg="matrix_angular_sdk-0.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:
|
try:
|
||||||
yield request_handler(self, request)
|
yield request_handler(self, request)
|
||||||
except CodeMessageException as e:
|
except CodeMessageException as e:
|
||||||
logger.exception(e)
|
logger.info("Responding with error: %r", e)
|
||||||
respond_with_json(
|
respond_with_json(
|
||||||
request, e.code, cs_exception(e), send_cors=True
|
request, e.code, cs_exception(e), send_cors=True
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue