Forge's adoption qualification of released 1.1.0 reproduced a realtime failure before WELCOME when upgrade header names arrive lowercase (ingress normalization): WsContext.header is case-sensitive, so the device was null and channels.put threw. Fix: resolve the device once on the authorized HTTP upgrade and carry it as a connection attribute (same approach as Forge's local patch). Regression test with lowercase header names covers WELCOME, inventory ACK, PRINTERS push and socket replacement; it fails on main with the same NPE. Full gate: 200 tests, 0 failures, 0 Checkstyle. Version 1.1.1; no contract change.
Forge's adoption qualification of released 1.1.0 reproduced a realtime failure before WELCOME when upgrade header names arrive lowercase (ingress normalization): WsContext.header is case-sensitive, so the device was null and channels.put threw. Fix: resolve the device once on the authorized HTTP upgrade and carry it as a connection attribute (same approach as Forge's local patch). Regression test with lowercase header names covers WELCOME, inventory ACK, PRINTERS push and socket replacement; it fails on main with the same NPE. Full gate: 200 tests, 0 failures, 0 Checkstyle. Version 1.1.1; no contract change.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The WebSocket callbacks read X-QQQ-Device-Id from the socket context, whose
header lookup is case-sensitive, while the HTTP upgrade matches names
case-insensitively. Behind an ingress that lowercases header names the device
resolved to null on connect and channels.put threw before WELCOME (Forge's
adoption test of released 1.1.0; Forge had carried a local patch on 1.0.0).
Resolve the device once after authorization on the upgrade and carry it as a
connection attribute for connect, message and close. The new
lowercaseUpgradeHeadersReachWelcomeAndFrames test fails on the previous code
with the same NullPointerException and passes here. No contract change.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Forge's adoption qualification of released 1.1.0 reproduced a realtime failure before WELCOME when upgrade header names arrive lowercase (ingress normalization): WsContext.header is case-sensitive, so the device was null and channels.put threw. Fix: resolve the device once on the authorized HTTP upgrade and carry it as a connection attribute (same approach as Forge's local patch). Regression test with lowercase header names covers WELCOME, inventory ACK, PRINTERS push and socket replacement; it fails on main with the same NPE. Full gate: 200 tests, 0 failures, 0 Checkstyle. Version 1.1.1; no contract change.
🤖 Generated with Claude Code