diff --git a/radicale/server.py b/radicale/server.py index 29ba129..3b8e533 100644 --- a/radicale/server.py +++ b/radicale/server.py @@ -240,7 +240,9 @@ def serve(configuration, shutdown_socket): # IPV6_V6ONLY set e.errno == errno.EADDRNOTAVAIL or # Address family not supported - e.errno == errno.EAFNOSUPPORT)): + e.errno == errno.EAFNOSUPPORT or + # Protocol not supported + e.errno == errno.EPROTONOSUPPORT)): continue raise RuntimeError("Failed to start server %r: %s" % ( format_address(address), e)) from e diff --git a/radicale/tests/test_server.py b/radicale/tests/test_server.py index b1ccd5e..c2aea6b 100644 --- a/radicale/tests/test_server.py +++ b/radicale/tests/test_server.py @@ -132,8 +132,9 @@ class TestBaseServerRequests(BaseTest): socket.EAI_NONAME, server.COMPAT_EAI_ADDRFAMILY, server.COMPAT_EAI_NODATA) or str(exc_info.value) == "address family mismatched" or - exc_info.value.errno == errno.EADDRNOTAVAIL or - exc_info.value.errno == errno.EAFNOSUPPORT) + exc_info.value.errno in ( + errno.EADDRNOTAVAIL, errno.EAFNOSUPPORT, + errno.EPROTONOSUPPORT)) def test_ipv6(self): try: @@ -145,7 +146,8 @@ class TestBaseServerRequests(BaseTest): sock.bind(("::1", 0)) self.sockname = sock.getsockname()[:2] except OSError as e: - if e.errno in (errno.EADDRNOTAVAIL, errno.EAFNOSUPPORT): + if e.errno in (errno.EADDRNOTAVAIL, errno.EAFNOSUPPORT, + errno.EPROTONOSUPPORT): pytest.skip("IPv6 not supported") raise self.configuration.update({