1919
2020@dataclass
2121class CheckServer :
22- port : int
22+ port : Optional [ int ]
2323 start_handle : Callable
2424 client : Optional [ssl .SSLContext ] = None
2525
@@ -349,7 +349,7 @@ async def start_private_server(
349349 server ,
350350 context ,
351351 client ,
352- domains
352+ domains ,
353353 )
354354 logger .tdebug ("web.debug.ssl_port" , port = server .sockets [0 ].getsockname ()[1 ])
355355
@@ -369,10 +369,10 @@ async def check_server():
369369 if site is not None :
370370 servers .append (CheckServer (site ._port , start_private_server ))
371371 if public_server is not None :
372- servers .append (CheckServer (public_server . sockets [ 0 ]. getsockname ()[ 1 ] , start_public_server ))
372+ servers .append (CheckServer (get_server_port ( public_server ) , start_public_server ))
373373 if privates :
374374 for server in privates .values ():
375- servers .append (CheckServer (server .server . sockets [ 0 ]. getsockname ()[ 1 ] , start_private_server , server .key ))
375+ servers .append (CheckServer (get_server_port ( server .server ) , start_private_server , server .key ))
376376
377377 #logger.tdebug("web.debug.check_server", servers=len(servers))
378378 results = await asyncio .gather (* [asyncio .create_task (_check_server (server )) for server in servers ])
@@ -382,10 +382,19 @@ async def check_server():
382382 await server .start_handle ()
383383 logger .twarning ("web.warning.server_down" , port = server .port )
384384
385+ def get_server_port (server : Optional [asyncio .Server ]):
386+ if server is None :
387+ return None
388+ if not server .sockets :
389+ return None
390+ return server .sockets [0 ].getsockname ()[1 ]
391+
385392
386393async def _check_server (
387394 server : CheckServer
388395):
396+ if server .port is None :
397+ return False
389398 try :
390399 r , w = await asyncio .wait_for (
391400 asyncio .open_connection (
0 commit comments