Skip to content

Commit a796e1d

Browse files
authored
Corrected --proxy-headers client ip/host when using a unix socket (#636)
* Added AF_UNIX type socket to get client filled * Removed travis debug * Added travis verbose pytest for windows fail check * Added travis verbose pytest for windows fail check * No more tests output in travis now it's fixed on windows * Useing a top level constant * Lint
1 parent 895807f commit a796e1d

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

uvicorn/protocols/utils.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import socket
22
import urllib
33

4+
if hasattr(socket, "AF_UNIX"):
5+
SUPPORTED_SOCKET_FAMILIES = (socket.AF_INET, socket.AF_INET6, socket.AF_UNIX)
6+
else:
7+
SUPPORTED_SOCKET_FAMILIES = (socket.AF_INET, socket.AF_INET6)
8+
49

510
def get_remote_addr(transport):
611
socket_info = transport.get_extra_info("socket")
@@ -15,8 +20,9 @@ def get_remote_addr(transport):
1520
else:
1621
family = socket_info.family
1722

18-
if family in (socket.AF_INET, socket.AF_INET6):
23+
if family in SUPPORTED_SOCKET_FAMILIES:
1924
return (str(info[0]), int(info[1]))
25+
2026
return None
2127
info = transport.get_extra_info("peername")
2228
if info is not None and isinstance(info, (list, tuple)) and len(info) == 2:
@@ -29,7 +35,7 @@ def get_local_addr(transport):
2935
if socket_info is not None:
3036
info = socket_info.getsockname()
3137
family = socket_info.family
32-
if family in (socket.AF_INET, socket.AF_INET6):
38+
if family in SUPPORTED_SOCKET_FAMILIES:
3339
return (str(info[0]), int(info[1]))
3440
return None
3541
info = transport.get_extra_info("sockname")

0 commit comments

Comments
 (0)