Skip to content

Refactor response handling for non-POST requests - #153

Merged
MDA2AV merged 1 commit into
mainfrom
MDA2AV-uwebsockets-patch
Aug 16, 2026
Merged

Refactor response handling for non-POST requests#153
MDA2AV merged 1 commit into
mainfrom
MDA2AV-uwebsockets-patch

Conversation

@MDA2AV

@MDA2AVMDA2AV commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Change response handling for non-POST requests to differentiate between HEAD and other methods.

mention

Change response handling for non-POST requests to differentiate between HEAD and other methods.
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Http11Probe — Compliance Comparison

ServerScore
uWebSockets145/159██████████████████░░ 91%

✅ Baseline Passed

Compliance

TestExpecteduWebSockets
BASELINE2xx200
BARE-LF-REQUEST-LINE400 or close (pass), 2xx (warn)400
BARE-LF-HEADER400 or close (pass), 2xx (warn)400
OBS-FOLD400400
SP-BEFORE-COLON400400
MULTI-SP-REQUEST-LINE400 or 2xx; close/timeout = warn400
MISSING-HOST400400
INVALID-VERSION400/505, close, or timeout = warn400
EMPTY-HEADER-NAME400 or close400
CR-ONLY-LINE-ENDING400, close, or timeout = warn400
MISSING-TARGET400, close, or timeout = warn400
FRAGMENT-IN-TARGET400 or 2xx; 404 = warn⚠️200
HTTP09-REQUEST400/close/timeout400
INVALID-HEADER-NAME400 or close400
HEADER-NO-COLON400 or close400
DUPLICATE-HOST400400
CL-NON-NUMERIC400 or close400
CL-PLUS-SIGN400 or close400
WHITESPACE-BEFORE-HEADERS400 or close400
DUPLICATE-HOST-SAME400400
HOST-WITH-USERINFO400 or close200
HOST-WITH-PATH400 or close200
ASTERISK-WITH-GET400, close, or timeout = warn400
OPTIONS-STAR2xx or 405; close/timeout = warn400
UNKNOWN-TE-501400/501 or close400
LEADING-CRLF400 or 2xx; close/timeout = warn⚠️TimedOut
ABSOLUTE-FORM2xx preferred; 400/close/timeout = warn⚠️400
METHOD-CASE400/405/501 or 2xx; close/timeout = warn⚠️200
POST-CL-BODY2xx + echo200
POST-CL-ZERO2xx or close200
POST-NO-CL-NO-TE2xx or close200
POST-CL-UNDERSEND400/close/timeoutTimedOut
CHUNKED-BODY2xx + echo200
CHUNKED-MULTI2xx + echo200
CHUNKED-EMPTY2xx or close200
CHUNKED-NO-FINAL400/close/timeoutTimedOut
METHOD-CONNECT400/405/501 or close400
EXPECT-UNKNOWN417 or 2xx⚠️200
GET-WITH-CL-BODY400 or 2xx⚠️200
CHUNKED-EXTENSION2xx preferred; 400 warns⚠️400
METHOD-TRACE405/501 or 2xx⚠️200
HOST-EMPTY-VALUE400 or close400
REQUEST-LINE-TAB400 or 2xx; close/timeout = warn400
VERSION-MISSING-MINOR400, close, or timeout = warn400
VERSION-LEADING-ZEROS400, close, or timeout = warn400
VERSION-WHITESPACE400, close, or timeout = warn400
CONNECTION-CLOSE2xx + close200
HTTP10-DEFAULT-CLOSE2xx + close400
HTTP10-NO-HOST200 or 400400
HTTP12-VERSION200 or 505400
TRACE-WITH-BODY400/405 or 200⚠️200
CHUNKED-TRAILER-VALID2xx + echo400
CHUNKED-HEX-UPPERCASE2xx + echo200
RANGE-POST2xx (Range ignored)200
HEAD-NO-BODY2xx with no body200
UNKNOWN-METHOD501/405/400 or close⚠️200
DATE-HEADER2xx with Date header200
DATE-FORMATIMF-fixdate format200
NO-1XX-HTTP10non-1xx response400
OPTIONS-ALLOW2xx with Allow header, or 405⚠️200
CONTENT-TYPE2xx with Content-Type200
VERSION-CASE400, close, or timeout = warn400
LONG-URL-OKnot 414; close/timeout = warn400
SPACE-IN-TARGET400, close, or timeout = warn400
DUPLICATE-CT400 or 2xx⚠️200
TRACE-SENSITIVE405/501, or 200 without Auth200
RANGE-INVALID200 or 416200
ACCEPT-NONSENSE406 or 2xx⚠️200
POST-UNSUPPORTED-CT415 or 2xx200

Smuggling

TestExpecteduWebSockets
CL-TE-BOTH400 or 2xx400
DUPLICATE-CL400 or close200
CL-LEADING-ZEROS400 or 2xx⚠️200
TE-XCHUNKED400/501 or close400
TE-TRAILING-SPACE400/501 or 2xx+close400
TE-SP-BEFORE-COLON400 or close400
CL-NEGATIVE400 or close400
CLTE-PIPELINE400 or close preferred; 2xx acceptable400
TECL-PIPELINE400 or close preferred; 2xx acceptable400
CL-TRAILING-SPACE400 or 2xx⚠️200
TE-DOUBLE-CHUNKED400 or 2xx400
CL-EXTRA-LEADING-SP400 or 2xx⚠️200
TE-CASE-MISMATCH400 or 2xx400
CL-COMMA-DIFFERENT400 or close400
TE-NOT-FINAL-CHUNKED400 or close400
TE-HTTP10400 or close400
CHUNK-BARE-SEMICOLON400 or closeTimedOut
CHUNK-EXT-INVALID-TOKEN400 or close400
BARE-CR-HEADER-VALUE400 or closeTimedOut
CL-OCTAL400 or close400
CHUNK-UNDERSCORE400 or close400
TE-EMPTY-VALUE400 or close400
TE-LEADING-COMMA400 or 2xx400
TE-DUPLICATE-HEADERS400 or close400
CHUNK-HEX-PREFIX400 or close400
CHUNK-SIZE-PLUS400 or close400
CHUNK-SIZE-TRAILING-OWS400 or close200
CL-HEX-PREFIX400 or close400
CL-INTERNAL-SPACE400 or close400
CHUNK-LEADING-SP400 or close200
CHUNK-MISSING-TRAILING-CRLF400 or close200
CHUNK-EXT-LF400 or 2xxTimedOut
CHUNK-SPILL400 or close400
CHUNK-LF-TERM400 or 2xx⚠️200
CHUNK-EXT-CTRL400 or closeTimedOut
CHUNK-EXT-CR400 or closeTimedOut
TE-VTAB400 or close400
TE-FORMFEED400 or close400
TE-NULL400 or close400
CHUNK-LF-TRAILER400 or 2xx⚠️200
TE-IDENTITY400/501 or close400
CHUNK-NEGATIVE400 or close400
TRANSFER_ENCODING400 or 2xx⚠️200
CL-COMMA-SAME400 or 2xx400
CL-COMMA-TRIPLE400 or 2xx400
CHUNKED-WITH-PARAMS400 or 2xx400
EXPECT-100-CL100, 400 or 2xx⚠️100
TRAILER-CL400 or 2xx400
TRAILER-TE400 or 2xx400
TRAILER-HOST400 or 2xx400
TRAILER-AUTH400 or 2xx400
HEAD-CL-BODY400 or 2xx⚠️200
OPTIONS-CL-BODY400/405 or 2xx⚠️200
CL-UNDERSCORE400 or close400
CL-NEGATIVE-ZERO400 or close400
CL-DOUBLE-ZERO400 or 2xx⚠️200
CL-LEADING-ZEROS-OCTAL400 or 2xx⚠️200
TE-OBS-FOLD400 or 2xx+close400
TE-TRAILING-COMMA400 or 2xx400
TE-TAB-BEFORE-VALUE400 or 2xx400
ABSOLUTE-URI-HOST-MISMATCH400 or 2xx400
MULTIPLE-HOST-COMMA400 or close200
CHUNK-BARE-CR-TERM400 or closeTimedOut
TRAILER-CONTENT-TYPE400 or 2xx400
CLTE-CONN-CLOSE400, or 2xx + close400
TECL-CONN-CLOSE400, or 2xx + close400
CLTE-DESYNC400, or close400
CLTE-SMUGGLED-GET400, or close (no extra response)400
CLTE-SMUGGLED-GET-CL-PLUS400, or close (no extra response)400
CLTE-SMUGGLED-GET-CL-NON-NUMERIC400, or close (no extra response)400
CLTE-SMUGGLED-GET-TE-OBS-FOLD400, or close (no extra response)400
CLTE-SMUGGLED-HEAD400, or close (no extra response)400
CLTE-SMUGGLED-GET-TE-TRAILING-SPACE400, or close (no extra response)400
CLTE-SMUGGLED-GET-TE-LEADING-COMMA400, or close (no extra response)400
CLTE-SMUGGLED-GET-TE-CASE-MISMATCH400, or close (no extra response)400
TE-DUPLICATE-HEADERS-SMUGGLED-GET400, or close (no extra response)400
TECL-SMUGGLED-GET400, or close (no extra response)400
DUPLICATE-CL-SMUGGLED-GET400, or close (no extra response)200
GET-CL-PREFIX-DESYNC400/close preferred; extra response on step 2 = warn⚠️200
TECL-DESYNC400, or close400
CL0-BODY-POISON400/close preferred; poisoned follow-up = warn⚠️200
GET-CL-BODY-DESYNC400/close/pass-through; poisoned follow-up = warn200
OPTIONS-CL-BODY-DESYNC400/close/pass-through; poisoned follow-up = warn200
EXPECT-100-CL-DESYNC417/400/close preferred; poisoned follow-up = warn⚠️200
OPTIONS-TE-OBS-FOLD400, or 2xx + close400
CHUNK-INVALID-SIZE-DESYNC400, or close400
PIPELINE-SAFE2xx + 2xx200

Malformed Input

TestExpecteduWebSockets
BINARY-GARBAGE400/close/timeout400
LONG-URL400/414/431 or close400
LONG-HEADER-VALUE400/431 or close400
MANY-HEADERS400/431 or close400
NUL-IN-URL400 or close400
CONTROL-CHARS-HEADER400 or close400
INCOMPLETE-REQUEST400/close/timeoutTimedOut
EMPTY-REQUEST400/close/timeoutTimedOut
LONG-HEADER-NAME400/431 or close400
LONG-METHOD400 or close400
NON-ASCII-HEADER-NAME400 or close400
NON-ASCII-URL400 or close200
CL-OVERFLOW400 or close400
WHITESPACE-ONLY-LINE400/close/timeout400
NUL-IN-HEADER-VALUE400 or close400
CHUNK-SIZE-OVERFLOW400 or close400
H2-PREFACE400/505/close/timeout400
CL-EMPTY400 or close400
CL-TAB-BEFORE-VALUE400 or 2xx⚠️200
URL-BACKSLASH400 or 2xx/404⚠️200
URL-OVERLONG-UTF8400 or close200
URL-PERCENT-NULL400 or 2xx/404⚠️200
URL-PERCENT-CRLF400 or 2xx/404⚠️200
CHUNK-EXT-64K400 or 2xx400
RANGE-OVERLAPPING200/206/400/416⚠️200
POST-CL-HUGE-NO-BODY400/413/close/timeoutTimedOut

Header Normalization

TestExpecteduWebSockets
UNDERSCORE-CLReject/drop (pass), normalize (fail), preserve (warn)⚠️200
SP-BEFORE-COLON-CLReject/drop (pass), normalize (fail), preserve (warn)400
TAB-IN-NAMEReject/drop (pass), normalize (fail), preserve (warn)400
CASE-TEReject/drop (pass), normalize casing (fail), preserve (warn)400
UNDERSCORE-TEReject/drop (pass), normalize (fail), preserve (warn)⚠️200

Commit: f85c961

@MDA2AV
MDA2AV merged commit 432c7eb into mainAug 16, 2026
2 checks passed
Sign up for freeto 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

@MDA2AV