2
0
mirror of https://github.com/xcat2/confluent.git synced 2026-02-14 19:59:00 +00:00

Fix async bind handling

This commit is contained in:
Jarrod Johnson
2026-02-04 09:51:10 -05:00
parent cdc668d717
commit d5c85cdff9

View File

@@ -1171,12 +1171,27 @@ async def serve(bind_host, bind_port):
sock = None
while not sock:
try:
#TODO:asyncmerge: unix domain socket as path
sock = socket.socket(socket.AF_INET6)
bind_arg = None
if '/' in bind_host:
try:
os.remove(bind_host)
except OSError:
pass
sock = socket.socket(socket.AF_UNIX)
os.chmod(bind_host, 0o660)
bind_arg = bind_host
else:
bindinfo = socket.getaddrinfo(
bind_host, bind_port, 0, socket.SOCK_STREAM)
if bindinfo[0][0] == socket.AF_INET:
sock = socket.socket(socket.AF_INET)
elif bindinfo[0][0] == socket.AF_INET6:
sock = socket.socket(socket.AF_INET6)
bind_arg = bindinfo[0][4]
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
sock.settimeout(0)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
sock.bind((bind_host, bind_port, 0, 0))
sock.bind(bind_arg)
sock.listen(128)
except socket.error as e:
if e.errno != 98: