Commit graph

227 commits

Author SHA1 Message Date
cketti
4bed7a595b Remove unused method parameters 2022-02-24 19:56:50 +01:00
cketti
e59f57f602 Remove unused callbacks from MessageRetrievalListener 2022-02-24 19:42:01 +01:00
cketti
a4e1a77892 Switch to mockito-inline 2022-02-03 01:10:52 +01:00
cketti
251a221b3b Stop using AUTH without arguments (POP3)
At least one server software closes the connection right away after receiving the AUTH command without arguments. Since using the AUTH command without arguments never made it into a standard, I decided to completely remove this functionality.
2022-01-25 17:41:48 +01:00
parkerfath
722e6b923f
Change delimiter in address fields from ASCII 0 to 1 (#5863)
Fixes search by sender name.

Co-authored-by: Fath <fath@147dda1a2773.ant.amazon.com>
2022-01-14 19:40:28 +01:00
cketti
878400c15f Explicitly specify locale in case conversion or string formatting 2021-11-26 15:43:28 +01:00
Tobias Preuss
f0d3f371f0 Avoid leaking CountingOutputStream.
+ Affects com.fsck.k9.mail.filter.CountingOutputStream.
2021-11-23 09:45:05 +01:00
cketti
9861fc4d5a Take special care when decoding encoded words with charset ISO-2022-JP 2021-11-03 14:00:29 +01:00
cketti
94548c11a8 Convert DecoderUtil to Kotlin 2021-11-03 11:56:23 +01:00
cketti
abc2f263da Rename .java to .kt 2021-11-03 11:56:23 +01:00
cketti
61046ef0fd Update Mockito (Kotlin) to version 4.0.0 2021-10-30 05:32:51 +02:00
cketti
f564d0247c Merge branch '5.8-MAINT' into main 2021-08-30 21:13:42 +02:00
cketti
32aefc2795 Fix ServerSettings.isMissingCredentials
We support SMTP without authentication and in that case set the username to the empty string :(
2021-08-28 03:13:21 +02:00
cketti
6084321bde Update Kotlin to 1.5.30
Replace calls to deprecated stdlib functions
2021-08-26 17:44:49 +02:00
cketti
c2ae85e2ec Convert FormatFlowedHelper to Kotlin and change API 2021-08-22 17:04:16 +02:00
cketti
108cdfb327 Rename .java to .kt 2021-08-22 16:53:44 +02:00
cketti
9ee3a76ef1 Move format=flowed decoding to MessageExtractor 2021-08-22 16:20:15 +02:00
cketti
6c2f4b6354 Rename FlowedMessageUtils to FormatFlowedHelper 2021-08-22 15:46:26 +02:00
cketti
766cf838e0
Merge pull request #5578 from k9mail/ignore_chat_messages
Add setting to suppress notifications for chat messages
2021-08-21 21:26:45 +02:00
cketti
0ad8ce2c0d Fix check for missing incoming/outgoing server credentials 2021-08-19 23:09:39 +02:00
cketti
652d52b6a6 Add setting to suppress notifications for chat messages
Messages containing a 'Chat-Version' header field will not generate notifications when this setting is enabled.
2021-08-18 11:17:06 +02:00
cketti
7874fe7e11 Properly handle responses to the IDLE command
When waiting for the command continuation request response ignore irrelevant responses and keep track of relevant untagged responses.
2021-08-13 16:32:30 +02:00
cketti
03caacc1a7 Make RealImapConnection (somewhat) thread-safe 2021-07-13 16:01:24 +02:00
cketti
5232a1a962 Ignore IOExceptions when sending DONE (Push)
Errors with the connection are dealt with in the receiver thread.
2021-07-13 15:09:09 +02:00
cketti
d96641d7a0 Remove optimization to reduce the number of times a wakelock is acquired
ImapConnection.isDataAvailable() didn't reliably work on all devices (returned true when no complete IMAP response was available). This lead to situations where a wakelock was being held the whole time the IDLE command was active. At the same time no alarm was set to refresh the IDLE connection. So most of the time the blocking read would time out.
2021-07-09 18:06:13 +02:00
cketti
152424b20c Add a way to close all open IMAP connections
Use a "connection generation" value to mark all connections that have been created since the last closeAllConnections() call. Using that value we can recognize "old" connections that have not been in the connection pool at the time closeAllConnections() was called. We close them as soon as they are passed to releaseConnection().
2021-07-03 20:04:05 +02:00
cketti
ebbe02c057 Add ImapPushConfigProvider 2021-06-23 15:34:31 +02:00
cketti
aa9f6eaefa Add IdleRefreshTimeoutProvider 2021-06-23 14:02:07 +02:00
cketti
ca13a32fec Add ImapFolderPusher to listen for changes to an IMAP folder 2021-06-12 21:09:30 +02:00
cketti
db2b9c746f Add ImapFolderIdler that uses IMAP's IDLE command to listen for changes 2021-06-10 21:40:36 +02:00
cketti
63d9872755 Introduce additional interfaces so RealImapFolder is decoupled from RealImapStore 2021-06-10 21:00:58 +02:00
cketti
94f630cf88 Introduce ImapStore interface 2021-06-10 21:00:58 +02:00
cketti
55c54555ff Introduce ImapFolder interface 2021-06-09 16:15:12 +02:00
cketti
d0fa865e1f Rename ImapFolder.kt to RealImapFolder.kt 2021-06-09 16:15:12 +02:00
cketti
ededa33ff2 Use enum class for ImapFolder.open() argument 2021-06-09 16:15:12 +02:00
cketti
3041a787d6 Introduce ImapConnection interface
The implementation is now called RealImapConnection.
2021-06-09 16:15:12 +02:00
cketti
4a65c5b4a0 Improve logging in MessageExtractor.getTextFromPart() 2021-06-02 00:49:23 +02:00
cketti
45a7942202
Merge pull request #5294 from k9mail/ImapFolder_fixes 2021-05-11 19:58:31 +02:00
cketti
d5c8c35fec Remove ImapFolder caching
The cache was causing problems when a folder was accessed in two threads at the same time. There was also no invalidation mechanism that removed folders that had been removed from the server.

The easy fix is to get rid of this cache. There's no state in ImapFolder that survives closing the folder anyway.
2021-05-10 17:47:54 +02:00
cketti
d25d451201 Remove unused ImapFolder properties 2021-05-10 01:32:04 +02:00
cketti
769d658e5a Correctly persist message download state
Add the flag X_DOWNLOADED_FULL when the message has been downloaded completely, the flag X_DOWNLOADED_PARTIAL when only the text of a message has been downloaded, and set no additional flag when only the envelope and structure of the message has been downloaded. The latter happens when we fetch remote search results.
2021-05-10 00:47:27 +02:00
cketti
5444d8be3a Remove explicit dependency on Kotlin's standard library 2021-04-22 03:54:15 +02:00
cketti
632d8f3cb7 Upgrade Mockito-Kotlin to 3.1.0 2021-04-22 03:54:15 +02:00
cketti
428ae60a58 Split Backend.fetchMessage() into two methods
The two new methods now also save the downloaded message data instead of returning a Message instance.
MessageStore.saveRemoteMessage() will now replace a message if it already exists.
2021-04-17 00:04:58 +02:00
cketti
4e4babeea6 Change K9BackendFolder.saveMessage() to use MessageStore 2021-04-15 01:19:18 +02:00
cketti
24f55ee03e Add test for RetrieveMessageOperations.getHeaders() 2021-04-01 01:32:46 +02:00
cketti
0e1ff7d6b1 Remove LocalKeyStore's dependency on Android's Context
And lazily initialize the KeyStore so we're not doing any work when the instance is created.
2021-03-30 22:08:06 +02:00
cketti
bb1c9c32be Convert 'LocalKeyStore' to Kotlin 2021-03-30 22:06:12 +02:00
cketti
ac0a2525f7 Rename .java to .kt 2021-03-30 21:34:28 +02:00
cketti
f47862d789 Add tests for LocalKeyStore 2021-03-30 21:34:28 +02:00