diff --git a/synapse/federation/replication.py b/synapse/federation/replication.py
index 96b82f00cb..5f96f79998 100644
--- a/synapse/federation/replication.py
+++ b/synapse/federation/replication.py
@@ -159,7 +159,8 @@ class ReplicationLayer(object):
return defer.succeed(None)
@log_function
- def make_query(self, destination, query_type, args):
+ def make_query(self, destination, query_type, args,
+ retry_on_dns_fail=True):
"""Sends a federation Query to a remote homeserver of the given type
and arguments.
@@ -174,7 +175,9 @@ class ReplicationLayer(object):
a Deferred which will eventually yield a JSON object from the
response
"""
- return self.transport_layer.make_query(destination, query_type, args)
+ return self.transport_layer.make_query(
+ destination, query_type, args, retry_on_dns_fail=retry_on_dns_fail
+ )
@defer.inlineCallbacks
@log_function
diff --git a/synapse/federation/transport.py b/synapse/federation/transport.py
index afc777ec9e..93296af204 100644
--- a/synapse/federation/transport.py
+++ b/synapse/federation/transport.py
@@ -193,13 +193,14 @@ class TransportLayer(object):
@defer.inlineCallbacks
@log_function
- def make_query(self, destination, query_type, args):
+ def make_query(self, destination, query_type, args, retry_on_dns_fail):
path = PREFIX + "/query/%s" % query_type
response = yield self.client.get_json(
destination=destination,
path=path,
- args=args
+ args=args,
+ retry_on_dns_fail=retry_on_dns_fail,
)
defer.returnValue(response)
diff --git a/synapse/handlers/directory.py b/synapse/handlers/directory.py
index cec7737e09..a56830d520 100644
--- a/synapse/handlers/directory.py
+++ b/synapse/handlers/directory.py
@@ -18,7 +18,6 @@ from twisted.internet import defer
from ._base import BaseHandler
from synapse.api.errors import SynapseError
-from synapse.http.client import MatrixHttpClient
from synapse.api.events.room import RoomAliasesEvent
import logging
@@ -98,8 +97,8 @@ class DirectoryHandler(BaseHandler):
query_type="directory",
args={
"room_alias": room_alias.to_string(),
- MatrixHttpClient.RETRY_DNS_LOOKUP_FAILURES: False
- }
+ },
+ retry_on_dns_fail=False,
)
if result and "room_id" in result and "servers" in result:
diff --git a/synapse/http/client.py b/synapse/http/client.py
index e02cce5642..57b49355f2 100644
--- a/synapse/http/client.py
+++ b/synapse/http/client.py
@@ -183,7 +183,7 @@ class MatrixHttpClient(BaseHttpClient):
defer.returnValue((response.code, body))
@defer.inlineCallbacks
- def get_json(self, destination, path, args={}):
+ def get_json(self, destination, path, args={}, retry_on_dns_fail=True):
""" Get's some json from the given host homeserver and path
Args:
@@ -203,13 +203,6 @@ class MatrixHttpClient(BaseHttpClient):
"""
logger.debug("get_json args: %s", args)
- retry_on_dns_fail = True
- if HttpClient.RETRY_DNS_LOOKUP_FAILURES in args:
- # FIXME: This isn't ideal, but the interface exposed in get_json
- # isn't comprehensive enough to give caller's any control over
- # their connection mechanics.
- retry_on_dns_fail = args.pop(HttpClient.RETRY_DNS_LOOKUP_FAILURES)
-
query_bytes = urllib.urlencode(args, True)
logger.debug("Query bytes: %s Retry DNS: %s", args, retry_on_dns_fail)
|