Manos Pitsidianakis
96985c9c1f
melib/imap: set conn to Err if watch returns Err
2020-09-12 21:34:34 +03:00
Manos Pitsidianakis
7c6e3658c7
melib/imap: try NOOPing in connect()
2020-09-12 21:33:25 +03:00
Manos Pitsidianakis
5079881a4c
melib/imap: add tags to tag_index when setting new tags
2020-09-12 21:32:19 +03:00
Manos Pitsidianakis
6d9cdce923
melib/imap: don't fail utterly if cache fails on fetch
...
Show notice to user, and then try a fresh fetch. Also try resetting the
cache if possible.
2020-09-12 21:29:09 +03:00
Manos Pitsidianakis
7b324359c5
melib/imap: ignore case for supported capability report in
...
MailBackendExtensionStatus
2020-09-12 21:22:17 +03:00
Manos Pitsidianakis
4829e13c47
melib/maildir: impl copy_messages for Maildir
2020-09-11 17:02:27 +03:00
Manos Pitsidianakis
9e20f6556a
melib/imap: refactor command generation on copy_messages
2020-09-11 17:02:27 +03:00
Manos Pitsidianakis
d00055fdb1
melib/imap: update online instant only on server read IO
2020-09-11 17:02:27 +03:00
Manos Pitsidianakis
1751509739
melib/imap: prevent false IDLE wakeups
...
Prevent IDLE loop waking up when receiving continuation "+ " lines
2020-09-11 17:02:27 +03:00
Manos Pitsidianakis
5cd03fff0f
melib/email/parser: add mailing list parser module
...
Specifically, rfc2369 list header action list
2020-09-11 00:08:56 +03:00
Manos Pitsidianakis
927a0c3cc0
melib/imap: prevent panic in untagged fetch response
2020-09-11 00:06:32 +03:00
Manos Pitsidianakis
faa12a2d41
melib/email/address: add contains_address,subaddress methods
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
c0c588be9c
melib/maildir: add message flag initialize in bytes
...
Maildir flags from filesystem path was not set correctly on Envelope
initialization in maildir backend
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
be57b65dae
melib/email: add flags arg to Mail::new
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
d57dd9c98e
melib/email/address: return Option in get_display_name
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
c6c0da7fcb
melib: cleanup commit
...
Cleanup melib module exports, add some document tests, change some
documentation.
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
d14f26569e
melib/email/parser: Add rfc5322 compliant parser for MessageID
2020-09-10 20:36:25 +03:00
Manos Pitsidianakis
5d107db8b8
melib/email/parser: add new RFC5322 compliant parsers for header bodies
2020-09-10 20:36:25 +03:00
Manos Pitsidianakis
0de39cb658
melib/email/address: add constructors, and fix debug print
2020-09-10 20:36:25 +03:00
Manos Pitsidianakis
46c44ced96
line_break: check of eof in LB13
2020-09-10 20:36:25 +03:00
Manos Pitsidianakis
f8f3f1817d
melib/notmuch: fix search
...
Search was not available, it had been left out of date
2020-08-28 14:27:46 +03:00
Manos Pitsidianakis
b4fe34eacf
melib/imap: add ImapCache trait
2020-08-28 00:31:35 +03:00
Manos Pitsidianakis
e878c50af5
tools/imapshell: actually send LOGOUT instead of just closing socket
2020-08-28 00:16:37 +03:00
Manos Pitsidianakis
75f59ee726
melib/imap: split by lines when reading IDLE unsolicited responses
2020-08-27 17:26:39 +03:00
Manos Pitsidianakis
be2d268a20
melib/imap: build uid<>msn cache in {select,examine}_mailbox()
2020-08-27 17:26:07 +03:00
Manos Pitsidianakis
209bd98814
melib/imap: fix cache not being updated in some events
2020-08-27 17:25:05 +03:00
Manos Pitsidianakis
a37faf0bec
Fix imapconn IMAP shell binary
...
IMAP shell hasn't been working since updating IMAP to async. Now it
works by using block_on executor.
2020-08-27 17:07:19 +03:00
Manos Pitsidianakis
e9a80b32ac
melib/imap: small cleanups
2020-08-26 20:08:44 +03:00
Manos Pitsidianakis
f02dde46da
melib/error:Add ErrorKind::Timeout
...
Timeout errors lead to automatic restart of connections without
bothering the user about the details, compared to actual network errors.
2020-08-26 20:01:39 +03:00
Manos Pitsidianakis
c6f11fb592
melib: update notify to 4.0.15
2020-08-26 19:17:54 +03:00
Manos Pitsidianakis
e349882ea7
melib/email/parser: use SmallVec in encoded words
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
14663e46b9
Remove some old TODO comments
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
4217839155
melib/email: remove Envelope::from_token
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
1df25f36ef
melib/email: case insensitive match on charset from bytes
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
96a3da3d7b
melib/imap: fix deflate feature flags
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
f7ac1703e8
melib/notmuch: add watch/refresh methods to backend
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
974836776d
melib/email: trim raw input for some fields
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
341ff9164b
melib/notmuch: add Message,TagIterator,Thread types
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
8c6c9806b5
Fix some clippy lints
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
fc25c7b165
Fix compiler warnings
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
f7c9f21575
melib/imap: add CONDSTORE support
...
Closes #52
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
1ca0bd0d96
sqlite3: add schema versioning
...
To potentially be used with automatic migrations on version update
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
8d50e83a33
melib/email: add case-insensitive Header struct
...
- HeaderName is either 32 or less inlined bytes or heap-allocated vec for more than that.
- Equality and hashing is case-insensitive
- A HeaderMap is a hashmap from HeaderName to Strings that can be
indexed with &str, case insensitive. Insertion order is also preserved
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
0f3bf858a3
melib/imap: impl UNSELECT via nonexistent mailbox
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
876e1bc510
melib/imap: turn ImapResponse From to TryFrom
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
94433cfc40
melib/backends: cleanup MailBackend trait definition
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
3eadaba34e
Replace old pseudo-async code with blocking rust async
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
a190805384
melib/backends: Add BackendEvent enum
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
9928ee78e7
Add Reply{ToAuthor,ToAll} actions
...
- previous Reply action now lets you select recipients by default
- ReplyToAuthor selects the Envelope author as recipient
- ReplyToAll selects all addresses
2020-08-26 00:54:05 +03:00
Manos Pitsidianakis
9afbdd4887
Add insert_user_agent option in composing
...
Add option for automatically inserting a 'User-Agent' header in new
drafts.
2020-08-26 00:54:05 +03:00
Manos Pitsidianakis
be31d35ff6
melib/line_break: fix missing Break on B2 class
...
Graphemes of B2 class, such as the Em dash can break before and after.
However this case wasn't handled in the line break iterator.
2020-08-26 00:54:05 +03:00
Manos Pitsidianakis
dede8d2a9e
melib/imap: timeout when establishing connection
2020-08-16 19:57:28 +03:00
Manos Pitsidianakis
d1a9f4e28a
melib/collection: remove unnecessary mut references
2020-08-16 15:38:11 +03:00
Manos Pitsidianakis
b9e53a7451
melib/smtp: add recipient argument in mail_transaction()
2020-08-16 15:16:27 +03:00
Manos Pitsidianakis
30c390443a
melib: Add native_tls behind feature
...
native_tls error conversion was held behind `imap_backend` feature, but
tls is also used in smtp.
2020-08-15 13:42:30 +03:00
Manos Pitsidianakis
1affee183a
melib/nntp: fetch all articles of group
2020-08-09 21:23:13 +03:00
Manos Pitsidianakis
92a9127758
melib/notmuch: don't read messages to String
2020-08-09 20:29:55 +03:00
Manos Pitsidianakis
79b2b38e32
melib: add supports_submission backend capability
...
To be used by NNTP, JMAP and some IMAP servers with BURL capability
2020-08-09 14:56:34 +03:00
Manos Pitsidianakis
560f9e5399
melib/email: parse empty attachments correctly
2020-08-09 09:50:20 +03:00
Manos Pitsidianakis
c0f8bc1aed
melib/email/attachments: add Content-Disposition
2020-08-09 09:49:32 +03:00
Manos Pitsidianakis
b2c14abd6e
melib/jmap: add {flag,tag} set support
...
Closes #61
2020-08-09 09:47:01 +03:00
Manos Pitsidianakis
a712bf6c3c
melib/jmap: make backend async
...
Replace reqwest with isahc which supports async IO
2020-08-07 13:51:44 +03:00
Manos Pitsidianakis
6d61d0651c
melib/jmap: add special keywords to search
2020-08-06 21:13:20 +03:00
Manos Pitsidianakis
c88eac1cc5
melib/jmap: implement search
...
Closes #59
2020-08-06 19:46:46 +03:00
Manos Pitsidianakis
5485e7b941
melib/notmuch: fetch mail in chunks
...
notmuch fetch took too much time on large mailboxes because it sent the
result as one big vec, instead of chunking it.
2020-08-02 16:52:19 +03:00
Manos Pitsidianakis
890000bd0e
status page: trim extension name at 30 chars
...
NNTP has some long protocol extension names
2020-08-02 00:48:44 +03:00
Manos Pitsidianakis
1bdecd62c7
melib/nntp: add AUTH support
2020-08-02 00:44:45 +03:00
Manos Pitsidianakis
ce45cf5f17
melib/{imap,nntp}: flush after write_all
...
IMAP IDLE got stuck, because the IDLE connection used `send_raw` that
didn't flush output after `write_all`, *if* DEFLATE was on. DEFLATE
needs to flush output.
2020-08-02 00:22:15 +03:00
Manos Pitsidianakis
ec0153e7b2
melib: add protocol extension info in MailBackendCapabilities
2020-08-02 00:22:15 +03:00
Manos Pitsidianakis
2b3949ddb2
melib: add missing cfg attribute for NNTP
2020-08-02 00:22:15 +03:00
Manos Pitsidianakis
522f667350
melib: add experimental NNTP backend
...
Closes #54
2020-07-30 20:58:53 +03:00
Manos Pitsidianakis
3ac2c12e7a
Small fixes
2020-07-29 14:33:09 +03:00
Manos Pitsidianakis
5c038887db
melib/imap: add MOVE support
2020-07-29 01:19:08 +03:00
Manos Pitsidianakis
5ec7c59d8a
melib/threads: re-add to missing_message_ids on remove
2020-07-28 17:39:25 +03:00
Manos Pitsidianakis
9a29f4245f
melib/imap: add COMPRESS=DEFLATE support
...
Closes #53
2020-07-28 17:39:25 +03:00
Manos Pitsidianakis
d8f2a08e7b
melib/smtp: add serde field default values
2020-07-27 15:06:57 +03:00
Manos Pitsidianakis
8ec0da4fbd
melib/imap: add conf toggle flags for IMAP extensions
2020-07-27 15:06:57 +03:00
Manos Pitsidianakis
7bbfd188ef
melib/imap: move current_mailbox to ImapStream
...
ImapStream holds the connection state (current command id), so it makes
sense to move current_mailbox state there. That way, when a connection
drops for whatever reason the old current_mailbox is dropped and not
carried over to new connections.
2020-07-27 15:06:56 +03:00
Manos Pitsidianakis
32b4c30fee
melib/email.rs: use SmallVec for Address fields
2020-07-27 15:06:56 +03:00
Manos Pitsidianakis
52cec59215
melib/error: add From<&MeliError> for MeliError
2020-07-27 15:04:29 +03:00
Manos Pitsidianakis
cc119c19b0
melib/maildir: send NewFlags events
2020-07-26 16:09:41 +03:00
Manos Pitsidianakis
031e81ac8f
imap: add UntaggedResponse::UIDFetch
2020-07-26 16:09:41 +03:00
Manos Pitsidianakis
f41a1ffe3a
imap: remove FLAGS.SILENT from STOREs
...
Flag updates were not received, because FLAGS.SILENT was used.
2020-07-26 16:09:41 +03:00
Manos Pitsidianakis
3f8aa560f0
melib/MailBackend: add MailBackendCapabilities struct
2020-07-25 17:53:04 +03:00
Manos Pitsidianakis
5a5408ecd5
imap: small fixes
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
00acba7717
melib/MailBackend: add copy_messages,set_flags,delete_messages methods
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
1b8529c59c
melib/imap: use LITERAL+ with APPEND
...
Closes #50
2020-07-25 15:17:35 +03:00
Manos Pitsidianakis
99fbac3806
Remove unused variables/functions
2020-07-23 13:39:58 +03:00
Manos Pitsidianakis
0ee3a0bf79
imap: clear mesage totals when fetching entire mailbox
...
Totals might have been set after a STATUS response, meaning we know the
totals without knowing exactly what message UIDs are there. Clear the
totals, and start inserting UIDs instead.
2020-07-23 13:23:24 +03:00
Manos Pitsidianakis
6121f77853
imap: support LIST-STATUS
2020-07-23 13:23:24 +03:00
Manos Pitsidianakis
350c8033b1
imap: use ImapLineIterator in imap_mailboxes()
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
e49c293b01
imap: impl DoubleEndedIterator for ImapLineIterator
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
b9343dfb32
imap: update supported capabilities
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
0882dbbad0
melib/Collection: put all fields behind a mutex
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
1112ef4717
melib/Collection: remove unused fields
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
fadb3634e0
melib: take MailboxHash instead of &Mailbox in fetch*()
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
9103d05617
melib: s/get/fetch in MailBackend methods
2020-07-18 12:34:13 +03:00
Manos Pitsidianakis
0a7f283582
imap: prevent deadlock in watch::examine_updates
...
uid_store.mailboxes was locked before calling examine_updates, which
calls examine_mailbox() which also attempts to lock uid_store.mailboxes
2020-07-17 22:45:25 +03:00
Manos Pitsidianakis
c6c2865a54
melib/thread/iterators: remove recursion in favor of loops
2020-07-17 13:33:40 +03:00
Manos Pitsidianakis
32f196143e
melib: add supports_search() method to MailBackend
2020-07-17 00:02:02 +03:00