Browse Source

Fixup for #1689 and #1690

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
Johannes Löthberg 7 years ago
parent
commit
d3bd94805f
2 changed files with 13 additions and 8 deletions
  1. 7 4
      synapse/http/client.py
  2. 6 4
      synapse/http/endpoint.py

+ 7 - 4
synapse/http/client.py

@@ -25,7 +25,7 @@ from synapse.http.endpoint import SpiderEndpoint
 from canonicaljson import encode_canonical_json
 
 from twisted.internet import defer, reactor, ssl, protocol, task
-from twisted.internet.endpoints import SSL4ClientEndpoint, TCP4ClientEndpoint
+from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS
 from twisted.web.client import (
     BrowserLikeRedirectAgent, ContentDecoderAgent, GzipDecoder, Agent,
     readBody, PartialDownloadError,
@@ -386,13 +386,16 @@ class SpiderEndpointFactory(object):
 
     def endpointForURI(self, uri):
         logger.info("Getting endpoint for %s", uri.toBytes())
-        
+
         if uri.scheme == "http":
             endpoint_factory = HostnameEndpoint
         elif uri.scheme == "https":
             tlsCreator = self.policyForHTTPS.creatorForNetloc(uri.host, uri.port)
+
             def endpoint_factory(reactor, host, port, **kw):
-                return wrapClientTLS(tlsCreator, HostnameEndpoint(reactor, host, port, **kw)
+                return wrapClientTLS(
+                    tlsCreator,
+                    HostnameEndpoint(reactor, host, port, **kw))
         else:
             logger.warn("Can't get endpoint for unrecognised scheme %s", uri.scheme)
             return None
@@ -400,7 +403,7 @@ class SpiderEndpointFactory(object):
             reactor, uri.host, uri.port, self.blacklist, self.whitelist,
             endpoint=endpoint_factory, endpoint_kw_args=dict(timeout=15),
         )
-                                     
+
 
 
 class SpiderHttpClient(SimpleHttpClient):

+ 6 - 4
synapse/http/endpoint.py

@@ -61,8 +61,10 @@ def matrix_federation_endpoint(reactor, destination, ssl_context_factory=None,
         transport_endpoint = HostnameEndpoint
         default_port = 8008
     else:
-        def transport_endpoint(reactor, host, port):
-            return wrapClientTLS(ssl_context_factory, HostnameEndpoint(reactor, host, port))
+        def transport_endpoint(reactor, host, port, timeout):
+            return wrapClientTLS(
+                ssl_context_factory,
+                HostnameEndpoint(reactor, host, port, timeout=timeout))
         default_port = 8448
 
     if port is None:
@@ -80,7 +82,7 @@ class SpiderEndpoint(object):
     Implements twisted.internet.interfaces.IStreamClientEndpoint.
     """
     def __init__(self, reactor, host, port, blacklist, whitelist,
-                 endpoint=TCP4ClientEndpoint, endpoint_kw_args={}):
+                 endpoint=HostnameEndpoint, endpoint_kw_args={}):
         self.reactor = reactor
         self.host = host
         self.port = port
@@ -118,7 +120,7 @@ class SRVClientEndpoint(object):
     """
 
     def __init__(self, reactor, service, domain, protocol="tcp",
-                 default_port=None, endpoint=TCP4ClientEndpoint,
+                 default_port=None, endpoint=HostnameEndpoint,
                  endpoint_kw_args={}):
         self.reactor = reactor
         self.service_name = "_%s._%s.%s" % (service, protocol, domain)