Alexander Krotov
4714fb6887
Reset server_folder and server_uid in Imap.empty_folder()
...
This way we avoid trying to delete already deleted messages in the future.
2020-03-09 01:21:12 +03:00
Alexander Krotov
82b4647b95
Update dc_truncate() comment
2020-03-02 23:09:38 +03:00
Alexander Krotov
0c770a8b37
Fix Origin::AddressBook spelling
2020-03-02 22:57:22 +03:00
Alexander Krotov
fbabe27fc1
Make add_or_lookup errors non-fatal in add_address_book()
2020-03-02 14:08:20 +01:00
Alexander Krotov
63baac3c61
Update rPGP to 0.4.1
...
This version fixes incorrect serialization of ECC session keys with
leading zeros.
2020-03-01 20:52:08 +03:00
Alexander Krotov
3c342339a1
imap: use parse_message_id from mimeparser
2020-02-22 16:41:07 +01:00
Alexander Krotov
33463856c5
Use mailparse::msgidparse to parse Message-IDs
2020-02-22 16:41:07 +01:00
Alexander Krotov
508b8ef2e2
Improve documentation, mostly by hiding behind pub(crate)
2020-02-20 23:37:13 +03:00
Alexander Krotov
840e321dd9
Process Permanent and Transient SMTP errors
2020-02-20 01:30:21 +01:00
Alexander Krotov
d9dda44409
Add integration test for RSA and Ed25519 keys
...
Test that two chat clients using different key types can communicate
using Autocrypt.
2020-02-18 17:51:06 +01:00
Alexander Krotov
7368c01a8f
Add key_gen_type config option
2020-02-18 17:51:06 +01:00
Alexander Krotov
21ac5be7ca
Change generated key type to Ed25519
...
rPGP generates EdDSA and and ECDH keys using Ed25519 only, so there is
no need to specify it explicitly anywhere.
2020-02-18 17:51:06 +01:00
Alexander Krotov
66d3440675
Update const.py
2020-02-18 11:58:11 +03:00
Alexander Krotov
6b6be3b03d
Fix some "`" code markup
2020-02-18 05:06:11 +03:00
Alexander Krotov
bcbf192bbc
Remove deprecated Chat-Group-Image header
2020-02-17 13:41:50 +01:00
Alexander Krotov
78d855c5ca
Include prefer-encrypt attribute in Autocrypt-Gossip headers
2020-02-17 13:39:32 +01:00
Alexander Krotov
1fa9aa88a8
Search for Flag::Deleted and Flag::Seen with == instead of match
2020-02-17 10:50:34 +01:00
Alexander Krotov
08c77c2668
fetch_single_msg: use if let Some(...) instead of is_empty()
2020-02-17 10:50:34 +01:00
Alexander Krotov
793ebe1b0f
imap: move IdleHandle from session.rs to idle.rs
2020-02-17 10:50:34 +01:00
Alexander Krotov
4c42acc7e1
Factor src/imap/session.rs out of src/imap/client.rs
2020-02-17 10:50:34 +01:00
Alexander Krotov
4eb9660bfa
Move src/imap_client.rs into src/imap/client.rs
2020-02-17 10:50:34 +01:00
Alexander Krotov
8ed08f701d
Do not use grpid to find last inserted row in chats table
...
Instead, use last_insert_rowid() function to find the row.
There is no race condition in using last_insert_rowid(), because
last_insert_rowid() returns row id last inserted in this connection. As
we hold the connection during the whole transaction, it is impossible
that some other thread will execute INSERT statement in parallel.
This commit is part of the effort to get rid of sql::get_rowid hack and
use transactions more for related SQL statements.
2020-02-17 01:35:56 +03:00
Alexander Krotov
784964efad
Make sql::with_conn and sql::start_stmt public
...
Existing public methods that use these functions, like sql::execute, are
only suitable for executing a single statement.
Sometimes it is useful to execute multiple statements within one
connection, for example to begin a transaction, execute mutliple SELECT
and INSERT queries and commit or rollback the whole transaction.
2020-02-17 01:35:56 +03:00
Alexander Krotov
adb96e72b9
Pass mutable Connection reference to with_conn callback
...
This makes it possible to call .transaction() method on connection.
2020-02-17 01:35:56 +03:00
Alexander Krotov
439c6f7296
Fix a typo
2020-02-17 01:35:56 +03:00
Alexander Krotov
2977ceb459
Turn deltachat::configure functions into Context methods
...
Now configure module is no longer public. Users should call
Context.configure() and Context.is_configured() methods.
Configure module is completely hidden from documentation unless
--document-private-items option is specified.
2020-02-16 21:17:03 +01:00
Alexander Krotov
e00d4e0ed8
Remove AvatarAction::None
...
Where needed, Option<AvatarAction> can be used to extend it.
2020-02-16 15:03:37 +03:00
Alexander Krotov
772127d9d8
Remove outdated comment
...
delete_msg no longer returns an integer
2020-02-16 03:43:25 +03:00
Alexander Krotov
5a4040cf0b
cargo fmt
2020-02-16 03:22:30 +03:00
Alexander Krotov
b54f580e66
mimeparser: allow "inline" attachments
...
RFC 2183 specifically allows filenames to be specified for MIME parts
with "inline" Content-Disposition.
Previously we treated such attachments as an error, causing the whole
message parsing to fail. Now it is only an error if Content-Disposition
cannot be parsed.
MIME parts with filename are now considered to be attachments
regardless of their Content-Disposition type. However, "attachment"
Content-Disposition is still processed differently: we generate a
filename for it even if it is not specified.
2020-02-16 03:22:30 +03:00
Alexander Krotov
b80360b7da
Pass avatar file path to build_selfavatar_file as &str
2020-02-15 22:20:05 +03:00
Alexander Krotov
2753883687
Rename add_selfavatar into attach_selfavatar to match field name
2020-02-15 21:22:25 +03:00
Alexander Krotov
672fe2dfd7
Parse KML without converting to UTF-8 and back to bytes
2020-02-14 22:34:41 +01:00
Alexander Krotov
04bb6997a2
Remove unused imap::idle::Error::ImapError variant
2020-02-14 22:33:36 +01:00
Alexander Krotov
9008a65c14
Remove DC_IMAP_SEEN constant
...
Replace "flags" integer with a "seen" boolean.
2020-02-13 13:55:06 +01:00
Alexander Krotov
4e07e4c7f3
Fix a typo (bbc-self instead of bcc-self)
2020-02-12 23:15:04 +03:00
Alexander Krotov
beb91271de
Unlock session before calling add_flag_finalized
...
add_flag_finalized tries to lock session again and IMAP thread deadlocks
if session is not unlocked.
2020-02-12 11:38:18 +00:00
Alexander Krotov
7e9585ebc5
cargo fmt
2020-02-12 11:38:18 +00:00
Alexander Krotov
0c4b3f71e5
Check for MOVE capability before using MOVE command
2020-02-12 11:38:18 +00:00
Alexander Krotov
52520635ea
Fix a typo ("requests")
2020-02-11 22:32:35 +03:00
Alexander Krotov
489e5111ac
GitHub actions: check all packages, examples, tests and features
2020-02-11 02:09:47 +03:00
Alexander Krotov
2d4c20af35
Revert "Make dc_receive_imf non-public"
...
This reverts commit cabb58a9aa .
dc_receive_imf() is used in the "repl" example.
This was not caught by CI because it does not build examples.
2020-02-11 02:03:36 +03:00
Alexander Krotov
66fdb447f7
Rename get_headerdef into get_header_value
2020-02-11 01:59:41 +03:00
Alexander Krotov
c801775a39
Implement get_headerdef method for MailHeader slices
2020-02-11 01:59:41 +03:00
Alexander Krotov
f5bb57d6a6
Fix a typo ("Messag")
2020-02-11 00:07:37 +03:00
Alexander Krotov
1071ab05db
Move created_db_entries into cleanup closure instead of borrowing
2020-02-10 23:31:46 +03:00
Alexander Krotov
bb10501f56
Improve test_one_account_send_bcc_setting
...
Clone the first account and check that second device actually sees the
message copied via BCC-to-self.
2020-02-10 01:17:28 +01:00
Alexander Krotov
c4d5f657da
python tests: remove peek_online_config()
...
Using peek_online_config() results in a message being sent to some
other account, used by previous test. If tests are run in parallel,
for example with pytest-xdist, we could be sending a message to a still
online DC client.
2020-02-10 01:17:28 +01:00
Alexander Krotov
cabb58a9aa
Make dc_receive_imf non-public
2020-02-09 23:30:06 +00:00
Alexander Krotov
e64ce5bb4f
Reduce is_msgrmsg_rfc724_mid_in_list scope to pub(crate)
2020-02-09 23:28:29 +00:00
Alexander Krotov
bc750d61d2
Remove outdated comment
2020-02-09 23:28:29 +00:00
Alexander Krotov
3150901b6e
Improve logs for prefetch checks
2020-02-09 23:28:29 +00:00
Alexander Krotov
4f6745b742
Check if contact is blocked or accepted before downloading it
2020-02-09 23:28:29 +00:00
Alexander Krotov
bcdc323a97
Factor from_field_to_contact_id out of dc_receive_imf
2020-02-09 23:28:29 +00:00
Alexander Krotov
4fd4cc709d
Prefetch FROM field
2020-02-09 23:28:29 +00:00
Alexander Krotov
0fac463144
Prefetch Message-ID header instead of envelope
...
Envelope has the same Message-ID, but using other fields from the
envelope, such as From field, is error-prone. They may contain values
different from the message body. As we don't parse the envelope later on,
it is better not to fetch it during prefetch too.
2020-02-09 23:28:29 +00:00
Alexander Krotov
d809dfac65
Do not download messages that are not displayed
2020-02-09 23:28:29 +00:00
Alexander Krotov
983fd70260
Update imap-proto to 0.10.2
...
It adds support for parsing of BODY[HEADER.FIELDS (...)] fetches.
2020-02-09 23:28:29 +00:00
Alexander Krotov
ea11a5274e
Remove unwrap() in prefetch_get_message_id
2020-02-09 23:28:29 +00:00
Alexander Krotov
42356c2a67
Fix a typo in prefetch_get_message_id
2020-02-09 23:28:29 +00:00
Alexander Krotov
5a84ab2011
Fix a typo (s/ideling/idling/)
2020-02-09 23:28:29 +00:00
Alexander Krotov
b4573e341f
Return &'static str from HeaderDef.get_headername()
2020-02-09 19:17:27 +01:00
Alexander Krotov
df252c4704
Do not check for XLIST capability
...
This capability is not used by Delta Chat. Moreover, XLIST is deprecated
in favor of https://tools.ietf.org/html/rfc6154 , which should be
supported instead. Delta Chat already looks for \Sent attribute in
get_folder_meaning().
2020-02-09 19:15:20 +01:00
Alexander Krotov
d1912f873b
Resultify fetch_single_msg
2020-02-09 19:14:36 +01:00
Alexander Krotov
1ca23a7479
Update link to C core issue
2020-02-09 03:28:59 +03:00
Alexander Krotov
61daf7218d
Preconfigure the key in clone_online_account()
...
This avoids generating the key in test_ac_setup_message
2020-02-08 22:39:34 +00:00
Alexander Krotov
f34237ebc8
Run python tests on CI in debug mode
...
This should speed up compilation and enable additional integer overflow checks.
2020-02-08 16:58:55 +01:00
Alexander Krotov
aadeb3b87e
job: do not render messages without recipients
2020-02-08 16:58:55 +01:00
Alexander Krotov
0864e640ed
Simplify Peerstate.peek_key()
2020-02-08 00:02:42 +01:00
Alexander Krotov
c7eca8deb3
chat: resultify parent_is_encrypted and don't ignore the error
...
This should prevent accidental sending of unencrypted messages when
parent_is_encrypted returns an error. For example, if the database is
busy due to other thread activity, parent_is_encrypted should not return
false. Instead, message sending job should retry later.
2020-02-04 02:54:56 +03:00
Alexander Krotov
627b54f712
sql: add resultified version of query_get_value
2020-02-04 02:54:56 +03:00
Alexander Krotov
8ef7b6fc54
mimeparser: pass the Context around explicitly
2020-02-03 23:48:55 +03:00
Alexander Krotov
d83652b0fc
Add standard reference for UID FETCH quirk
2020-02-02 12:46:31 +00:00
Alexander Krotov
61726168d6
examples/simple.rs: fix clippy warnings
2020-01-29 23:29:34 +03:00
Alexander Krotov
893eb8b73b
Move message size limits to constants
...
Corresponding C code:
https://github.com/deltachat/deltachat-core/blob/d31c82478c4410b6f575e501c565f627521e05a2/src/dc_context.h#L165
2020-01-28 23:32:38 +03:00
Alexander Krotov
07a5ee7d2c
mimeparser: construct MimeMessage at the end of from_bytes()
...
This reduces the scope of code dealing with mutable structures.
2020-01-28 17:46:16 +03:00
Alexander Krotov
c7a300be2f
mimeparser: split parse_headers() into multiple functions
2020-01-28 17:46:16 +03:00
Alexander Krotov
ef842fca89
Increase python test timeout to 90 seconds
2020-01-28 17:44:34 +03:00
Alexander Krotov
bdbe9e1ca5
fix(python): add more checks for _thread_quitflag
2020-01-28 17:44:34 +03:00
Alexander Krotov
0c7f65222c
fix(python): add workaround for interrupt_idle race condition
2020-01-28 17:44:34 +03:00
Alexander Krotov
cf7ccb5b8c
configure: do not format! an empty string
2020-01-26 16:51:51 +01:00
Alexander Krotov
b83e6f6e7c
Simplify MsgId.is_special()
2020-01-26 16:19:01 +01:00
Alexander Krotov
2687777a82
Remove unused EmailAddress::new()
2020-01-26 16:18:34 +01:00
Alexander Krotov
3a08929b05
Print "email" JSON-value if it has a wrong type
2020-01-26 12:28:42 +00:00
Alexander Krotov
033a44580c
Turn get_[fresh_]msg_cnt() into ChatId members
2020-01-25 22:11:13 +00:00
Alexander Krotov
4734bcfbb4
Update Chat.unarchive() comment
2020-01-25 22:11:13 +00:00
Alexander Krotov
099fe6f477
Rename Chat.set_blocking() into set_blocked()
2020-01-25 22:11:13 +00:00
Alexander Krotov
889327b5f6
Rename Chat.archive() into Chat.set_archived()
2020-01-25 22:11:13 +00:00
Alexander Krotov
a2845f44ab
Turn ChatId-related functions into methods
2020-01-25 22:11:13 +00:00
Alexander Krotov
a7477516d1
mimefactory: factor out get_location_kml_part
2020-01-25 17:44:19 +00:00
Alexander Krotov
bf3eab453c
Avoid panic in sanitise_name()
...
.truncate() is not safe because it panics if string length does not
lie on character boundary. We convert the string to characters and take
first n character instead.
2020-01-25 13:04:56 +01:00
Alexander Krotov
ebab893330
dc_tools: remove unused dc_derive_safe_stem_ext()
...
It had the same .truncate() bug as BlobObject::sanitise_name()
2020-01-25 13:04:56 +01:00
Alexander Krotov
4c67b3a118
Add failing test_sanitise_name() test
2020-01-25 13:04:56 +01:00
Alexander Krotov
64026fde7c
Store main part of the message outside of "parts" vector
2020-01-22 04:28:35 +00:00
Alexander Krotov
adcdae4abe
Factor get_message_kml_part out of render_message
2020-01-22 04:28:35 +00:00
Alexander Krotov
90a4303c8e
Make it possible to compile with stable Rust
2020-01-21 19:50:42 +03:00
Alexander Krotov
84a5276ab0
Fix build
...
0f52f63863 rebase broke the build
2020-01-21 17:17:51 +03:00
Alexander Krotov
1732c3b350
Reduce the scope of clippy exceptions
...
This prevents creation of new overly complex functions.
2020-01-21 14:49:53 +01:00
Alexander Krotov
0f52f63863
Add "Auto-Submitted: auto-replied" header to MDNs
...
This header is specified in RFC 3834.
2020-01-21 16:29:18 +03:00
Alexander Krotov
a3f2088046
Fix the message printed on job success
...
"Cannot be retried" does not make it clear if the job succeeded or failed.
2020-01-20 10:47:32 +01:00