diff --git a/docs/versionhistory.rst b/docs/versionhistory.rst index be84fb781..2f9b724da 100644 --- a/docs/versionhistory.rst +++ b/docs/versionhistory.rst @@ -9,6 +9,10 @@ This library adheres to `Semantic Versioning 2.0 `_. across backends (asyncio returned immediately; Trio raised ``ValueError``) by raising ``ValueError`` on all backends (`#1306 `_; PR by @BetterAndBetterII) +- Fixed ``create_tcp_listener()`` occasionally failing with a message like + ``Could not create 2 listeners with a consistent port`` when an ephemeral port is + requested and IPv6 is enabled and the dual-stack path is not available or a specific + local host name was given **4.15.1** diff --git a/src/anyio/_core/_sockets.py b/src/anyio/_core/_sockets.py index 14ee6e41e..df670360b 100644 --- a/src/anyio/_core/_sockets.py +++ b/src/anyio/_core/_sockets.py @@ -393,7 +393,7 @@ def setup_raw_socket( errors: list[OSError] = [] try: - for _ in range(len(sockaddrs)): + for _ in range(10): # enough to absorb ephemeral port collisions listeners: list[SocketListener] = [] bound_ephemeral_port = local_port try: