Commit Graph
327 Commits
Author SHA1 Message Date
Alexander Krotov 1bfc8d0300 Imap.delete_msg(): warn about unexpected FETCH responses
Such responses indicate IMAP client or server bug.
2020-08-07 23:36:12 +03:00
Hocuri 6e8808f69b Download possible ndns also if the contact is blocked
Before, if the user had blocked their mailer daemon (like me), ndns were
not parsed.
2020-08-01 16:14:32 +02:00
Alexander Krotov cde587fefa idle: drain unsolicited response channel
This prevents multiple unsolicited messages from skipping multiple IDLEs.
Also skip IDLE only if an EXISTS message was received.
2020-07-16 11:55:51 +02:00
holger krekel fc12beda24 fix a problem where IDLE would run but miss messages 2020-07-16 11:55:51 +02:00
Alexander Krotov 7bb6890f26 Send MDNs for messages deleted on the server
Now MarkseenMsgOnImap sends MDN even if it can't mark the message as
seen on the server.

To prevent multiple MDNs from being sent, MarkseenMsgOnImap is postponed
until the message is detected in a folder from which it is not going to
be moved.
2020-07-14 23:26:48 +03:00
bjoern f1b3527ad0 Merge pull request #1613 from deltachat/warn-wrong-pw
Show a better toast and a notification when the password is wrong (because it was changed on the server)
2020-07-13 13:12:31 +02:00
Alexander Krotov 1e84e81e7d imap: expunge folder before IDLE if needed
This ensures Inbox is expunged timely in setups that don't watch
DeltaChat folder.
2020-07-13 00:54:20 +03:00
Alexander Krotov 18e4abc1df Remove some and deny new indexing and slicing 2020-07-11 21:43:02 +03:00
Hocuri 86bc54508f More explicit 2020-07-11 14:27:15 +02:00
Hocuri ae2fd4014a Emit Event::ErrorNetwork again 2020-07-11 14:27:15 +02:00
Hocuri 2c23433185 Make it work
Add a mutex to prevent a race condition when a "your pw is wrong" warning is sent, resulting in multiple messeges being sent.

Do not mute the device chat but "only" send MsgsChanged event when no
notification shall be shown.

More logging.
2020-07-11 14:27:15 +02:00
Hocuri 3f2e67f07a First try for notification 2020-07-11 14:27:14 +02:00
Hocuri 06a4f15995 Better warning if the pw is wrong 2020-07-11 14:27:14 +02:00
Alexander Krotov 0ae8663eed imap: call dc_receive_imf sequentially
Parallel processing of messages results in bugs such as messages sent by
a new member being processed before the message that adds this member to
the chat, even when it has lower UID. In this case, messages are shown as
"[Unknown sender for this chat. See 'info' for more details.]", while
there is a message "Member ... added" right before, because writing the
information about new member to the database takes longer then reading
old index from the database.
2020-07-10 00:40:52 +03:00
Alexander Krotov 43c4816739 Display source for IMAP IDLE errors 2020-07-08 01:32:49 +03:00
dignifiedquire 7d08397b48 cleanup interrupt and exit of imap idle 2020-07-07 16:09:13 +03:00
Alexander Krotov b5400cf551 Refactor imap/mod.rs to avoid indexing
Also replace assert! with debug_assert!
2020-06-19 00:56:01 +03:00
dignifiedquire baff13ecab fix warnings and bugs, noticed on nightly 2020-06-17 19:27:27 +02:00
Hocuri 40c9c2752b Parse ndns from Tiscali 2020-06-17 10:39:05 +02:00
Hocuri 15b30ceed1 check for sender mailer-daemon as link2xt proposed 2020-06-13 17:29:38 +02:00
Hocuri 45b871f76d Look at From instead of Subject and ContentType in prefetch_should_download. 2020-06-13 14:18:16 +02:00
Hocuri 9f1112833f let prefetch_should_download() check if it might be an ndn 2020-06-13 12:06:30 +02:00
Alexander Krotov f5156f3df6 IMAP: logout from the server with a LOGOUT command
CLOSE, which was used previously, only expunges messages and deselects
folder, and it should only be called if some folder is selected. For that,
Imap.close_folder() method is used.
2020-06-11 13:54:14 +02:00
Alexander Krotov 19b53c76da Add strict_tls support 2020-06-10 10:52:53 +03:00
Hocuri 05e1c00cd1 fix: update message ids correctly
Fixes #1495
2020-06-05 16:27:22 +02:00
dignifiedquire 86c6b09814 fix: trigger reconnects when errors occur during idle and fetch 2020-06-03 15:40:54 +02:00
dignifiedquire 7addb15be5 fix(imap): deterministically detect folder meaning 2020-06-02 15:18:24 +02:00
dignifiedquire 6100a23e80 fix: avoid lock for probe_network, avoiding deadlock on startup
Closes #1532
2020-05-27 15:13:29 +02:00
dignifiedquire 157dd44df0 refactor: improve structure of fetch_messages
also fixes updating last_seen_uid to the correct value
2020-05-25 17:03:08 +02:00
dignifiedquire 72d4da0095 feat(imap): process incoming messages in bulk 2020-05-24 00:06:39 +02:00
dignifiedquire 0ea442ca36 feat: add chat::send_msg_sync 2020-05-23 18:56:45 +02:00
dignifiedquire 133ff4914d first pass at resolving CR 2020-05-19 17:26:22 +02:00
dignifiedquire af56ebb04e Merge remote-tracking branch 'origin/master' into feat/async-jobs 2020-05-19 12:07:34 +02:00
Hocuri ab253744f8 Code style 2020-05-16 15:07:01 +02:00
B. Petersen eafb7b979d make clippy happy 2020-05-16 00:09:22 +02:00
B. Petersen 9e22bf39cc smoother searching for sentbox
search for the sentbox in two passes:
- first check the folder attributes
- only if that fails, check for some known names

this way, the sent-attribute always has precedence
over the name; this was not the case before.

moreover, this fixes an possibly wrong early exist
when the attribute list is completely empty.
2020-05-16 00:01:42 +02:00
B. Petersen fc6691ce5b add 'sentmail' to the list of known names for 'sent', acutally used by chello.at 2020-05-15 23:05:23 +02:00
dignifiedquire 8a7923c974 Merge remote-tracking branch 'origin/master' into feat/async-jobs 2020-05-13 18:29:22 +02:00
Alexander Krotov 3ee81cbee0 Revert "imap: simplify select_folder() interface"
This reverts commit b614de2f80.
2020-05-13 11:36:33 +02:00
Alexander Krotov cc56edc91d Log precheck_imf errors 2020-05-11 00:19:14 +03:00
bjoern c5eb112f5a Merge pull request #1465 from deltachat/smtp-network-error
Better SMTP ErrorNetwork message
2020-05-10 23:05:20 +02:00
B. Petersen aa292ac6b8 do normal receive_imf() if message-id is empty or if prefetch failed for other reasons. there are servers not sending a message ids, this and other cases is handled in receive_imf() - but not in prefetch (would be too much to maintain, also we need more information). this normal processing also prevents trying over the same message over and over as the server_uid is updated. 2020-05-10 22:43:04 +02:00
Alexander Krotov c36227e2fc Better SMTP ErrorNetwork message
It uses stock string, just as for IMAP errors, and is distinguishable
from IMAP errors: protocol is specified in the error message now.
2020-05-10 23:24:03 +03:00
Hocuri a586a1d525 Fix #1120 Contact requests are not shown when name of sender includes a comma character (#1438)
* First try making get_recipients use MailHeader (nice and functional)

* Get it to compile by using not-so-functional style

* Add "empty-from" test, drop unnecessary check for error; continue using addrparse_header() instead of addrparse()

* Try to use functional style, unfortunately, I can't get the compiler to accept it

* Do it imperative-style: Do not overwrite To with Cc and vice versa

* Use addrparse_header() once more

* Still addrparse_header()

* Clippy

* Fix compile errors in tests

* Fix typo

* Fix tests again ;-)

* Code style

* Code style; try a HashMap<addr: String, display_name: String> as an address list but I am not convinced

* Code style; Use Vec<SingleInfo> as address list

* Clippy

* Add tests

* Add another test

* Remove stale comments
2020-05-07 13:55:09 +02:00
Alexander Krotov 6543c7c26f fetch_single_msg: do not ignore dc_receive_imf errors
If error is ignored, the message will never be fetched again, even if
there was a database write error.

dc_receive_imf itself is modified to ignore unrecoverable errors, to
prevent endless refetching of incorrect messages.
2020-05-04 18:19:32 +03:00
Alexander Krotov e8763e936d imap: simplify select_folder() interface
Accept AsRef<str> instead of Option<impl AsRef<str>>.

There is no need to pass None to force expunge anymore.
2020-04-30 23:48:41 +03:00
Alexander Krotov c41a6b87b8 imap: always close folder before selecting if expunge is needed 2020-04-30 23:48:41 +03:00
Alexander Krotov 979d7c5625 Do not ignore database read errors in precheck_imf
If precheck_imf fails to check if message with the same rfc724_mid
already exists, the same message may be downloaded twice. Instead,
abort the whole operation and retry later.
2020-04-23 15:36:45 +03:00
Friedel Ziegelmayer 24f4cbbb27 refactor: replace failure
- failure is deprecated
- thiserror for deriving Error impl
- anyhow for highlevel error handling
2020-04-10 22:39:28 +02:00
dignifiedquire 307a3e078e Merge remote-tracking branch 'origin/master' into feat/async-jobs 2020-04-09 23:41:34 +02:00