Merge pull request #278 from VioletEternity/windows-so_reuseaddr

Use SO_EXCLUSIVEADDRUSE instead of SO_REUSEADDR on Windows
This commit is contained in:
markqvist 2023-05-03 12:18:49 +02:00 committed by GitHub
commit 79abe93139
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 2 deletions

View File

@ -41,7 +41,13 @@ class HDLC():
return data return data
class ThreadingTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): class ThreadingTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
pass def server_bind(self):
if sys.platform == 'win32':
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1)
else:
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind(self.server_address)
self.server_address = self.socket.getsockname()
class LocalClientInterface(Interface): class LocalClientInterface(Interface):
RECONNECT_WAIT = 3 RECONNECT_WAIT = 3
@ -299,7 +305,6 @@ class LocalServerInterface(Interface):
address = (self.bind_ip, self.bind_port) address = (self.bind_ip, self.bind_port)
ThreadingTCPServer.allow_reuse_address = True
self.server = ThreadingTCPServer(address, handlerFactory(self.incoming_connection)) self.server = ThreadingTCPServer(address, handlerFactory(self.incoming_connection))
thread = threading.Thread(target=self.server.serve_forever) thread = threading.Thread(target=self.server.serve_forever)