Make using proxy optional

This commit is contained in:
Erik Johnston 2018-11-27 15:33:56 +00:00 committed by Brendan Abolivier
parent c11388b1ce
commit 28c3a43a7e

View file

@ -18,6 +18,7 @@ import logging
import random
import sys
from io import BytesIO
import os
import opentracing
from opentracing.ext import tags
@ -58,6 +59,7 @@ outgoing_requests_counter = Counter("synapse_http_matrixfederationclient_request
incoming_responses_counter = Counter("synapse_http_matrixfederationclient_responses",
"", ["method", "code"])
USE_PROXY = "SYNAPSE_USE_PROXY" in os.environ
MAX_LONG_RETRIES = 10
MAX_SHORT_RETRIES = 3
@ -68,6 +70,18 @@ else:
MAXINT = sys.maxint
class ProxyMatrixFederationEndpointFactory(object):
def __init__(self, hs):
self.reactor = hs.get_reactor()
self.tls_client_options_factory = hs.tls_client_options_factory
def endpointForURI(self, uri):
return matrix_federation_endpoint(
self.reactor, "localhost:8888", timeout=10,
tls_client_options_factory=None
)
class MatrixFederationEndpointFactory(object):
def __init__(self, hs):
self.reactor = hs.get_reactor()
@ -77,8 +91,8 @@ class MatrixFederationEndpointFactory(object):
destination = uri.netloc.decode('ascii')
return matrix_federation_endpoint(
self.reactor, "localhost:8888", timeout=10,
tls_client_options_factory=None
self.reactor, destination, timeout=10,
tls_client_options_factory=self.tls_client_options_factory
)
@ -193,9 +207,15 @@ class MatrixFederationHttpClient(object):
pool.retryAutomatically = False
pool.maxPersistentPerHost = 5
pool.cachedConnectionTimeout = 2 * 60
self.agent = Agent.usingEndpointFactory(
reactor, MatrixFederationEndpointFactory(hs), pool=pool
)
if USE_PROXY:
self.agent = Agent.usingEndpointFactory(
reactor, ProxyMatrixFederationEndpointFactory(hs), pool=pool
)
else:
self.agent = Agent.usingEndpointFactory(
reactor, MatrixFederationEndpointFactory(hs), pool=pool
)
self.clock = hs.get_clock()
self._store = hs.get_datastore()
self.version_string_bytes = hs.version_string.encode('ascii')