gh-88574: Do not swallow the line after a terminating literal in imaplib#153317
Merged
serhiy-storchaka merged 1 commit intoJul 8, 2026
Merged
Conversation
…n imaplib pythonGH-152751 skipped a spurious blank line after a literal unconditionally, corrupting a response that ends with a literal (such as a mailbox name returned by LIST): its empty trailer was mistaken for the blank and the following line was swallowed. The blank is now skipped only inside an unclosed parenthesis. After a literal that ends the response it instead arrives before the next response and is skipped there. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4b356f6 to
1bc0b0d
Compare
|
Thanks @serhiy-storchaka for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14, 3.15. |
|
GH-153324 is a backport of this pull request to the 3.15 branch. |
|
GH-153325 is a backport of this pull request to the 3.14 branch. |
|
GH-153326 is a backport of this pull request to the 3.13 branch. |
serhiy-storchaka
added a commit
that referenced
this pull request
Jul 8, 2026
…in imaplib (GH-153317) (GH-153325) GH-152751 skipped a spurious blank line after a literal unconditionally, corrupting a response that ends with a literal (such as a mailbox name returned by LIST): its empty trailer was mistaken for the blank and the following line was swallowed. The blank is now skipped only inside an unclosed parenthesis. After a literal that ends the response it instead arrives before the next response and is skipped there. (cherry picked from commit 6b81784) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
serhiy-storchaka
added a commit
that referenced
this pull request
Jul 8, 2026
…in imaplib (GH-153317) (GH-153324) GH-152751 skipped a spurious blank line after a literal unconditionally, corrupting a response that ends with a literal (such as a mailbox name returned by LIST): its empty trailer was mistaken for the blank and the following line was swallowed. The blank is now skipped only inside an unclosed parenthesis. After a literal that ends the response it instead arrives before the next response and is skipped there. (cherry picked from commit 6b81784) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GH-152751 made
imaplibskip a spurious blank line that some servers send after a literal, but it did so unconditionally. That corrupted a response ending with a literal (such as a mailbox name returned byLIST/LSUBas a literal): the literal's legitimately empty trailer was mistaken for the spurious blank, so the following line was swallowed and the framing was lost.Spurious blank lines are now handled in both positions a literal can occupy:
)of aFETCH) the blank is skipped only while the response line is still open, i.e. inside an unclosed parenthesis. A literal that terminates the response is at depth 0, so its empty trailer is preserved.LIST/LSUBreply that returns a literal mailbox name in every response.