Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit cd1579b

Browse files
committed
Add Unix socket support to the proxyagent
1 parent fdb07e8 commit cd1579b

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

synapse/http/proxyagent.py

+24-4
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@
2424
from zope.interface import implementer
2525

2626
from twisted.internet import defer
27-
from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS
27+
from twisted.internet.endpoints import (
28+
HostnameEndpoint,
29+
UNIXClientEndpoint,
30+
wrapClientTLS,
31+
)
2832
from twisted.internet.interfaces import (
2933
IProtocol,
3034
IProtocolFactory,
@@ -42,7 +46,11 @@
4246
from twisted.web.http_headers import Headers
4347
from twisted.web.iweb import IAgent, IBodyProducer, IPolicyForHTTPS, IResponse
4448

45-
from synapse.config.workers import InstanceLocationConfig, InstanceTcpLocationConfig
49+
from synapse.config.workers import (
50+
InstanceLocationConfig,
51+
InstanceTcpLocationConfig,
52+
InstanceUnixLocationConfig,
53+
)
4654
from synapse.http import redact_uri
4755
from synapse.http.connectproxyclient import HTTPConnectProxyEndpoint, ProxyCredentials
4856
from synapse.logging.context import run_in_background
@@ -142,8 +150,9 @@ def __init__(
142150

143151
self._federation_proxy_endpoint: Optional[IStreamClientEndpoint] = None
144152
if federation_proxies:
145-
endpoints = []
153+
endpoints: List[IStreamClientEndpoint] = []
146154
for federation_proxy in federation_proxies:
155+
endpoint: IStreamClientEndpoint
147156
if isinstance(federation_proxy, InstanceTcpLocationConfig):
148157
endpoint = HostnameEndpoint(
149158
self.proxy_reactor,
@@ -160,7 +169,18 @@ def __init__(
160169
)
161170
endpoint = wrapClientTLS(tls_connection_creator, endpoint)
162171

163-
endpoints.append(endpoint)
172+
elif isinstance(federation_proxy, InstanceUnixLocationConfig):
173+
endpoint = UNIXClientEndpoint(
174+
self.proxy_reactor, federation_proxy.path
175+
)
176+
177+
else:
178+
# It is supremely unlikely we ever hit this
179+
raise SchemeNotSupported(
180+
f"Unknown type of Endpoint requested, check {federation_proxy}"
181+
)
182+
183+
endpoints.append(endpoint)
164184

165185
self._federation_proxy_endpoint = _ProxyEndpoints(endpoints)
166186

0 commit comments

Comments
 (0)