Commit Graph

338 Commits (1c25ae12ebbd8d8969c8ca2d5fea539af63d5470)

Author SHA1 Message Date
Manos Pitsidianakis 40b63cc3e0
melib/imap: fix unseen count on cache sync 4 years ago
Manos Pitsidianakis 38eff71971
IMAP: don't show \Recent flag as tag
Closes #74
4 years ago
Manos Pitsidianakis 3004789f32
melib/imap: FETCH comma-sep list on untagged Recent response
FETCHing RECENT messages when receiving an untagged RECENT response from
the server didn't separate the message numbers with comma but with
space, which is invalid.
4 years ago
Manos Pitsidianakis 9bafba3905
melib/imap: don't print raw bytes in debug prints 4 years ago
Manos Pitsidianakis 98949a4a72
melib/imap: expand special mailbox detection cases 4 years ago
Manos Pitsidianakis e8f3b6aa24
melib/imap: check for max uid == 0 when resyncing 4 years ago
Manos Pitsidianakis 64a2af3777
melib/email: smarter attachment detection
Look for Content-Disposition: attachment to detect attachments
4 years ago
Manos Pitsidianakis e518b3f16d
melib/imap: use SystemTime for IMAP server timeout 4 years ago
Manos Pitsidianakis 3618bdcffb
melib/imap: treat server input as bytes
Server input was assumed valid ascii and converted haphazardly to &str.
Don't do that, since it might not be valid UTF8.
4 years ago
Manos Pitsidianakis 9b0180fdbc
melib/email/parser: impl RFC5322 parser for dates 4 years ago
Manos Pitsidianakis 0e2641f7ed
melib/imap: always retry connection in watch() 4 years ago
Manos Pitsidianakis a5b6f29f2b
melib/imap: ensure connection is alive before fetching bytes/flags 4 years ago
Manos Pitsidianakis 3b10fa3895
melib/imap: set 9min tcp keepalive on connection 4 years ago
Manos Pitsidianakis dee62cc118
melib/imap: fix NoSelect mailboxes not showing up as subscribed 4 years ago
Manos Pitsidianakis 17a4ccdcbc
melib/imap: perform reconnect on IDLE failure 4 years ago
Manos Pitsidianakis 670675edcc
melib/imap: impl LIST-EXTENDED
Closes #69
4 years ago
Manos Pitsidianakis 352f7505fc
melib/imap: don't poll \Noselect mailboxes for updates 4 years ago
Manos Pitsidianakis 06a58a70bd
melib/imap: introduce a conf flag for server timeout
timeout integer                       (optional) Timeout to use for server connections in seconds.  A timeout of 0 seconds means there's no timeout.  (16)
4 years ago
Manos Pitsidianakis 96985c9c1f
melib/imap: set conn to Err if watch returns Err 4 years ago
Manos Pitsidianakis 7c6e3658c7
melib/imap: try NOOPing in connect() 4 years ago
Manos Pitsidianakis 5079881a4c
melib/imap: add tags to tag_index when setting new tags 4 years ago
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.
4 years ago
Manos Pitsidianakis 7b324359c5
melib/imap: ignore case for supported capability report in
MailBackendExtensionStatus
4 years ago
Manos Pitsidianakis 4829e13c47
melib/maildir: impl copy_messages for Maildir 4 years ago
Manos Pitsidianakis 9e20f6556a
melib/imap: refactor command generation on copy_messages 4 years ago
Manos Pitsidianakis d00055fdb1
melib/imap: update online instant only on server read IO 4 years ago
Manos Pitsidianakis 1751509739
melib/imap: prevent false IDLE wakeups
Prevent IDLE loop waking up when receiving continuation "+ " lines
4 years ago
Manos Pitsidianakis 927a0c3cc0
melib/imap: prevent panic in untagged fetch response 4 years ago
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
4 years ago
Manos Pitsidianakis c6c0da7fcb
melib: cleanup commit
Cleanup melib module exports, add some document tests, change some
documentation.
4 years ago
Manos Pitsidianakis d14f26569e
melib/email/parser: Add rfc5322 compliant parser for MessageID 4 years ago
Manos Pitsidianakis f8f3f1817d
melib/notmuch: fix search
Search was not available, it had been left out of date
4 years ago
Manos Pitsidianakis b4fe34eacf
melib/imap: add ImapCache trait 4 years ago
Manos Pitsidianakis e878c50af5
tools/imapshell: actually send LOGOUT instead of just closing socket 4 years ago
Manos Pitsidianakis 75f59ee726
melib/imap: split by lines when reading IDLE unsolicited responses 4 years ago
Manos Pitsidianakis be2d268a20
melib/imap: build uid<>msn cache in {select,examine}_mailbox() 4 years ago
Manos Pitsidianakis 209bd98814
melib/imap: fix cache not being updated in some events 4 years ago
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.
4 years ago
Manos Pitsidianakis e9a80b32ac
melib/imap: small cleanups 4 years ago
Manos Pitsidianakis 14663e46b9
Remove some old TODO comments 4 years ago
Manos Pitsidianakis 4217839155
melib/email: remove Envelope::from_token 4 years ago
Manos Pitsidianakis 96a3da3d7b
melib/imap: fix deflate feature flags 4 years ago
Manos Pitsidianakis f7ac1703e8
melib/notmuch: add watch/refresh methods to backend 4 years ago
Manos Pitsidianakis 341ff9164b
melib/notmuch: add Message,TagIterator,Thread types 4 years ago
Manos Pitsidianakis 8c6c9806b5
Fix some clippy lints 4 years ago
Manos Pitsidianakis fc25c7b165
Fix compiler warnings 4 years ago
Manos Pitsidianakis f7c9f21575
melib/imap: add CONDSTORE support
Closes #52
4 years ago
Manos Pitsidianakis 0f3bf858a3
melib/imap: impl UNSELECT via nonexistent mailbox 4 years ago
Manos Pitsidianakis 876e1bc510
melib/imap: turn ImapResponse From to TryFrom 4 years ago
Manos Pitsidianakis 94433cfc40
melib/backends: cleanup MailBackend trait definition 4 years ago
Manos Pitsidianakis 3eadaba34e
Replace old pseudo-async code with blocking rust async 4 years ago
Manos Pitsidianakis a190805384
melib/backends: Add BackendEvent enum 4 years ago
Manos Pitsidianakis dede8d2a9e
melib/imap: timeout when establishing connection 4 years ago
Manos Pitsidianakis 1affee183a
melib/nntp: fetch all articles of group 4 years ago
Manos Pitsidianakis 92a9127758
melib/notmuch: don't read messages to String 4 years ago
Manos Pitsidianakis 79b2b38e32
melib: add supports_submission backend capability
To be used by NNTP, JMAP and some IMAP servers with BURL capability
4 years ago
Manos Pitsidianakis b2c14abd6e
melib/jmap: add {flag,tag} set support
Closes #61
4 years ago
Manos Pitsidianakis a712bf6c3c
melib/jmap: make backend async
Replace reqwest with isahc which supports async IO
4 years ago
Manos Pitsidianakis 6d61d0651c
melib/jmap: add special keywords to search 4 years ago
Manos Pitsidianakis c88eac1cc5
melib/jmap: implement search
Closes #59
4 years ago
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.
4 years ago
Manos Pitsidianakis 1bdecd62c7
melib/nntp: add AUTH support 4 years ago
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.
4 years ago
Manos Pitsidianakis ec0153e7b2
melib: add protocol extension info in MailBackendCapabilities 4 years ago
Manos Pitsidianakis 522f667350
melib: add experimental NNTP backend
Closes #54
4 years ago
Manos Pitsidianakis 3ac2c12e7a
Small fixes 4 years ago
Manos Pitsidianakis 5c038887db
melib/imap: add MOVE support 4 years ago
Manos Pitsidianakis 9a29f4245f
melib/imap: add COMPRESS=DEFLATE support
Closes #53
4 years ago
Manos Pitsidianakis 8ec0da4fbd
melib/imap: add conf toggle flags for IMAP extensions 4 years ago
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.
4 years ago
Manos Pitsidianakis 32b4c30fee
melib/email.rs: use SmallVec for Address fields 4 years ago
Manos Pitsidianakis cc119c19b0
melib/maildir: send NewFlags events 4 years ago
Manos Pitsidianakis 031e81ac8f
imap: add UntaggedResponse::UIDFetch 4 years ago
Manos Pitsidianakis f41a1ffe3a
imap: remove FLAGS.SILENT from STOREs
Flag updates were not received, because FLAGS.SILENT was used.
4 years ago
Manos Pitsidianakis 3f8aa560f0
melib/MailBackend: add MailBackendCapabilities struct 4 years ago
Manos Pitsidianakis 5a5408ecd5
imap: small fixes 4 years ago
Manos Pitsidianakis 00acba7717
melib/MailBackend: add copy_messages,set_flags,delete_messages methods 4 years ago
Manos Pitsidianakis 1b8529c59c
melib/imap: use LITERAL+ with APPEND
Closes #50
4 years ago
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.
4 years ago
Manos Pitsidianakis 6121f77853
imap: support LIST-STATUS 4 years ago
Manos Pitsidianakis 350c8033b1
imap: use ImapLineIterator in imap_mailboxes() 4 years ago
Manos Pitsidianakis e49c293b01
imap: impl DoubleEndedIterator for ImapLineIterator 4 years ago
Manos Pitsidianakis b9343dfb32
imap: update supported capabilities 4 years ago
Manos Pitsidianakis fadb3634e0
melib: take MailboxHash instead of &Mailbox in fetch*() 4 years ago
Manos Pitsidianakis 9103d05617
melib: s/get/fetch in MailBackend methods 4 years ago
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
4 years ago
Manos Pitsidianakis 32f196143e
melib: add supports_search() method to MailBackend 4 years ago
Manos Pitsidianakis d3391e96c0
mbox: send envelope payload in chunks 4 years ago
Manos Pitsidianakis 08c462801d
melib/mbox: fix not updating mailbox_index on new envelope 4 years ago
Manos Pitsidianakis 97c76cc6a1
melib/error: add ErrorKind struct 4 years ago
Manos Pitsidianakis c7bbf7ed7e
melib: move lookup_ipv4() to connection module 4 years ago
Manos Pitsidianakis 9db6b07b71
Remove some needless clones and stuff (thanks to Clippy) 4 years ago
Manos Pitsidianakis 931863436d
imap: remove blocking imap backend, replace with async 4 years ago
Manos Pitsidianakis b5748c247a
MailBackend: remove connect() method 4 years ago
Manos Pitsidianakis 231471fa8c
MailBackend: add is_{async,online} methods 4 years ago
Manos Pitsidianakis 94e0aa4fe7
MailBackend: change get() ret type to Result<_> 4 years ago
Manos Pitsidianakis a7e177586a
Fix clippy lints 4 years ago
Manos Pitsidianakis bbedeed3e3
More imap async fixes 4 years ago
Manos Pitsidianakis b3876113aa
BackendOp: return future in as_bytes() 4 years ago
Manos Pitsidianakis 1ddde9ccba
BackendOp: change fetch_flags() retval to future 4 years ago