Skip to content

Commit 89f87ab

Browse files
committed
[py] Allow free_port() to bind to IPv6 if IPv4 is unavailable
1 parent 7ace725 commit 89f87ab

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

py/selenium/webdriver/common/utils.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,17 @@
2727

2828

2929
def 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))
30+
"""Determines a free port using sockets.
31+
32+
First try IPv4, but use IPv6 if it doesn't exist (IPv6-only system).
33+
"""
34+
try:
35+
# IPv4
36+
free_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
37+
free_socket.bind(("127.0.0.1", 0))
38+
except OSError:
39+
free_socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
40+
free_socket.bind(("::1", 0))
3341
free_socket.listen(5)
3442
port: int = free_socket.getsockname()[1]
3543
free_socket.close()

0 commit comments

Comments
 (0)