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
On a node:http server, IncomingMessage.headers is undefined in a Perry-compiled binary, although req.method and req.url are correct and req.rawHeaders is fully populated. This breaks every HTTP framework that reads req.headers (Hono/Express adapters, cookie/auth parsing, host resolution).
req.headers should be a lowercased-key object (Node semantics), e.g. { host: "127.0.0.1:3138", "user-agent": "curl/8.7.1", accept: "*/*", "x-test": "hi" }.
Workaround
Rebuild from req.rawHeaders (the flat [k,v,k,v,…] array), which is correct. But most third-party adapters read req.headers directly, so they break out of the box.
Environment
Perry 0.5.1039 (origin/main e824b66 + local fix for the unrelated querystring duplicate-fn build break), macOS arm64. node:http server via libperry_ext_http.
I'm taking this in a focused node:http IncomingMessage body/header semantics PR with #3272, #3273, and #3416. Scope: server request headers, request data chunk shape, and client response setEncoding decoded chunks.
Opened PR #3525 for this IncomingMessage cluster.\n\nVerification: focused http/incoming-message parity passes 2/2 (report test-parity/reports/parity_report_20260531_050116.json); broad http parity passes 9/10 with only the existing http/server/upgrade-websocket mismatch remaining (report test-parity/reports/parity_report_20260531_050245.json); affected cargo check and hygiene checks pass.
Activity
andrewtdiz commentedon May 31, 2026
I'm taking this in a focused node:http IncomingMessage body/header semantics PR with #3272, #3273, and #3416. Scope: server request headers, request data chunk shape, and client response setEncoding decoded chunks.
andrewtdiz commentedon May 31, 2026
Opened PR #3525 for this IncomingMessage cluster.\n\nVerification: focused
http/incoming-messageparity passes 2/2 (reporttest-parity/reports/parity_report_20260531_050116.json); broadhttpparity passes 9/10 with only the existinghttp/server/upgrade-websocketmismatch remaining (reporttest-parity/reports/parity_report_20260531_050245.json); affected cargo check and hygiene checks pass.