| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Motivation: `encodeInitHttpMessage()` updated the encoder state before running header sanitization and encoding. If either step threw, the allocated buffer was released but the encoder remained in a content state even though no output had been produced. A subsequent valid response was then rejected with `unexpected message type`. This can be reproduced without a fatal error by encoding a `204 No Content` response backed by `ReadOnlyHttpHeaders`. Sanitization fails with `UnsupportedOperationException`, and the next response fails because the encoder is still in state 3. #17089 made the header buffer exception-safe, but its regression test ended the channel immediately after the failure and did not exercise another response. Modification: - Compute the next content state in a local variable. - Commit it to the encoder only after header sanitization and encoding complete successfully. - Add a regression test for a sanitization failure and extend the existing header encoding failure test to verify that a valid response can still be encoded afterward. Result: An initial-message header failure no longer leaves the encoder unusable. Successful encoding and wire output are unchanged. Verification: `./mvnw -pl codec-http test` 8,982 tests run, 0 failures, 0 errors, 4 skipped. (cherry picked from commit dd7c9dc)
✅ All tests passed ✅🏷️ Commit: 22be366 Learn more about TestLens at testlens.app. |
Sorry, something went wrong.
…lures (netty#17275) Auto-port of netty#17271 to 4.1 Cherry-picked commit: dd7c9dc --- Motivation: `encodeInitHttpMessage()` updated the encoder state before running header sanitization and encoding. If either step threw, the allocated buffer was released but the encoder remained in a content state even though no output had been produced. A subsequent valid response was then rejected with `unexpected message type`. This can be reproduced without a fatal error by encoding a `204 No Content` response backed by `ReadOnlyHttpHeaders`. Sanitization fails with `UnsupportedOperationException`, and the next response fails because the encoder is still in state 3. netty#17089 made the header buffer exception-safe, but its regression test ended the channel immediately after the failure and did not exercise another response. Modification: - Compute the next content state in a local variable. - Commit it to the encoder only after header sanitization and encoding complete successfully. - Add a regression test for a sanitization failure and extend the existing header encoding failure test to verify that a valid response can still be encoded afterward. Result: An initial-message header failure no longer leaves the encoder unusable. Successful encoding and wire output are unchanged. Verification: `./mvnw -pl codec-http test` 8,982 tests run, 0 failures, 0 errors, 4 skipped. Co-authored-by: Gimin Kim <138752849+Gimini-3@users.noreply.github.com>
| Back | FazBrowse Home | New Git URL |
Auto-port of #17271 to 4.1
Cherry-picked commit: dd7c9dc
Motivation:
encodeInitHttpMessage() updated the encoder state before running header sanitization and encoding. If either step threw, the allocated buffer was released but the encoder remained in a content state even though no output had been produced. A subsequent valid response was then rejected with unexpected message type.
This can be reproduced without a fatal error by encoding a 204 No Content response backed by ReadOnlyHttpHeaders. Sanitization fails with UnsupportedOperationException, and the next response fails because the encoder is still in state 3.
#17089 made the header buffer exception-safe, but its regression test ended the channel immediately after the failure and did not exercise another response.
Modification:
Result:
An initial-message header failure no longer leaves the encoder unusable. Successful encoding and wire output are unchanged.
Verification:
./mvnw -pl codec-http test
8,982 tests run, 0 failures, 0 errors, 4 skipped.