The GVariant type "*" only matches a single data type, not many, and
the sense of the test to check serialised ids was wrong anyway. As a
reuslt, this method probably never worked. Add a unit test.
The same servers that do not support SP in a IMAP FETCH HEADER.FIELD
command (e.g. `BODY[HEADER.FIELDS (DATE)]`) does not support SP when
requesting multiple headers, either
(e.g. `BODY[HEADER.FIELDS (DATE SUBJECT)]`).
This patch extends the existing hack (see #410) when enabled and
multiple headers are required to send a seperate command for each,
rather than using a list as above.
Fixes#571
Make sure records are finalised outside the record lock, and minimise
the amount of work that happens inside the record lock in general, so
that no extra logging occurs whilst in inside it, leading to a deadlock.
Fixes#579
By using a single cancellable for both managing the running state of
the AccountProcessor and its operations, if an op cancelled its own
cancellable, it would also stop the processor (and if it didn't, also
pre-cancel andy future ops).
Fix this by decopling processor running state from the operation
cancellables, and use a new cancellable for each operation.
By splitting literal writes into apprpriately sized chunks, the
command's response timer can be updated so that the command doesn't
fail due to a timeout as large values are being sent.
Fixes#543
Remove the `id` param from FolderSupport.Create::create_email_async.
Fix up all implementations and call sites. Update App.DraftManager to
explicitly handle removing the old draft after creating the new one.
This ensures the custom folder delete support gets used and in
particular, ensures that old drafts under Gmail disappear ASAP.
Fixes#76
EmailPrefetecher was deliberately ignoring new mail found during
folder normalisation on folder open to avoid the kind of deadlock
solved by the last commit. Since this is no longer a problem, it can
now stop dropping those.
This should fix a number of issues where email is only partly
downloaded.
Since MinimalFolder.synchronize_remote() waits for the prefetcher to
finish, but the prefetcher only closes when the folder closes, this
could deadlock.
Part of https://gitlab.gnome.org/GNOME/Initiatives/issues/1;
Sets up dual installation for flatpaks, allowing us to
build and run geary without affecting our system install.
This will allow testing of nightlies and CI artifacts as well
via the flatpak, so we can iterate on designs and share
bundles to test with.
Ensure that the client connection is disconnected when the deserialiser
receives an EOS from its underlying stream. Rename the signal used
by Imap.ClientConnection to notify the Imap.ClientSession of EOS to make
it more clear what is going on.
Resolves the issue in #481 where an EOS was recevied but the connection
was not pulled down until after a NOOP was sent and timed out.
In an attempt to prevent ConversationMonitor for blocking when a
connection went bad, load operations were set to local-only when
the remote was not open. This meant however that if the remote was in
the process of being opened, that local-only would be set, and hence any
incomplete messages would fail to be downloaded. Now that the Fill op
now explicitly handles filling local-only by default, we can remove
this.
This ensures that when the conversation monitor is notified of new
messages, but they are not yet fullly downloaded since the prefetcher
is still running, that the messge will still show up.
At least GMail takes some time to copy new messages to the Sent folder
on the server side when sending them, which means the mail may not show
up even after doing a manual remote sync.
This adds an explicit poll, listing new mail in Sent after sending
a message to check for the sent message showing up.
Since the NOOP that ::synchronise_remote sends doesn't go through the
replay queue, it will throw an error if the connection has gone bad.
Instead, catch it and retry.
Ensure that sent mail shows up in a conversartion ASAP for Google,
Outlook and others that automatically save sent mail by performing a
manual sync of the Sent folder after delivering the mail.
If the server supports UID plus, update the message after it was
created to get its IMAP fields and anything else missing filled in.
If not, schedule a explicit folder sync.
Although the folder normalisation process and email prefetcher should
be enough to sync a folder without requiring an explcit sync, if the
folder opens and closes fast enough that new mail is notified but not
downloaded, the folder will still close and the mail will be missed.
To fix this, if a folder has changed, queue it for sync'ing even if it
is currently open.
Add Geary.Folder::synchronise_remote method to allow clients to
explicitly check for new mail in a folder. Move code from
ImapEngine.AccountSynchronizer as the basic implementation, but also
ensure pending replay queue notifications are processed before the
process is complete.