@@ -383,16 +383,28 @@ def factory() -> ClientConnection:
383
383
if kwargs .pop ("unix" , False ):
384
384
_ , connection = await loop .create_unix_connection (factory , ** kwargs )
385
385
elif proxy is not None :
386
- kwargs ["sock" ] = await connect_proxy (
387
- parse_proxy (proxy ),
388
- ws_uri ,
389
- local_addr = kwargs .pop ("local_addr" , None ),
390
- )
391
- _ , connection = await loop .create_connection (factory , ** kwargs )
386
+ proxy_parsed = parse_proxy (proxy )
387
+ if proxy_parsed .scheme [:5 ] == "socks" :
388
+ # Connect to the server through the proxy.
389
+ sock = await connect_socks_proxy (
390
+ proxy_parsed ,
391
+ ws_uri ,
392
+ local_addr = kwargs .pop ("local_addr" , None ),
393
+ )
394
+ # Initialize WebSocket connection via the proxy.
395
+ _ , connection = await loop .create_connection (
396
+ factory ,
397
+ sock = sock ,
398
+ ** kwargs ,
399
+ )
400
+ else :
401
+ raise AssertionError ("unsupported proxy" )
392
402
else :
403
+ # Connect to the server directly.
393
404
if kwargs .get ("sock" ) is None :
394
405
kwargs .setdefault ("host" , ws_uri .host )
395
406
kwargs .setdefault ("port" , ws_uri .port )
407
+ # Initialize WebSocket connection.
396
408
_ , connection = await loop .create_connection (factory , ** kwargs )
397
409
return connection
398
410
@@ -643,16 +655,3 @@ async def connect_socks_proxy(
643
655
** kwargs : Any ,
644
656
) -> socket .socket :
645
657
raise ImportError ("python-socks is required to use a SOCKS proxy" )
646
-
647
-
648
- async def connect_proxy (
649
- proxy : Proxy ,
650
- ws_uri : WebSocketURI ,
651
- ** kwargs : Any ,
652
- ) -> socket .socket :
653
- """Connect via a proxy and return the socket."""
654
- # parse_proxy() validates proxy.scheme.
655
- if proxy .scheme [:5 ] == "socks" :
656
- return await connect_socks_proxy (proxy , ws_uri , ** kwargs )
657
- else :
658
- raise AssertionError ("unsupported proxy" )
0 commit comments