-
Notifications
You must be signed in to change notification settings - Fork 290
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IMAP 'UID FETCH' response parsing error #426
Comments
Ok, some progress. I'm now looking at The call stack is now:
It passes However, it now expects a closing parenthesis I'll dive deeper into |
And more progress: it seems to choke on an
Consequently, |
Looking at the RFC, the formal syntax does not seem to allow DQUOTE's in the envelope messageid (except when properly escaped, which in this case, they are not):
But alas, here we are. |
@dinhvh if you could add me as a contributor I can make a PR with a workaround |
FYI: I have also created an issue on Apple’s developer site since it’s an iCloud issue and eventually, Apple should fix it on their side: |
@BasTossings could you please share the fix? |
Hey @dsanghan, the fix consists of a number of changes in "src/low-level/imap/mailimap_parser.c". I'd rather just push my branch but here it is anyways: mailimap_parser.zip |
I am currently investigating a serious IMAP issue that seems to plague many email clients that indirectly utilize
libetpan
through MailCore2, including my installation of Mailspring.The specific issue in Mailspring is mentioned here: The Eternal Sync Bug. But i've read other mail clients utilizing MailCore2 have similar problems.
In my case, if fails when fetching older messages from my iCloud mail account using UID FETCH, for example:
To which the server responds with:
The parser faults on the output at
mailimap_response_tagged_parse
with aMAILIMAP_ERROR_PARSE
because it does not recogize the first character of the response (*) as a tag, leading tomailimap_uid_fetch
also returning with aMAILIMAP_ERROR_PARSE
.The call stack at that point is:
According to the RFC (at 6.4.8), UID FETCH has an untagged response, so I am assuming the reason libetpan calls
mailimap_response_tagged_parse
in this case is just to parse the status response at the end (in this case10 OK UID FETCH
), assuming the untagged response has already been parsed.Now, in
mailimap_response_parse_progress
, beforemailimap_response_done_parse
is called, it callsmailimap_struct_multiple_parse_progress
, which returnsMAILIMAP_NO_ERROR
, yet does not seem to parse any untagged data (or any data for that matter).I will continue to investigate further, but any assistance would be greatly apprectiated!
The text was updated successfully, but these errors were encountered: