File tree Expand file tree Collapse file tree 1 file changed +24
-6
lines changed
py/selenium/webdriver/common Expand file tree Collapse file tree 1 file changed +24
-6
lines changed Original file line number Diff line number Diff line change 2727
2828
2929def free_port () -> int :
30- """Determines a free port using sockets."""
31- free_socket = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
32- free_socket .bind (("127.0.0.1" , 0 ))
33- free_socket .listen (5 )
34- port : int = free_socket .getsockname ()[1 ]
35- free_socket .close ()
30+ """Determines a free port using sockets.
31+
32+ First try IPv4, but use IPv6 if it can't bind (IPv6-only system).
33+ """
34+ free_socket = None
35+ try :
36+ # IPv4
37+ free_socket = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
38+ free_socket .bind (("127.0.0.1" , 0 ))
39+ except OSError :
40+ if free_socket :
41+ free_socket .close ()
42+ # IPv6
43+ try :
44+ free_socket = socket .socket (socket .AF_INET6 , socket .SOCK_STREAM )
45+ free_socket .bind (("::1" , 0 ))
46+ except OSError :
47+ raise RuntimeError ("Can't find free port (Unable to bind to IPv4 or IPv6)" )
48+ try :
49+ port : int = free_socket .getsockname ()[1 ]
50+ except Exception as e :
51+ raise RuntimeError (f"Can't find free port: ({ e } )" )
52+ finally :
53+ free_socket .close ()
3654 return port
3755
3856
You can’t perform that action at this time.
0 commit comments