mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 17:58:18 +03:00
LibIMAP: Parse OK [CLOSED]
In my case the mail server responded with the following after selecting a mailbox (in the Mail application): * OK [CLOSED] Previous mailbox closed. * FLAGS (\Answered \Flagged ...) * OK [PERMANENTFLAGS (\Answered \Flagged ... \*)] Flags permitted. * 2 EXISTS * 0 RECENT * OK [UIDVALIDITY 1234567890] UIDs valid * OK [UIDNEXT 12345] Predicted next UID * OK [HIGHESTMODSEQ 123456] Highest A6 OK [READ-WRITE] Select completed (0.002 secs). The [CLOSED] part threw the parser off as it was expecting a space after the atom following the opening bracket, which would actually lead to a crash of Mail (AK::Optional::value() without value).
This commit is contained in:
parent
73a9d2ec32
commit
66e47d05c5
Notes:
sideshowbarker
2024-07-18 08:22:38 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/66e47d05c5f Pull-request: https://github.com/SerenityOS/serenity/pull/8987 Reviewed-by: https://github.com/Lubrsi ✅
@ -164,17 +164,22 @@ void Parser::parse_untagged()
|
||||
consume(" ");
|
||||
if (try_consume("[")) {
|
||||
auto actual_type = parse_atom();
|
||||
consume(" ");
|
||||
if (actual_type == "UIDNEXT"sv) {
|
||||
if (actual_type == "CLOSED"sv) {
|
||||
// No-op.
|
||||
} else if (actual_type == "UIDNEXT"sv) {
|
||||
consume(" ");
|
||||
auto n = parse_number();
|
||||
m_response.data().set_uid_next(n);
|
||||
} else if (actual_type == "UIDVALIDITY"sv) {
|
||||
consume(" ");
|
||||
auto n = parse_number();
|
||||
m_response.data().set_uid_validity(n);
|
||||
} else if (actual_type == "UNSEEN"sv) {
|
||||
consume(" ");
|
||||
auto n = parse_number();
|
||||
m_response.data().set_unseen(n);
|
||||
} else if (actual_type == "PERMANENTFLAGS"sv) {
|
||||
consume(" ");
|
||||
auto flags = parse_list(+[](StringView x) { return String(x); });
|
||||
m_response.data().set_permanent_flags(move(flags));
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user