@@ -51,23 +51,25 @@ def socketpair(family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0):
5151 # We create a connected TCP socket. Note the trick with setblocking(0)
5252 # that prevents us from having to create a thread.
5353 lsock = socket .socket (family , type , proto )
54- lsock .bind ((host , 0 ))
55- lsock .listen (1 )
56- # On IPv6, ignore flow_info and scope_id
57- addr , port = lsock .getsockname ()[:2 ]
58- csock = socket .socket (family , type , proto )
59- csock .setblocking (False )
6054 try :
61- csock .connect ((addr , port ))
62- except (BlockingIOError , InterruptedError ):
63- pass
64- except Exception :
55+ lsock .bind ((host , 0 ))
56+ lsock .listen (1 )
57+ # On IPv6, ignore flow_info and scope_id
58+ addr , port = lsock .getsockname ()[:2 ]
59+ csock = socket .socket (family , type , proto )
60+ try :
61+ csock .setblocking (False )
62+ try :
63+ csock .connect ((addr , port ))
64+ except (BlockingIOError , InterruptedError ):
65+ pass
66+ ssock , _ = lsock .accept ()
67+ csock .setblocking (True )
68+ except :
69+ csock .close ()
70+ raise
71+ finally :
6572 lsock .close ()
66- csock .close ()
67- raise
68- ssock , _ = lsock .accept ()
69- csock .setblocking (True )
70- lsock .close ()
7173 return (ssock , csock )
7274
7375
0 commit comments