mirror of
https://github.com/frappe/gunicorn.git
synced 2026-07-03 11:11:30 +08:00
refactor: extract _normalize_sockaddr utility function
Consolidate the repeated pattern for normalizing socket addresses to ASGI-compatible (host, port) tuples into a single utility function.
This commit is contained in:
parent
e780508f56
commit
026167acc9
@ -20,6 +20,16 @@ from gunicorn.http.errors import NoMoreData
|
||||
from gunicorn.uwsgi.errors import UWSGIParseException
|
||||
|
||||
|
||||
def _normalize_sockaddr(sockaddr):
|
||||
"""Normalize socket address to ASGI-compatible (host, port) tuple.
|
||||
|
||||
ASGI spec requires server/client to be (host, port) tuples.
|
||||
IPv6 sockets return 4-tuples (host, port, flowinfo, scope_id),
|
||||
so we extract just the first two elements.
|
||||
"""
|
||||
return tuple(sockaddr[:2]) if sockaddr else None
|
||||
|
||||
|
||||
class ASGIResponseInfo:
|
||||
"""Simple container for ASGI response info for access logging."""
|
||||
|
||||
@ -438,11 +448,8 @@ class ASGIProtocol(asyncio.Protocol):
|
||||
for name, value in request.headers:
|
||||
headers.append((name.lower().encode("latin-1"), value.encode("latin-1")))
|
||||
|
||||
# ASGI spec requires server/client to be (host, port) tuples
|
||||
# IPv6 sockname/peername can be 4-tuples (host, port, flowinfo, scope_id)
|
||||
# so we extract just the first two elements
|
||||
server = tuple(sockname[:2]) if sockname else None
|
||||
client = tuple(peername[:2]) if peername else None
|
||||
server = _normalize_sockaddr(sockname)
|
||||
client = _normalize_sockaddr(peername)
|
||||
|
||||
scope = {
|
||||
"type": "http",
|
||||
@ -506,9 +513,8 @@ class ASGIProtocol(asyncio.Protocol):
|
||||
subprotocols = [s.strip() for s in value.split(",")]
|
||||
break
|
||||
|
||||
# ASGI spec requires server/client to be (host, port) tuples
|
||||
server = tuple(sockname[:2]) if sockname else None
|
||||
client = tuple(peername[:2]) if peername else None
|
||||
server = _normalize_sockaddr(sockname)
|
||||
client = _normalize_sockaddr(peername)
|
||||
|
||||
scope = {
|
||||
"type": "websocket",
|
||||
@ -889,9 +895,8 @@ class ASGIProtocol(asyncio.Protocol):
|
||||
value.encode("latin-1")
|
||||
))
|
||||
|
||||
# ASGI spec requires server/client to be (host, port) tuples
|
||||
server = tuple(sockname[:2]) if sockname else None
|
||||
client = tuple(peername[:2]) if peername else None
|
||||
server = _normalize_sockaddr(sockname)
|
||||
client = _normalize_sockaddr(peername)
|
||||
|
||||
scope = {
|
||||
"type": "http",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user