Skip to content

Close the listener when TLS server startup fails - #1223

Open
zhechen-cs wants to merge 1 commit into
prometheus:masterfrom
zhechen-cs:codex/tls-startup-cleanup
Open

zhechen-cs wants to merge 1 commit into
prometheus:masterfrom
zhechen-cs:codex/tls-startup-cleanup

Conversation

@zhechen-cs

Copy link
Copy Markdown

start_wsgi_server() binds its listening socket before loading the TLS configuration. If certificate loading or socket wrapping raises, the server is never returned to the caller and the listener stays open while the exception traceback is retained. Retrying startup on the same port then fails with an address-in-use error.

Close the server before re-raising TLS setup errors. The regression tests use real listening sockets and cover missing server certificates, missing client CA files, and a TLS context that cannot wrap a server socket. They retain the traceback and verify that the socket is closed and its port can be rebound. Existing successful HTTP, HTTPS and mutual TLS tests still pass.

Validation: all three new cases fail on the unmodified base; after the fix, 431 tests pass and 14 are skipped. The configured flake8, isort and mypy checks pass. Local HTTP tests used NO_PROXY=localhost,127.0.0.1,::1 to bypass the local proxy.

@csmarchbanks

Signed-off-by: Zhe Chen <zhechen.cs@connect.hku.hk>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant