diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-09-18 17:01:12 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-09-18 17:01:12 +0100 |
commit | b3097396e7cf8d29255b4855e9bf06c6b98a549e (patch) | |
tree | 0f13dc85b2869ef7fafcaabd85065dd48b62c712 /synapse/http | |
parent | Merge pull request #3879 from matrix-org/matthew/fix-autojoin (diff) | |
download | synapse-b3097396e7cf8d29255b4855e9bf06c6b98a549e.tar.xz |
Set SNI to the server_name, not whatever was in the SRV record
Fixes #3843
Diffstat (limited to 'synapse/http')
-rw-r--r-- | synapse/http/endpoint.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/synapse/http/endpoint.py b/synapse/http/endpoint.py index b0c9369519..91025037a3 100644 --- a/synapse/http/endpoint.py +++ b/synapse/http/endpoint.py @@ -108,7 +108,7 @@ def matrix_federation_endpoint(reactor, destination, tls_client_options_factory= Args: reactor: Twisted reactor. - destination (bytes): The name of the server to connect to. + destination (unicode): The name of the server to connect to. tls_client_options_factory (synapse.crypto.context_factory.ClientTLSOptionsFactory): Factory which generates TLS options for client connections. @@ -126,10 +126,17 @@ def matrix_federation_endpoint(reactor, destination, tls_client_options_factory= transport_endpoint = HostnameEndpoint default_port = 8008 else: + # the SNI string should be the same as the Host header, minus the port. + # as per https://github.com/matrix-org/synapse/issues/2525#issuecomment-336896777, + # the Host header and SNI should therefore be the server_name of the remote + # server. + tls_options = tls_client_options_factory.get_options(domain) + def transport_endpoint(reactor, host, port, timeout): return wrapClientTLS( - tls_client_options_factory.get_options(host), - HostnameEndpoint(reactor, host, port, timeout=timeout)) + tls_options, + HostnameEndpoint(reactor, host, port, timeout=timeout), + ) default_port = 8448 if port is None: |