]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Timo Sirainen [Tue, 31 Mar 2020 13:43:07 +0000 (16:43 +0300)]
lib-index: Fix checking if cache should be compressed because it's getting too large
Most importantly fixed updating last_stat_size whenever cache is locked.
This now guarantees that it's always fully up-to-date when it's being
checked. Most of the other places updating last_stat_size are now
unnecessary, but I left them in case they'll be useful in the future.
Fixed also off-by-one where purging was done also when cache was exactly at
its maximum size.
Timo Sirainen [Fri, 27 Mar 2020 16:26:23 +0000 (18:26 +0200)]
lib-index: Check if maximum cache file size has reached only after locking
This avoids race conditions.
Timo Sirainen [Fri, 27 Mar 2020 11:02:37 +0000 (13:02 +0200)]
lib-index: mail_cache_compress_with_trans() - Don't return lock anymore
Now that transaction log is always locked during cache compression, it
doesn't matter if the cache is unlocked before or after the transaction log
commit.
Timo Sirainen [Fri, 27 Mar 2020 11:01:57 +0000 (13:01 +0200)]
lib-index: mail_cache_compress_with_trans() - Require that transaction log is locked
This should be true now for all of its callers.
Timo Sirainen [Mon, 30 Mar 2020 15:05:42 +0000 (18:05 +0300)]
lib-index: mail_cache_compress() - Make sure compression sees the latest changes in index
Timo Sirainen [Fri, 27 Mar 2020 10:53:32 +0000 (12:53 +0200)]
lib-index: mail_cache_compress() - Keep the .log file locked during compression
Timo Sirainen [Fri, 27 Mar 2020 10:44:27 +0000 (12:44 +0200)]
lib-index: Remove mail_cache_compress_forced()
Timo Sirainen [Fri, 27 Mar 2020 10:49:40 +0000 (12:49 +0200)]
doveadm: Rewrite "doveadm mailbox cache purge" to use mail_cache_compress()
Also removed checks to verify whether the cache file existed or was usable.
Compression will create/fix the file, which is more likely to be the wanted
behavior than failing.
Timo Sirainen [Fri, 27 Mar 2020 10:36:40 +0000 (12:36 +0200)]
lib-index: mail_cache_compress*() - Add compress_file_seq parameter
This can be used to specify when the cache file should be compressed.
This was previously hidden in the cache->compress_file_seq field, but
now it's more explicit.
This commit also makes sure that cache is compressed when index rebuilding
is done.
Timo Sirainen [Fri, 27 Mar 2020 10:22:37 +0000 (12:22 +0200)]
lib-index: Use mail_cache_compress() where possible
Timo Sirainen [Fri, 27 Mar 2020 10:19:47 +0000 (12:19 +0200)]
lib-index: Add mail_cache_compress()
Timo Sirainen [Fri, 27 Mar 2020 10:16:02 +0000 (12:16 +0200)]
lib-index: Rename mail_cache_compress() to mail_cache_compress_with_trans()
Timo Sirainen [Fri, 27 Mar 2020 09:33:23 +0000 (11:33 +0200)]
lib-index: mail_cache_decisions_copy() - Create transaction internally
Timo Sirainen [Thu, 26 Mar 2020 16:04:13 +0000 (18:04 +0200)]
lib-index: Simplify opening cache when locking transaction
All this work is already done by mail_cache_lock() or
mail_cache_transaction_lock() after locking has failed.
Timo Sirainen [Fri, 27 Mar 2020 16:07:53 +0000 (18:07 +0200)]
lib-index: If cache transaction lock fails because reset_id mismatch, compress cache
This is also done in mail_cache_transaction_open_if_needed(), so it usually
worked anyway. But that function is otherwise unnecessary, so it's going
away in the next commit.
Timo Sirainen [Thu, 26 Mar 2020 14:54:03 +0000 (16:54 +0200)]
lib-index: Refresh caching decisions from cache file once per transaction
If another process had updated the decisions, mail_cache_field_want_add()
and mail_cache_field_can_add() may have returned obsolete values.
Timo Sirainen [Thu, 26 Mar 2020 14:16:06 +0000 (16:16 +0200)]
lib-index: If cache transaction flush fails, don't discard the last mail's cached data
The last mail's cached data could still be accessed within memory.
This can now be done because the field indexes are internal indexes instead
of file-specific indexes.
Timo Sirainen [Thu, 26 Mar 2020 14:44:26 +0000 (16:44 +0200)]
lib-index: If cache file is compressed during transaction, discard only flushed records
Cache records that are still in memory can be written to the new file.
Timo Sirainen [Thu, 26 Mar 2020 14:01:03 +0000 (16:01 +0200)]
lib-index: Simplify code to add missing header fields to cache
Timo Sirainen [Thu, 26 Mar 2020 13:54:30 +0000 (15:54 +0200)]
lib-index: Add only used fields to cache header, not everything
Timo Sirainen [Thu, 26 Mar 2020 12:59:30 +0000 (14:59 +0200)]
lib-index: Delay using file-specific field numbers in uncommited cache records
While adding data to cache, it's first kept in memory. Previously already
at this time the memory contained cache field numbers specified to the
current cache file. If the cache file was compressed, all the cached data
had to be discarded because the field numbers changed.
This commit changes the file-specific field indexes to internal index
numbers and converts them to file-specific numbers only just before writing
them to the cache file. This sigfinicantly simplifies the code. It also
allows following commits to avoid having to discard the data when cache is
compressed.
This change also required changing the cache lookup code to realize that
the uncommitted data contains internal field indexes.
Timo Sirainen [Wed, 1 Apr 2020 19:08:42 +0000 (22:08 +0300)]
lib-index: Keep a linked list of mail_cache_views
Assert-crash on cache deinit if any views are still open.
Timo Sirainen [Sat, 11 Apr 2020 17:23:54 +0000 (20:23 +0300)]
lib-ntlm: Replace strncpy() with memset()+memcpy()
There was nothing wrong with it, except gcc 9.2 logs a warning about it.
Timo Sirainen [Sat, 11 Apr 2020 17:23:18 +0000 (20:23 +0300)]
lib-imap: test-imap-url - Fix error handling
Timo Sirainen [Sat, 11 Apr 2020 17:21:15 +0000 (20:21 +0300)]
lib-http: Fix generating label for incomplete HTTP server request
Timo Sirainen [Sat, 11 Apr 2020 17:19:55 +0000 (20:19 +0300)]
lib-master: Fix error logging if reading "instances" file fails
The path was written as "(null)" in the error message (or it crashed in some
OSes).
Aki Tuomi [Thu, 24 May 2018 17:01:43 +0000 (20:01 +0300)]
lib-program-client: Do not derefence set when it is NULL.
Found by coverity. Broken in
23cfbf2451f7191dee1d9995011c898a7bf32bd4
Aki Tuomi [Thu, 24 May 2018 17:16:33 +0000 (20:16 +0300)]
log: LOG_OPTION is not supported here
Found by coverity, introduced in
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76
Aki Tuomi [Thu, 24 May 2018 17:14:08 +0000 (20:14 +0300)]
lib-mail: message_header_decode_encoded - ensure num is QCOUNT
Satisifies static analyzers
Aki Tuomi [Thu, 24 May 2018 17:00:31 +0000 (20:00 +0300)]
auth: test-lua - Do not initialize NULL script
Satisfies code analyzers
Aki Tuomi [Thu, 24 May 2018 16:58:16 +0000 (19:58 +0300)]
lib-fts: Assert that data is non-NULL when size > 0
Satisfies code analyzers
Timo Sirainen [Tue, 31 Mar 2020 19:53:35 +0000 (22:53 +0300)]
lib-index: mail_cache_lookup_headers() - Use const for field_idxs[]
Timo Sirainen [Tue, 31 Mar 2020 19:23:37 +0000 (22:23 +0300)]
lib-index: Move MAIL_CACHE_MAX_WRITE_BUFFER to mail-cache-private.h
This will help unit tests.
Timo Sirainen [Tue, 24 Mar 2020 20:23:19 +0000 (22:23 +0200)]
lib-index: unit tests: Split off test_mail_index_close/delete()
Timo Sirainen [Thu, 26 Mar 2020 13:31:48 +0000 (15:31 +0200)]
lib-index: Remove mail_cache_field_private.adding field
This was used to make sure that cache compression didn't drop a field that
was just being added. After previous commit the cache is locked before this
code is even reached, so it's no longer possible.
Timo Sirainen [Mon, 30 Mar 2020 14:18:42 +0000 (17:18 +0300)]
lib-index: Use mail_cache_map_all() wherever possible
Timo Sirainen [Mon, 30 Mar 2020 14:17:11 +0000 (17:17 +0300)]
lib-index: Add mail_cache_map_all()
Timo Sirainen [Tue, 31 Mar 2020 09:51:57 +0000 (12:51 +0300)]
lib-index: mail_cache_transaction_update_index() - Return void since it can't fail
Timo Sirainen [Wed, 1 Apr 2020 14:02:03 +0000 (17:02 +0300)]
lib-index: mail_cache_sync_reset_id() - Move cache unlocking to caller
Timo Sirainen [Wed, 1 Apr 2020 14:00:56 +0000 (17:00 +0300)]
lib-index: Split off mail_cache_sync_reset_id()
Timo Sirainen [Thu, 26 Mar 2020 12:24:27 +0000 (14:24 +0200)]
lib-index: Split off mail_cache_lookup_rec_get_field()
Timo Sirainen [Fri, 20 Mar 2020 14:36:17 +0000 (16:36 +0200)]
lib-index: Split off mail_cache_transaction_forget_flushed()
Timo Sirainen [Fri, 20 Mar 2020 14:42:45 +0000 (16:42 +0200)]
lib-index: mail_cache_header_add_field_locked() - Move unlocking to caller
Timo Sirainen [Fri, 20 Mar 2020 14:29:17 +0000 (16:29 +0200)]
lib-index: Split off mail_cache_header_add_field_locked()
Timo Sirainen [Fri, 20 Mar 2020 14:27:31 +0000 (16:27 +0200)]
lib-index: mail_cache_header_fields_write() - Take cache parameter instead
Timo Sirainen [Fri, 20 Mar 2020 14:23:27 +0000 (16:23 +0200)]
lib-index: Split off mail_cache_trans_get_file_field()
Timo Sirainen [Wed, 25 Mar 2020 15:45:56 +0000 (17:45 +0200)]
lib-index: mail_cache_lock() - Clarify why index->mapping might be TRUE here
Timo Sirainen [Mon, 30 Mar 2020 13:03:07 +0000 (16:03 +0300)]
lib-index: mail_transaction_log_sync_lock() - Fix function's comment
Timo Sirainen [Tue, 7 Apr 2020 10:24:10 +0000 (13:24 +0300)]
lib-auth: Rename auth_client_request_continue event to ...continued
Timo Sirainen [Tue, 7 Apr 2020 09:51:39 +0000 (12:51 +0300)]
auth: auth_request_finished event - Rename translated_username to translated_user
All the other fields are also "user", not "username".
Timo Sirainen [Tue, 7 Apr 2020 09:49:54 +0000 (12:49 +0300)]
auth: auth_request_finished event - Rename original_username to orig_user
This way it matches %{orig_user} variable.
Timo Sirainen [Tue, 7 Apr 2020 09:41:50 +0000 (12:41 +0300)]
auth: Remove unnecessary NULL checks for adding event fields
The NULL values are ignored internally. No need to complicate the code.
Timo Sirainen [Tue, 7 Apr 2020 09:39:56 +0000 (12:39 +0300)]
auth: Remove duplicate "mechanism" field in auth request events
The "mech" field already existed, and it matches %{mech} variable.
Timo Sirainen [Sat, 4 Apr 2020 22:16:08 +0000 (01:16 +0300)]
lib-master: Replace auth-master-client-login category with auth-client
This is just a reimplementation of lib-auth/auth-master code. This commit
also changes lib-master to require lib-auth to get to the category. This
dependency shouldn't really be a problem, since eventually this
master-login-auth code should be replaced by lib-auth anyway.
Timo Sirainen [Sat, 4 Apr 2020 22:13:39 +0000 (01:13 +0300)]
lib-oauth2: Unit tests don't need to link libmaster
Timo Sirainen [Sat, 4 Apr 2020 22:06:44 +0000 (01:06 +0300)]
lib-auth: Replace auth-master-client category with auth-client
The auth-client and auth-master connections are using mostly the same auth
API. Also the auth-master event names were already auth_client_*. So
there's not much point in having separate categories for them - it's just
confusing.
Timo Sirainen [Sat, 4 Apr 2020 22:03:21 +0000 (01:03 +0300)]
push-notification: Rename event category from push_notification to push-notification
All other categories are using "-" instead of "_".
Aki Tuomi [Tue, 14 Apr 2020 17:55:48 +0000 (20:55 +0300)]
lib-dcrypt: Avoid using BN_bn2binpad
It's not available in older versions.
Aki Tuomi [Tue, 14 Apr 2020 15:30:34 +0000 (18:30 +0300)]
lib-dcrypt: Add EC_GROUP_order_bits if missing
Not there in older OpenSSL
Timo Sirainen [Tue, 14 Apr 2020 11:24:43 +0000 (14:24 +0300)]
lib: ostream.h - Fix indent in enum ostream_create_file_flags
Aki Tuomi [Tue, 14 Apr 2020 12:23:20 +0000 (15:23 +0300)]
lib-dcrypt: Require ECDSA signature size is even
Valid ECDSA signature has two parts of equal sizes
Aki Tuomi [Tue, 14 Apr 2020 12:22:20 +0000 (15:22 +0300)]
lib-dcrypt: Pad signature parts to match ECDSA key size
This is required for ECDSA signatures.
Timo Sirainen [Tue, 7 Apr 2020 07:49:10 +0000 (10:49 +0300)]
lib-compression: Add unit tests for gz header handling bugs
Philippe Antoine [Tue, 31 Mar 2020 07:57:38 +0000 (09:57 +0200)]
lib-compression: Fix length checks for zlib header
Timo Sirainen [Tue, 7 Apr 2020 07:19:49 +0000 (10:19 +0300)]
lib-mail: test-message-address - Add unit test for the one byte overread
Note that this is visible only with valgrind.
Philippe Antoine [Thu, 2 Apr 2020 15:28:58 +0000 (17:28 +0200)]
lib-mail: message_address_parse_path() - Fix one byte overread
Timo Sirainen [Fri, 3 Apr 2020 12:32:35 +0000 (15:32 +0300)]
lib-master: If stats_writer_socket_path is empty, don't try to send stats
Timo Sirainen [Thu, 2 Apr 2020 14:45:46 +0000 (17:45 +0300)]
lib-test: test_exit() - Use regular exit() instead of _exit()
Otherwise code coverage output isn't written for the forked process.
Stephan Bosch [Fri, 29 Nov 2019 09:08:42 +0000 (10:08 +0100)]
submission: submission-backend-relay - Abort client command when server command is destroyed.
This fixes segmentation faults occurring when server commands are aborted
(connection is closed).
Stephan Bosch [Wed, 1 Apr 2020 23:49:25 +0000 (01:49 +0200)]
submission: submission-backend-relay - Clear client command in each client command callback.
Stephan Bosch [Wed, 1 Apr 2020 23:37:14 +0000 (01:37 +0200)]
submission: submission-backend-relay - Add assertions for command contexts in callbacks.
Stephan Bosch [Fri, 29 Nov 2019 09:14:50 +0000 (10:14 +0100)]
submission: submission-backend-relay - Rename "helo" parameter to "helo_cmd".
Makes it more consistent with implementation of other non-transaction commands.
Stephan Bosch [Fri, 29 Nov 2019 09:26:26 +0000 (10:26 +0100)]
submission: Reformat submission-backend-relay.c.
michael.slusarz [Wed, 8 Apr 2020 07:55:31 +0000 (07:55 +0000)]
lib: Remove deprecated str_append_n
This causes error when compiling within C++, so easiest to remove as it
is already not being used anywhere
Timo Sirainen [Tue, 11 Feb 2020 09:20:43 +0000 (11:20 +0200)]
lib: var_expand*() - Ignore modifiers for unknown variables
So for example %M{asdf} will return UNSUPPORTED_VARIABLE_asdf instead of MD5
hash of it, which might not be so obvious that it's not working correctly.
Timo Sirainen [Tue, 11 Feb 2020 09:18:53 +0000 (11:18 +0200)]
lib: var_expand*() - Return UNKNOWN_VARIABLE_x if %x is unknown
This was already done for %{long_keys}, just not for single letter keys.
Timo Sirainen [Mon, 6 Apr 2020 08:05:19 +0000 (11:05 +0300)]
dict: Remove "dict client: " log prefix
Almost all log messages from dict process would end up having this prefix.
Stephan Bosch [Thu, 19 Mar 2020 16:14:34 +0000 (17:14 +0100)]
lib-storage: index: imapc: Implement support for SAVEDATE attribute.
Stephan Bosch [Thu, 19 Mar 2020 15:16:03 +0000 (16:16 +0100)]
lib-imap-client: imapc-client - Recognize the new SAVEDATE capability.
Stephan Bosch [Thu, 19 Mar 2020 00:19:40 +0000 (01:19 +0100)]
imap: Implement the standard SAVEDATE capability.
Stephan Bosch [Thu, 19 Mar 2020 00:19:32 +0000 (01:19 +0100)]
lib-storage: mail-search - Add support for the SAVEDATESUPPORTED search item.
Stephan Bosch [Thu, 19 Mar 2020 00:04:53 +0000 (01:04 +0100)]
lib-storage: mail-storage - Change mail_get_save_date() to return 1 when result is reliable.
Aki Tuomi [Thu, 26 Mar 2020 11:14:05 +0000 (13:14 +0200)]
dict-sql: Pass dict event to lib-sql
Aki Tuomi [Tue, 10 Mar 2020 19:48:52 +0000 (21:48 +0200)]
dict: Add events
Aki Tuomi [Tue, 10 Mar 2020 08:31:19 +0000 (10:31 +0200)]
dict-client: Use event based logging
Aki Tuomi [Mon, 11 Jun 2018 13:35:25 +0000 (16:35 +0300)]
dict-redis: Use event based logging
Aki Tuomi [Mon, 11 Jun 2018 13:11:28 +0000 (16:11 +0300)]
dict-memcached: Use event based logging
Aki Tuomi [Mon, 11 Jun 2018 13:03:24 +0000 (16:03 +0300)]
dict-file: Use event based logging
Aki Tuomi [Mon, 11 Jun 2018 12:25:54 +0000 (15:25 +0300)]
lib-dict: Add named events
Aki Tuomi [Wed, 11 Mar 2020 12:59:05 +0000 (14:59 +0200)]
lib-dict: Add event support
Aki Tuomi [Mon, 11 Jun 2018 13:02:26 +0000 (16:02 +0300)]
dict-file: Move error logging higher up
Makes next commit easier.
Patrick Gansterer [Tue, 24 Mar 2020 19:34:17 +0000 (20:34 +0100)]
lib-oauth2: Fix possible timing attack in oauth2_validate_hmac()
Use mem_equals_timing_safe() instead of memcmp() to test the equality of the digest.
Aki Tuomi [Tue, 24 Mar 2020 09:49:07 +0000 (11:49 +0200)]
lib-dict: Add refcounting
This way we do not crash if lookup callback happens after caller
has already called dict_deinit. This is now done because
dict-sql does not support aborting SQL queries. This is hopefully
fixed in future.
Aki Tuomi [Mon, 2 Mar 2020 18:09:48 +0000 (20:09 +0200)]
lib-dict: Add async lookup/commit helpers
Simplifies following commits
Aki Tuomi [Tue, 10 Mar 2020 18:33:50 +0000 (20:33 +0200)]
lib-dict-backend: Use ioloop pointers in parent struct
Aki Tuomi [Tue, 10 Mar 2020 08:49:38 +0000 (10:49 +0200)]
lib-dict: Use ioloop pointers in parent struct
Juha-Petri Tyrkkö [Tue, 24 Mar 2020 11:19:21 +0000 (13:19 +0200)]
lib-dns: Remove superfluous client event and avoid duplicate client connection event unreferencing.
Stephan Bosch [Tue, 17 Mar 2020 08:41:10 +0000 (09:41 +0100)]
lib-smtp: smtp-server-command - Change log label for invalid/unknown command to "[unknown]".
Stephan Bosch [Mon, 16 Mar 2020 22:22:37 +0000 (23:22 +0100)]
lib-smtp: smtp-command-parser - Don't upper-case the parsed command name.
Stephan Bosch [Mon, 16 Mar 2020 21:01:14 +0000 (22:01 +0100)]
lib-smtp: smtp-server-command - Set cmd_name event field only for valid commands.
Set cmd_input_name for the user input.