gkm2164 opened a new pull request, #3145: URL: https://github.com/apache/james-project/pull/3145
Backport of #3144 to `3.9.x`, as discussed there. ## What this is `ImapRequestFrameDecoder` silently drops a pipelined command that arrives in the same read as a preceding literal-bearing command (two LITERAL+ `APPEND`s in one write: the second gets no response and is never persisted). Full analysis, wire captures and root cause are in #3144 — this PR carries the exact same decoder change (+76/−77, byte-identical to the master commit — I'll update this reference with the merged SHA once #3144 lands; opening as a draft until then). Worth noting: the bug was originally *discovered on a 3.9.0 deployment* (the `imaptest` stalls in #3144 were recorded against James 3.9.0), so `3.9.x` is confirmed affected, not just theoretically. ## Differences from the master PR - **Decoder**: none. The cherry-pick applied cleanly; the only drift between `3.9.x` and master in this file is the `LeakAware` constructor signature on a line the fix does not touch. - **Regression test placement**: master splits IMAP server tests into per-topic classes on top of `AbstractIMAPServerTest`, which does not exist on `3.9.x`. The same test method (`secondPipelinedAppendAfterLiteralShouldNotBeLost`, unchanged) therefore lives in `IMAPServerTest`'s existing `AppendNonSynchronizedLitterals` nested class, right next to `partialCommandAfterNonSynchronizedLiteralShouldNotFail` — the same neighborhood it occupies on master. ## Testing on 3.9.x - Bidirectional check in a Linux container (maven:3.9-eclipse-temurin-21): with the pristine `3.9.x` decoder plus only the new test, `secondPipelinedAppendAfterLiteralShouldNotBeLost` fails with `execution timed out after 5000 ms` (bug reproduced); with the patch it passes. - Full `server/protocols/protocols-imap4` module suite with the patch: **612 tests run, 0 failures** (1 skipped), `BUILD SUCCESS` — including all 28 nested classes of `IMAPServerTest`. One unrelated observation from validating this on a macOS host: `IMAPServerTest` contains nested classes `Ssl` and `SSL`, whose class files collide on case-insensitive filesystems. The surviving file then fails class loading (`NoClassDefFoundError ... wrong name`), and JUnit silently drops the whole class from discovery — a macOS developer running this module locally gets a green build with 568 of the tests never executed. Linux CI is unaffected. Happy to file that separately if useful. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
