[test:socks] Fix compatibility with websockets>=17 (#17433)

Closes #17383
Authored by: doe1080
This commit is contained in:
doe1080
2026-08-15 20:34:51 +00:00
committed by GitHub
parent 3128f6a433
commit 3f78dc4797
+8 -1
View File
@@ -213,8 +213,13 @@ class SocksHTTPTestRequestHandler(http.server.BaseHTTPRequestHandler, SocksTestR
class SocksWebSocketTestRequestHandler(SocksTestRequestHandler): class SocksWebSocketTestRequestHandler(SocksTestRequestHandler):
def handle(self): def handle(self):
import websockets.sync.server import websockets.sync.server
import websockets.version
protocol = websockets.ServerProtocol() protocol = websockets.ServerProtocol()
connection = websockets.sync.server.ServerConnection(socket=self.request, protocol=protocol, close_timeout=0) connection_args = [self.request, protocol]
if int(websockets.version.version.partition('.')[0]) >= 17:
connection_args.append(self.server)
connection = websockets.sync.server.ServerConnection(*connection_args, close_timeout=0)
connection.handshake() connection.handshake()
for message in connection: for message in connection:
if message == 'socks_info': if message == 'socks_info':
@@ -230,6 +235,7 @@ def socks_server(socks_server_class, request_handler, bind_ip=None, **socks_serv
server_type = ThreadingTCPServer if '.' in bind_address else IPv6ThreadingTCPServer server_type = ThreadingTCPServer if '.' in bind_address else IPv6ThreadingTCPServer
server = server_type( server = server_type(
(bind_address, 0), functools.partial(socks_server_class, request_handler, socks_server_kwargs)) (bind_address, 0), functools.partial(socks_server_class, request_handler, socks_server_kwargs))
server.socket_closed = threading.Event()
server_port = http_server_port(server) server_port = http_server_port(server)
server_thread = threading.Thread(target=server.serve_forever) server_thread = threading.Thread(target=server.serve_forever)
server_thread.daemon = True server_thread.daemon = True
@@ -240,6 +246,7 @@ def socks_server(socks_server_class, request_handler, bind_ip=None, **socks_serv
yield f'{bind_address}:{server_port}' yield f'{bind_address}:{server_port}'
finally: finally:
server.shutdown() server.shutdown()
server.socket_closed.set()
server.server_close() server.server_close()
server_thread.join(2.0) server_thread.join(2.0)