]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Stephan Bosch [Fri, 1 Oct 2021 22:21:40 +0000 (00:21 +0200)]
lmtp: lmtp-proxy - Forward session ID towards backend.
Stephan Bosch [Fri, 1 Oct 2021 22:21:06 +0000 (00:21 +0200)]
lmtp: lmtp-local - Always add RCPT index to session ID for delivery.
Even when it is 1.
Stephan Bosch [Fri, 1 Oct 2021 22:36:09 +0000 (00:36 +0200)]
lib-smtp: smtp-server-transaction - Base transaction ID on connection session ID.
Composed as "<connection session ID>:<trasaction sequence>".
Stephan Bosch [Fri, 1 Oct 2021 22:32:05 +0000 (00:32 +0200)]
lib-smtp: smtp-server-connection - Manage session ID for the connection.
Stephan Bosch [Fri, 1 Oct 2021 22:29:29 +0000 (00:29 +0200)]
lib-smtp: smtp-server-cmd-xclient - Parse XCLIENT SESSION field.
Stephan Bosch [Fri, 1 Oct 2021 22:16:22 +0000 (00:16 +0200)]
lib-smtp: smtp-client-connection - Send new SESSION field with XCLIENT command.
Stephan Bosch [Mon, 4 Oct 2021 00:02:21 +0000 (02:02 +0200)]
lib-smtp: smtp-client - Use smtp_proxy_data_merge() to copy proxy data in smtp_client_init().
Stephan Bosch [Fri, 1 Oct 2021 22:15:07 +0000 (00:15 +0200)]
lib-smtp: smtp-common - Add SESSION field to proxy data.
Stephan Bosch [Fri, 1 Oct 2021 22:25:50 +0000 (00:25 +0200)]
lib: connection - Add debug message for when property label (peer address) changes.
Stephan Bosch [Fri, 1 Oct 2021 22:26:28 +0000 (00:26 +0200)]
lib: connection - Make connection_update_properties() public.
Stephan Bosch [Fri, 1 Oct 2021 22:24:35 +0000 (00:24 +0200)]
lib: connection - Drop useless newlines.
Aki Tuomi [Thu, 21 Feb 2019 16:50:10 +0000 (18:50 +0200)]
lib-program-client: test-program-client-local - Use dd instead of head
`head -c n` is only guaranteed to print n bytes, but it may consume more.
FreeBSD's implementation of head(1) uses buffered stdio, which did just that.
`dd` consumes exactly the specified number of bytes.
Timo Sirainen [Tue, 10 Aug 2021 11:38:39 +0000 (13:38 +0200)]
login-proxy: Fix potential memory leak if backend login fails
It also needs an abnormal way of destroying the client for the leak to
happen. For example if the login process is being killed.
Stephan Bosch [Mon, 19 Apr 2021 15:36:02 +0000 (17:36 +0200)]
lib-test: fuzzer - Disable error handling for output stream towards program.
Fixes:
Panic: output stream is missing error handling
Stephan Bosch [Mon, 19 Apr 2021 15:34:58 +0000 (17:34 +0200)]
lib-test: fuzzer - Provide names for fuzzer streams.
Stephan Bosch [Sun, 18 Apr 2021 10:33:01 +0000 (12:33 +0200)]
lib-smtp: smtp-server-cmd-helo - Fix crash occurring upon pipelined EHLO with invalid domain.
Failed to check for NULL in domain value for a pipelined EHLO/HELO command.
Timo Sirainen [Wed, 6 Oct 2021 10:20:12 +0000 (13:20 +0300)]
lib: Fix data_stack_get_alloc_size() and data_stack_get_used_size()
It only worked correctly if data stack hadn't been grown. This resulted
in wrong numbers in the data_stack_grow event.
Timo Sirainen [Fri, 1 Oct 2021 12:08:45 +0000 (15:08 +0300)]
virtual: Fix leaking mailboxes if virtual mailbox can't be opened
Fixes also a crash at deinit:
Panic: file mail-user.c: line 232 (mail_user_deinit): assertion failed: ((*user)->refcount == 1)
Timo Sirainen [Mon, 4 Oct 2021 14:25:05 +0000 (17:25 +0300)]
mdbox: Avoid calling container_of() with a NULL pointer
Timo Sirainen [Mon, 4 Oct 2021 12:20:17 +0000 (15:20 +0300)]
sdbox: Avoid calling container_of() with a NULL pointer
Timo Sirainen [Mon, 4 Oct 2021 11:42:54 +0000 (14:42 +0300)]
lib: buffer_free() - Check for buf==NULL before using container_of()
Helps with static analyzer complaints.
Timo Sirainen [Mon, 4 Oct 2021 11:42:14 +0000 (14:42 +0300)]
lib: lib-event - Assert-crash if attempting to use NULL passthrough event
Fixes also complaints from static analyzer.
Timo Sirainen [Mon, 4 Oct 2021 11:22:22 +0000 (14:22 +0300)]
lib: container_of() - Don't check for NULL after all
Adding the explicit NULL checks for container_of() caused caused static
analyzers to think that NULL could be returned at any time. This caused
unnecessary warnings in various places.
Reverts
b178d0792b6335277f7fa831fd7e5403105abd04
Timo Sirainen [Mon, 4 Oct 2021 11:35:03 +0000 (14:35 +0300)]
lib: macros.h - Fix #endif position
Timo Sirainen [Fri, 24 Sep 2021 13:36:41 +0000 (16:36 +0300)]
lib-index: Add more mail_index_ext_name_is_valid() asserts
Timo Sirainen [Fri, 24 Sep 2021 13:35:39 +0000 (16:35 +0300)]
lib-index: Handle invalid extension header names without assert-crashing
Fixes:
Panic: mail_index_ext_register(...): Invalid name
Timo Sirainen [Fri, 24 Sep 2021 13:27:40 +0000 (16:27 +0300)]
lib-index: Add and use mail_index_ext_name_is_valid()
Use it in mail_index_ext_register() instead of the more relaxed
str_sanitize() check.
Timo Sirainen [Fri, 24 Sep 2021 13:32:26 +0000 (16:32 +0300)]
lib-index: Remove unused mail_index_sync_ext_init()
It doesn't look like this was ever used for anything. The initial commit
used only mail_index_sync_ext_init_new().
Timo Sirainen [Thu, 29 Jul 2021 08:37:23 +0000 (11:37 +0300)]
zlib: Handle empty zlib_save_level the same as if it doesn't exist
Timo Sirainen [Thu, 29 Jul 2021 08:29:37 +0000 (11:29 +0300)]
zlib: Fix crash when zlib_save_level is set, but zlib_save is unset
Siavash Tavakoli [Mon, 4 Oct 2021 10:14:04 +0000 (11:14 +0100)]
driver-pgsql: Fix error leak
Timo Sirainen [Mon, 4 Oct 2021 10:37:11 +0000 (12:37 +0200)]
lib-compression: ostream-zlib - Fix non-blocking gz header write
Broken by
373dc6a93da1f6a0ad0c80dbb72566c2b3a295f2
Timo Sirainen [Tue, 3 Aug 2021 17:38:13 +0000 (20:38 +0300)]
lib-storage: mailbox_get_expunge*() - Fix assert-crash on index corruption
This happened in the very unlikely situation that indexes became corrupted
between two mail_transaction_log_view_set() calls.
Fixes:
Panic: file mailbox-get.c: line 112 (mailbox_get_expunges_init): assertion failed: (ret != 0)
Timo Sirainen [Fri, 1 Oct 2021 12:21:38 +0000 (15:21 +0300)]
lib: str_hash() - Ignore integer wrapping with ubsan
ATTR_NO_SANITIZE_INTEGER was already set for other hash functions, but
forgotten for this one.
Fixes e.g.:
Error: hash.c:529:16: runtime error: unsigned integer overflow:
4294967200 + 115 cannot be represented in type ‘unsigned int’
Stephan Bosch [Mon, 27 Sep 2021 22:51:03 +0000 (00:51 +0200)]
lib: ostream-wrapper - Make sure o_stream_finish() has stream_errno != 0 when -1 is to be returned.
Fixes:
Panic: file ostream.c: line 209 (o_stream_flush): assertion failed: (stream->stream_errno != 0)
Siavash Tavakoli [Fri, 1 Oct 2021 09:42:16 +0000 (10:42 +0100)]
driver-cassandra: Fix prepared statement pool leak
sergey.kitov [Thu, 30 Sep 2021 15:42:08 +0000 (18:42 +0300)]
stats: Remove metric from stats dump, when removing dynamically.
Stephan Bosch [Wed, 23 Sep 2020 21:35:53 +0000 (23:35 +0200)]
lib-ssl-iostream: istream-openssl - Remove assert() in i_stream_ssl_read().
Stephan Bosch [Wed, 23 Sep 2020 21:35:30 +0000 (23:35 +0200)]
lib-ssl-iostream: iostream-openssl - Allow plain_input buffer to remain filled in openssl_iostream_bio_input().
Stephan Bosch [Wed, 23 Sep 2020 20:02:41 +0000 (22:02 +0200)]
lib-ssl-iostream: iostream-openssl - Use o_stream_uncork_flush() to uncork the plain output.
This flushes the stream after uncorking it, fixing I/O hang with nested SSL
layers.
Stephan Bosch [Wed, 29 Sep 2021 22:17:47 +0000 (00:17 +0200)]
lib-ssl-iostream: iostream-openssl - Return immediately from openssl_iostream_bio_output() upon error.
Stephan Bosch [Wed, 23 Sep 2020 21:58:12 +0000 (23:58 +0200)]
lib-ssl-iostream: iostream-openssl - Move error handling out of openssl_iostream_bio_output().
Makes the next commit clearer.
Stephan Bosch [Fri, 16 Apr 2021 11:55:06 +0000 (13:55 +0200)]
lib-ssl-iostream: test-iostream-ssl - Make finishing the ssl streams more robust.
Fixes:
Panic: file ostream.c: line 59 (o_stream_close_full): assertion failed: (stream->real_stream->error_handling_disabled)
Stephan Bosch [Fri, 16 Apr 2021 16:18:07 +0000 (18:18 +0200)]
lib-ssl-iostream: test-iostream-ssl - Properly mark client endpoints.
Stephan Bosch [Fri, 16 Apr 2021 16:21:01 +0000 (18:21 +0200)]
lib-ssl-iostream: test-iostream-ssl - Move small_packets_flush_callback().
Stephan Bosch [Fri, 16 Apr 2021 16:19:55 +0000 (18:19 +0200)]
lib-ssl-iostream: test-iostream-ssl - Move bufsize_flush_callback().
Stephan Bosch [Fri, 16 Apr 2021 12:52:34 +0000 (14:52 +0200)]
lib-ssl-iostream: ostream-openssl - Call SSL_shutdown() once stream is finished and buffer is empty.
Stephan Bosch [Fri, 16 Apr 2021 10:31:13 +0000 (12:31 +0200)]
lib: istream - Remove try_alloc_limit.
Stephan Bosch [Fri, 16 Apr 2021 10:27:48 +0000 (12:27 +0200)]
lib-ssl-iostream - iostream-openssl - Use i_stream_read_limited().
Stephan Bosch [Fri, 16 Apr 2021 10:25:43 +0000 (12:25 +0200)]
lib: istream - Add i_stream_read_limited().
Stephan Bosch [Sun, 27 Sep 2020 13:19:05 +0000 (15:19 +0200)]
lib-ssl-iostream: istream-openssl - Simplify i_stream_ssl_read().
Avoid using a stack buffer. Just fill the stream to the maximum buffer size.
Stephan Bosch [Fri, 16 Apr 2021 16:08:50 +0000 (18:08 +0200)]
lib-ssl-iostream: iostream-openssl - Add OPENSSL_IOSTREAM_SYNC_TYPE_NONE.
This is useful for calling openssl_iostream_handle_error() while avoiding
processing more I/O.
Timo Sirainen [Fri, 24 Sep 2021 16:16:43 +0000 (19:16 +0300)]
lib-ssl-iostream: Fix error handling if parent iostream fails
Expand out and remove openssl_iostream_more(). It could have returned
errors to two different locations depending on whether the failure came
from SSL handshake or parent iostream.
Timo Sirainen [Fri, 24 Sep 2021 16:15:22 +0000 (19:15 +0300)]
lib-ssl-iostream: ostream-ssl - Add ssl_io helper variable
Timo Sirainen [Fri, 24 Sep 2021 15:59:29 +0000 (18:59 +0300)]
lib: o_stream_copy_error_from_parent() - Assert-crash if source stream_errno is 0
This can help debug situations where error is missing.
Timo Sirainen [Fri, 24 Sep 2021 15:59:21 +0000 (18:59 +0300)]
global: Call o_stream_copy_error_from_parent() only on errors
Timo Sirainen [Fri, 24 Sep 2021 15:58:02 +0000 (18:58 +0300)]
lib-compression: ostream-zlib - Fix sending partial gz header to parent ostream
This practically wouldn't happen.
Timo Sirainen [Thu, 30 Sep 2021 13:38:23 +0000 (15:38 +0200)]
lib-http: test-http-client-errors - Revert previous retry changes
The real bug is found now, so the previous fix attempt isn't useful.
Reverts
ed1264368a5435c3080871380156978a8951fe26
Timo Sirainen [Thu, 30 Sep 2021 13:32:24 +0000 (15:32 +0200)]
lib-http: test-http-client-errors - Reset USR1 notification signal between tests
The "connection refused" test already set the signal as being received,
which caused the "connection refused backoff" test to randomly fail since it
thought the signal was immediately received.
Stephan Bosch [Fri, 24 Sep 2021 22:48:12 +0000 (00:48 +0200)]
lib: istream-concat - Prevent inheriting SIZE_MAX max buffer size from parent streams.
Only when all parent streams have SIZE_MAX for max buffer size, the concat stream will follow suit.
Timo Sirainen [Mon, 27 Sep 2021 17:35:19 +0000 (20:35 +0300)]
lib-storage: Add mailbox_list.disable_rebuild_on_corruption
If set, don't try to rebuild the mailbox list index even if corruption is
detected.
Timo Sirainen [Fri, 24 Sep 2021 14:59:06 +0000 (17:59 +0300)]
lib-dcrypt: Fix istream-decrypt snapshotting
This is mostly copy&pasted from istream-header-filter.
Michael M Slusarz [Fri, 24 Sep 2021 00:02:17 +0000 (18:02 -0600)]
lib-storage: hide mail_cache_min_mail_count setting
Timo Sirainen [Sat, 25 Sep 2021 22:16:53 +0000 (01:16 +0300)]
master: Avoid leaking master client fds to forked processes
sergey.kitov [Wed, 29 Sep 2021 11:58:22 +0000 (14:58 +0300)]
stats: Improve error message for doveadm stats add.
sergey.kitov [Wed, 29 Sep 2021 11:57:34 +0000 (14:57 +0300)]
stats: Check if metric already exists when adding dynamically.
Timo Sirainen [Tue, 28 Sep 2021 12:35:05 +0000 (15:35 +0300)]
driver-pglsqlpool: Implement sql_get_flags() reliably
Try to use one of the already connected databases. If none were found,
create a new database.
Timo Sirainen [Tue, 28 Sep 2021 12:32:56 +0000 (15:32 +0300)]
driver-pgsql: Implement sql_get_flags() reliably
Some of the flags aren't known until server is connected to, so wait for the
connect to finish if necessary before returning the flags.
Timo Sirainen [Tue, 28 Sep 2021 12:33:47 +0000 (15:33 +0300)]
driver-sqlpool: Implement sql_wait()
Siavash Tavakoli [Mon, 27 Sep 2021 10:59:09 +0000 (11:59 +0100)]
driver-cassandra: Add wait() implementation
Siavash Tavakoli [Mon, 27 Sep 2021 10:58:21 +0000 (11:58 +0100)]
driver-pgsql: Add wait() implementation
Siavash Tavakoli [Mon, 27 Sep 2021 10:48:34 +0000 (11:48 +0100)]
dict-sql: Add "sql_dict_wait()" implementation
lib-sql now has sql_wait().
Siavash Tavakoli [Mon, 27 Sep 2021 10:46:07 +0000 (11:46 +0100)]
lib-sql: Add "wait" vfunc
To be used in backends that support async operations. On deinit dicts
should wait for results and then exit.
Siavash Tavakoli [Mon, 27 Sep 2021 18:43:54 +0000 (19:43 +0100)]
driver-pgsql: Keep a list of pending query results
To be used in wait() to determine if there are pending operations.
Timo Sirainen [Wed, 22 Sep 2021 17:57:06 +0000 (20:57 +0300)]
dict: Wait for all dicts to finish pending operations at shutdown
This also changes the dict process to exit cleanly instead of early via
lib_exit().
Timo Sirainen [Thu, 11 Jul 2019 09:05:37 +0000 (12:05 +0300)]
dict: Unref dict connection immediately when connection is destroyed
The delayed unrefing is needed when calling from dict command callbacks to
avoid calling dict_deinit() too early. But the connection's destroy() vfunc
can't be called directly from dict command callbacks, so there's no need
to add further delays. Especially when this happens at deinit where there is
no possibility of calling the delayed callback anymore.
Siavash Tavakoli [Mon, 27 Sep 2021 10:42:07 +0000 (11:42 +0100)]
driver-pgsql: Fix escaped blob prefix
Escaped strings must be prefixed with double backslash.
Siavash Tavakoli [Mon, 27 Sep 2021 10:35:38 +0000 (11:35 +0100)]
driver-pgsql: Fix assert-crash when using binary fields
array_idx_modifiable() changed behavior in
1d4e5de8414ed93d1c810b30a91ad83d6d954861 and doesn't allocate space
anymore.
Fixes:
Panic: file array.c: line 10 (array_idx_modifiable_i): assertion failed: (idx < array->buffer->used / array->element_size)
Timo Sirainen [Wed, 29 Sep 2021 16:04:37 +0000 (18:04 +0200)]
doveadm mail batch: Fix run() return value on errors
The function always returned 0, even when there was an error. This practically
doesn't fix anything, but makes it work the way it was intended. It also makes
scan-build happier.
Broken by
fd4360e30b695e596a5081a6080152188a12852a
Timo Sirainen [Wed, 22 Sep 2021 16:34:32 +0000 (19:34 +0300)]
mdbox: Add assert to help static analyzers
mdbox_sync_begin() can return 0 with sync_ctx=NULL, but not with the
parameters given here.
Timo Sirainen [Wed, 22 Sep 2021 16:02:24 +0000 (19:02 +0300)]
lib-smtp: smtp_client_transaction_get_state_name() - Fix return value
Only the "new" state was returned correctly, while everything else was
wrong. This didn't really cause problems, because it was used only by
imaptest.
Timo Sirainen [Wed, 22 Sep 2021 15:46:39 +0000 (18:46 +0300)]
lib: Ignore COMPILE_ERROR_IF_TRUE() with --enable-static-checker
Timo Sirainen [Mon, 27 Sep 2021 22:24:24 +0000 (01:24 +0300)]
lib: container_of() - Always return NULL if input pointer is NULL
Timo Sirainen [Wed, 22 Sep 2021 15:40:11 +0000 (18:40 +0300)]
lib: container_of() - Avoid uintptr_t
Using uintptr_t confused Coverity, but char* works fine.
Timo Sirainen [Tue, 28 Sep 2021 21:21:17 +0000 (00:21 +0300)]
indexer: Abort requests if indexer-worker disconnects unexpectedly
Timo Sirainen [Mon, 19 Apr 2021 18:43:17 +0000 (21:43 +0300)]
lib-storage: Add reason_code=mail:header_fields
Timo Sirainen [Mon, 19 Apr 2021 18:38:35 +0000 (21:38 +0300)]
lib-storage: Add more specific mail:* reason_codes in when prefetching
Added:
* mail:attachment_keywords
* mail:date
* mail:snippet
* mail:mime_parts
* mail:imap_envelope
* mail:imap_bodystructure
Timo Sirainen [Thu, 11 Mar 2021 21:38:01 +0000 (23:38 +0200)]
fts: Add reason_code=fts:index and fts:lookup
Note that fts:index won't be used for email opening events, because the
emails are already opened by the indexer precache searching code due to
wanted_fields.
Timo Sirainen [Thu, 9 Sep 2021 13:45:23 +0000 (16:45 +0300)]
lib-storage: Add reason_code=mailbox:*
Added:
* mailbox:create
* mailbox:update
* mailbox:delete
* mailbox:rename
* mailbox:subscribe
* mailbox:unsubscribe
* mailbox:attributes_changed
Timo Sirainen [Wed, 17 Mar 2021 13:15:00 +0000 (15:15 +0200)]
lib-storage: Add reason_code=mailbox:search
Timo Sirainen [Wed, 17 Mar 2021 12:49:24 +0000 (14:49 +0200)]
lib-storage: Add reason_code=mailbox:thread
This is split into a few different locations in the code.
Timo Sirainen [Wed, 17 Mar 2021 15:48:57 +0000 (17:48 +0200)]
lib-storage: Add reason_code=mailbox:vsize*
* mailbox:vsize - mailbox vsize is asked
* mailbox:vsize_update - mailbox vsize is updated (append/expunge)
Timo Sirainen [Wed, 17 Mar 2021 15:48:33 +0000 (17:48 +0200)]
lib-storage: Add reason_code=mailbox:sort
Timo Sirainen [Thu, 11 Mar 2021 17:43:22 +0000 (19:43 +0200)]
lib-storage: Add reason_code=mail:*
* mail:virtual_size
* mail:physical_size
* mail:snippet
* mail:prefetch
* mail:mime_parts
* mail:date
* mail:received_date
* mail:save_date
* mail:storage_id
* mail:pop3_uidl
* mail:pop3_order
* mail:guid
* mail:refcount
* mail:refcount_id
Timo Sirainen [Thu, 11 Mar 2021 17:07:10 +0000 (19:07 +0200)]
lib-storage: Remove mailbox_set_reason()
Event reason_codes should be used instead. Keep the "Mailbox opened"
debug message mainly because it's often used in CI tests.
Timo Sirainen [Thu, 11 Mar 2021 17:06:00 +0000 (19:06 +0200)]
global: Remove mailbox_set_reason() calls
These ones that are left are all rather unnecessary.
Timo Sirainen [Wed, 17 Mar 2021 15:40:46 +0000 (17:40 +0200)]
pop3: Add reason_code=pop3:cmd_<command name> to events
Timo Sirainen [Thu, 11 Mar 2021 17:04:36 +0000 (19:04 +0200)]
pop3: Replace mailbox_set_reason() with reason_code=pop3:initialize
Timo Sirainen [Thu, 11 Mar 2021 15:29:59 +0000 (17:29 +0200)]
virtual: Replace mailbox_set_reason() with reason_code=virtual:config_read
Timo Sirainen [Thu, 11 Mar 2021 15:27:54 +0000 (17:27 +0200)]
trash: Replace mailbox_set_reason() with reason_code=trash:clean