From f6350940e6c2d3d7e96fb1fba4501b004909d709 Mon Sep 17 00:00:00 2001 From: InvalidInterrupt Date: Sat, 2 Sep 2023 18:30:04 -0700 Subject: [PATCH] Detect address family for fd endpoints By detecting the address family rather than assuming AF_INET, we allow unix domain sockets to be inherited properly. --- twisted/plugins/fd_endpoint.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/twisted/plugins/fd_endpoint.py b/twisted/plugins/fd_endpoint.py index 313a315..ddf3a45 100644 --- a/twisted/plugins/fd_endpoint.py +++ b/twisted/plugins/fd_endpoint.py @@ -1,3 +1,4 @@ +import os import socket from twisted.internet import endpoints @@ -10,8 +11,13 @@ from zope.interface import implementer class _FDParser: prefix = "fd" - def _parseServer(self, reactor, fileno, domain=socket.AF_INET): + def _parseServer(self, reactor, fileno, domain=None): fileno = int(fileno) + if domain: + domain = getattr(socket, f"AF_{domain}") + else: + with socket.socket(fileno=os.dup(fileno)) as sock: + domain = sock.family return endpoints.AdoptedStreamServerEndpoint(reactor, fileno, domain) def parseStreamServer(self, reactor, *args, **kwargs):