Antoine Pitrou added the comment:
Better than trying to detect IPv6 compatibility beforehand would probably to
recognize the error and simply ignore it.
Note: errno 99 is EADDRNOTAVAIL.
Something like this could work (untested):
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index 33b8f48..413161a 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -1038,6 +1038,11 @@ class BaseEventLoop(events.AbstractEventLoop):
try:
sock.bind(sa)
except OSError as err:
+ if err.errno == errno.EADDRNOTAVAIL:
+ # See bpo-30945
+ sockets.pop()
+ sock.close()
+ continue
raise OSError(err.errno, 'error while attempting '
'to bind on address %r: %s'
% (sa, err.strerror.lower())) from None
----------
nosy: +pitrou
versions: +Python 3.7 -Python 3.4
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue30945>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com