Correct mDNS TCP/UDP socket flags
* Explicitly mark TCP and UDP as blocking sockets * Added socket.SO_REUSEADDR to UDP socket * Added socket.SO_REUSEPORT to TCP+UDP sockets * Moved socket creation to inside the worker thread's start() method. * Added a socket.close() to the stop() method. * Enable eventlet patching of the "os" module, required to avoid symptoms which look near identical to [1]. [1]: https://github.com/eventlet/eventlet/issues/210 Closes-Bug: 1444384 Change-Id: Iff642673a33d7b8d2e2c1af833f944330001c33b
This commit is contained in:
@@ -247,7 +247,9 @@ def bind_tcp(host, port, tcp_backlog):
|
||||
{'host': host, 'port': port})
|
||||
sock_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock_tcp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
sock_tcp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
|
||||
sock_tcp.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
|
||||
sock_tcp.setblocking(True)
|
||||
sock_tcp.bind((host, port))
|
||||
sock_tcp.listen(tcp_backlog)
|
||||
|
||||
@@ -259,6 +261,9 @@ def bind_udp(host, port):
|
||||
LOG.info(_LI('Opening UDP Listening Socket on %(host)s:%(port)d') %
|
||||
{'host': host, 'port': port})
|
||||
sock_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
sock_udp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
sock_udp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
|
||||
sock_udp.setblocking(True)
|
||||
sock_udp.bind((host, port))
|
||||
|
||||
return sock_udp
|
||||
|
||||
Reference in New Issue
Block a user