GROUP was sent before ARTICLE every time even if the group was already
selected. Use Connection's `select_group` method that makes sure the
group is not re-selected needlessly.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Populating the message sequence number runtime store is not performed in
order, so inserting UIDs in a vec can fail when we want to insert a
number higher than the current maximum. This could lead to panics when
inserting to a vec at an index above its length.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Some tests needs a standalone environment because they mess with
variables that other tests need too. sealed_test runs the tests in a
forked process so that there are no issues with that.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Databases described by `DatabaseDescription` are created in XDG Data
directories by default. Add an optional explicit directory field so that
tests and other API consumers can override that location.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Add support for searching by Message-ID, In-Reply-To, References, or any
header with the following keywords:
- "message-id:term", "msg-id:term"
- "in-reply-to:term"
- "references:term"
- "header:title,value"
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Add an ErrorChainDisplay struct that borrows an error and prints the
list of chained errors one by one, showing relationships and metadata
for each error.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
NOTMUCH_ERROR_DETAILS was defined twice for macos from "unix"
target_family and target_os = "macos".
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
When 401 is returned by an HTTP server, the WWW-Authenticate header must
be present. The values represent the supported Authentication schemes of
the server.
This commit detects them and reports the appropriate error to the user.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
When resyncing with resync_basic and resync_condstore, we would update
the unseen and exists counts for the mailbox without inspecting if the
mailbox was loaded or not. Since a previous commit reset total not yet
seen to 0 when inserting new entries to mail totals, this would lead in
unloaded mailboxes go from having their original unseen counts to having
only the new envelopes in the total.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Add a FromStr implementation so that we can parse a string into a format
value from other places in the code.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Add a new WrapResultIntoError trait with method wrap_err() so we can
wrap a result and set its error as a source for a new error and
description, this allows for more descriptive error messages like:
Before:
let mbox_format = parse(some_string)?; <- error msg is "invalid mbox
format value, expected blah blah"
After:
let mbox_format = parse(some_string).wrap_err(|| "Could parse
configuration of account {}", account_name)?; <- error msg is "Could not
parse configuration of account myaccount, Caused by: invalid mbox format
value, expected blah blah"
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>