Просмотр исходного кода

Fix integrated server on android

Unrud 5 лет назад
Родитель
Сommit
8ca01a4989
3 измененных файлов с 11 добавлено и 4 удалено
  1. 7 1
      radicale/server.py
  2. 3 2
      radicale/tests/test_server.py
  3. 1 1
      setup.cfg

+ 7 - 1
radicale/server.py

@@ -40,6 +40,11 @@ if hasattr(socket, "EAI_ADDRFAMILY"):
 elif hasattr(socket, "EAI_NONAME"):
     # Windows and BSD don't have a special error code for this
     COMPAT_EAI_ADDRFAMILY = socket.EAI_NONAME
+if hasattr(socket, "EAI_NODATA"):
+    COMPAT_EAI_NODATA = socket.EAI_NODATA
+elif hasattr(socket, "EAI_NONAME"):
+    # Windows and BSD don't have a special error code for this
+    COMPAT_EAI_NODATA = socket.EAI_NONAME
 if hasattr(socket, "IPPROTO_IPV6"):
     COMPAT_IPPROTO_IPV6 = socket.IPPROTO_IPV6
 elif os.name == "nt":
@@ -226,7 +231,8 @@ def serve(configuration, shutdown_socket):
                                 # macOS: IPv6 address for INET address family
                                 e.errno == socket.EAI_NONAME or
                                 # Address not for address family
-                                e.errno == COMPAT_EAI_ADDRFAMILY) or
+                                e.errno == COMPAT_EAI_ADDRFAMILY or
+                                e.errno == COMPAT_EAI_NODATA) or
                             # Workaround for PyPy
                             str(e) == "address family mismatched" or
                             # Address family not available (e.g. IPv6 disabled)

+ 3 - 2
radicale/tests/test_server.py

@@ -128,8 +128,9 @@ class TestBaseServerRequests(BaseTest):
                     sock.bind((address, 0))
             # See ``radicale.server.serve``
             assert (isinstance(exc_info.value, socket.gaierror) and
-                    exc_info.value.errno in (socket.EAI_NONAME,
-                                             server.COMPAT_EAI_ADDRFAMILY) or
+                    exc_info.value.errno in (
+                        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)
 

+ 1 - 1
setup.cfg

@@ -10,7 +10,7 @@ norecursedirs = dist .cache .git build Radicale.egg-info .eggs venv
 
 [tool:isort]
 known_standard_library = posixpath
-known_third_party = gunicorn,passlib,pkg_resources,pytest,pytest_cov,vobject
+known_third_party = defusedxml,passlib,pkg_resources,pytest,vobject
 
 [coverage:run]
 branch = True