Skip to content

Commit ff22e93

Browse files
committed
fix: 修复 web 代理服务器的 sockets 空的情况下无法获取 port
1 parent 775d109 commit ff22e93

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

core/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ def rank_clusters_url(self):
170170

171171
const = Const()
172172

173-
VERSION = "3.3.4"
173+
VERSION = "3.3.5"
174174
API_VERSION = "1.13.1"
175175
USER_AGENT = f"openbmclapi/{API_VERSION} python-openbmclapi/{VERSION}"
176176
PYTHON_VERSION = ".".join(map(str, (sys.version_info.major, sys.version_info.minor, sys.version_info.micro)))

core/web.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
@dataclass
2121
class 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

386393
async 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

Comments
 (0)