You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
perry-ext-http: https.createServer 'upgrade' listeners never fire #11159
upgrade.rs's fire_upgrade_listeners resolves the server only as get_handle_mut::<HttpServer>. The turnloop connection layer decides an upgrade has a listener through with_base_server, which accepts HttpsServer too. It hands the connection to perry-ext-net and queues the upgrade, and drain_upgrades runs for HTTPS handles as well. The final dispatch then returns early for an HttpsServer, so:
the listener never runs, and
the adopted socket (and the request handle) are never handed to user code.
This code predates #11144 (unchanged at b75e6a6eb). CodeRabbit found it while reviewing #11144.
Repro (Linux, perrymaster, Node 26.5.1). Perry built from #11144 head c1f36c25b. The certificate is the inline CN=localhost fixture from test-files/test_gap_turnloop_https_server.ts (elided here).
== node
server upgrade event: foo
client got: HTTP/1.1 101 Switching Protocols
== perry
client got: <nothing>
Fix direction: resolve the base server the way with_base_server does (HttpServer | HttpsServer) in fire_upgrade_listeners. When no listener runs, release the adopted socket.
Activity