gh-63121: Refresh imaplib capabilities on state changes#152752
Open
serhiy-storchaka wants to merge 1 commit into
Open
gh-63121: Refresh imaplib capabilities on state changes#152752serhiy-storchaka wants to merge 1 commit into
serhiy-storchaka wants to merge 1 commit into
Conversation
imaplib fetched the server capabilities only once, at connection time. They are now also refreshed after a successful LOGIN or AUTHENTICATE, from the CAPABILITY response the server sent or, if it sent none, by querying it. This lets methods such as enable() see capabilities added after login, for example ENABLE on Gmail (pythongh-103451). Capabilities advertised in the server greeting are now used too, saving a redundant CAPABILITY command. Co-Authored-By: Claude Opus 4.8 (1M context) <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.
imaplibfetched the server capabilities only once, at connection time,and never updated them. But a server may advertise different
capabilities after authentication (:rfc:
3501), so methods relying onthe cached list, such as
enable(), wrongly reported that the serverdid not support a capability it had advertised after login -- for
example
ENABLEon Gmail (#103451).Capabilities are now refreshed after a successful
LOGINorAUTHENTICATE, from theCAPABILITYresponse the server sent or, if itsent none, by querying it (as is already done after
STARTTLS). As aside benefit, capabilities advertised in the server greeting are now
used too, saving a redundant
CAPABILITYcommand.Fixes #103451.