]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Aki Tuomi [Mon, 8 May 2023 05:38:20 +0000 (08:38 +0300)]
lib-oauth2: Validate scope when configured
Aki Tuomi [Mon, 8 May 2023 05:23:39 +0000 (08:23 +0300)]
lib-oauth2: Remove typ check
It is not really useful. And mostly just keeps breaking when people
invent new kty values.
Aki Tuomi [Mon, 8 May 2023 05:21:43 +0000 (08:21 +0300)]
lib-oauth2: Ensure aud field has client_id when set.
OpenID Connect 1.0 specification says that "aud" field must contain
OAuth 2.0 client_id of the Relying Party as an audience value.
Marco Bettini [Tue, 9 May 2023 07:22:15 +0000 (07:22 +0000)]
lib-storage: Add mail_get_message_id_no_validation()
Timo Sirainen [Mon, 8 May 2023 08:08:51 +0000 (11:08 +0300)]
imap: NOTIFY delayed notifications sent soon after handling IMAP commands
If a change happened within 1 second after any IMAP command was finished,
the notification wasn't sent until some other change/command occurred.
Marco Bettini [Fri, 5 May 2023 15:20:34 +0000 (15:20 +0000)]
auth: mech_gssapi_unwrap() - Release gss_release_buffe(outbuf) before returning
Marco Bettini [Tue, 2 May 2023 09:18:57 +0000 (09:18 +0000)]
imap-urlauth: Move imap-urlauth-login to its own directory
Aki Tuomi [Tue, 2 May 2023 08:40:53 +0000 (11:40 +0300)]
build-aux/git-abi-version-gen: Fail if no version found
Aki Tuomi [Tue, 2 May 2023 07:55:36 +0000 (10:55 +0300)]
build-aux/git-abi-version-gen: Allow .git to just exist
Fixes compatibility with monolith.
.git can also be a file, pointing to an external location
for the actual git repository. This usually happens when
code is a subrepository.
Aki Tuomi [Thu, 20 Apr 2023 20:27:57 +0000 (23:27 +0300)]
lib: guid - Add guid_uuid4_generate()
Generates a UUIDv4 UUID
Aki Tuomi [Tue, 25 Apr 2023 12:01:29 +0000 (15:01 +0300)]
dict-sql: Use array for type names
Ensures that type names match with enum.
Aki Tuomi [Thu, 20 Apr 2023 13:08:10 +0000 (13:08 +0000)]
dict-sql: Add support for UUID type
Aki Tuomi [Thu, 20 Apr 2023 13:00:54 +0000 (13:00 +0000)]
lib-sql: driver-cassandra - Support binding UUID
Aki Tuomi [Thu, 20 Apr 2023 12:45:45 +0000 (12:45 +0000)]
lib-sql: Add UUID datatype
sergey.kitov [Thu, 20 Apr 2023 07:44:03 +0000 (10:44 +0300)]
imap: set 'internal' flag for NOTIFY-CALLBACK command.
sergey.kitov [Thu, 20 Apr 2023 07:41:37 +0000 (10:41 +0300)]
imap: Add 'internal' flag to struct client_command_context.
imap_command_finished event is not issued when the flag is set.
Aki Tuomi [Tue, 25 Apr 2023 07:38:05 +0000 (10:38 +0300)]
autogen: Always overwrite old files
Aki Tuomi [Tue, 25 Apr 2023 06:28:06 +0000 (09:28 +0300)]
build-aux: Update version scripts to support rolling releases
For ABI version, we do the following
2023.1 => 2023.ABIv1
2023.1-1 => 2023.ABIv1
2023.1-1+foo5 => 2023.ABIv1
2.4.0 => 2.4.ABIv0
2.4.0-1 => 2.4.ABIv0
2.4.0-1+foo5 => 2.4.ABIv0
Empty version produces 0.0.ABIv0
Timo Sirainen [Thu, 20 Apr 2023 08:43:55 +0000 (11:43 +0300)]
lib-storage: Send mail_user_session_finished via mail_user_unref()
The purpose of mail_user_deinit() is to guarantee that the user gets freed
at that point - there's no requirement to call it instead of
mail_user_unref(). Move the mail_user_session_finished event sending to
mail_user_unref() where the rest of the deinitialization code is as well.
This also fixes mail_user_session_finished event being wrongly sent in some
shared mailbox failure code paths. Potentially it fixes also missing
mail_user_session_finished events in some code paths.
Marco Bettini [Wed, 19 Apr 2023 14:35:42 +0000 (14:35 +0000)]
lazy-expunge: lazy_expunge_mail_is_last_instance() - Don't fail if a backend mailbox was deleted under a virtual one
Marco Bettini [Thu, 20 Apr 2023 08:25:32 +0000 (08:25 +0000)]
virtual - void virtual_box_copy_error() - Wrap src->mailbox_deleted to MAIL_ERROR_EXPUNGED
Marco Bettini [Wed, 19 Apr 2023 13:38:48 +0000 (13:38 +0000)]
virtual: virtual_sync_backend_boxes() - Don't fail on deleted backend boxes
Marco Bettini [Thu, 6 Apr 2023 15:07:15 +0000 (15:07 +0000)]
virtual: virtual_transaction_commit() - Don't fail when a backend box was removed and no changes are pending for it
Marco Bettini [Thu, 6 Apr 2023 15:03:38 +0000 (15:03 +0000)]
virtual: virtual_transaction_commit() - Propagate error details from commits of underlying physical boxes
Marco Bettini [Thu, 6 Apr 2023 14:58:30 +0000 (14:58 +0000)]
virtual: virtual_transaction_commit() - Use array_foreach_elem()
Marco Bettini [Thu, 13 Apr 2023 08:03:57 +0000 (08:03 +0000)]
lib-storage: index_list_mailbox_open() - Check that mailbox has not been deleted
Without this, removing a mailbox (obox) used in a virtual box
fails to understand that the box has been removed intentionally
and tries to recreate/rebuild it.
Marco Bettini [Thu, 6 Apr 2023 14:55:41 +0000 (14:55 +0000)]
virtual: Use container_of()
Timo Sirainen [Tue, 18 Apr 2023 13:16:59 +0000 (16:16 +0300)]
imap-urlauth: Don't access login_set.*_socket_path after they're freed from data stack
Forgotten in
7f4bcbb9f2d97745a12d301b9ee276200ac58605
Marco Bettini [Fri, 14 Apr 2023 13:04:07 +0000 (13:04 +0000)]
fts-solr: fts_backend_solr_update_deinit() Avoid double commit
Soft-commit is already handled in fts_backend_solr_update_set_mailbox(),
except for the expunges.
Marco Bettini [Fri, 14 Apr 2023 13:03:27 +0000 (13:03 +0000)]
fts-solr: Commit when changing mailbox
Soft-commit before fts_index_set_last_uid() to prevent new items being
missed in next search.
Marco Bettini [Fri, 14 Apr 2023 13:00:34 +0000 (13:00 +0000)]
fts-solr: Extract fts_backend_solr_commit()
sergey.kitov [Wed, 12 Apr 2023 09:06:52 +0000 (12:06 +0300)]
lib-storage: Rollback save transaction when transaction commit fails.
Timo Sirainen [Fri, 14 Apr 2023 08:35:30 +0000 (11:35 +0300)]
lib-login: Don't update process title if verbose_proctitle=no
Broken by
4fcd7f497577af361fc3313fbc07a61c14e17715
Timo Sirainen [Tue, 11 Apr 2023 11:26:52 +0000 (14:26 +0300)]
doveadm dump index: Add support for virtual2 header
Timo Sirainen [Tue, 11 Apr 2023 08:13:27 +0000 (11:13 +0300)]
doveadm-save: Add -r received-date parameter
Timo Sirainen [Tue, 11 Apr 2023 08:01:15 +0000 (11:01 +0300)]
lib-storage: mail_parse_human_timestamp() - Add support for imap date-time
Timo Sirainen [Tue, 11 Apr 2023 07:51:52 +0000 (10:51 +0300)]
lib-storage: test-mail-storage - Simplify mail_parse_human_timestamp() testing
Timo Sirainen [Mon, 13 Jun 2022 07:39:17 +0000 (10:39 +0300)]
doveadm save: Add -U <uid> and -g <guid> parameters
These are mainly useful for testing.
sergey.kitov [Fri, 17 Feb 2023 16:09:59 +0000 (18:09 +0200)]
lib-storage: Set attachment file size metadata.
sergey.kitov [Fri, 17 Feb 2023 16:08:09 +0000 (18:08 +0200)]
lib-fs: Replace missing sis files with spaces, when attachment file size metadata is set.
sergey.kitov [Wed, 8 Mar 2023 11:38:59 +0000 (13:38 +0200)]
lib: Move istream-nonuls from lib-mail to lib.
sergey.kitov [Fri, 17 Feb 2023 16:06:07 +0000 (18:06 +0200)]
lib-fs: Add fs metadata key for file size.
sergey.kitov [Thu, 16 Feb 2023 14:25:14 +0000 (16:25 +0200)]
lib-fs: Disable sis writing.
sergey.kitov [Fri, 3 Feb 2023 15:57:32 +0000 (17:57 +0200)]
lib-storage: Remove duplicated include
Karl Fleischmann [Thu, 6 Apr 2023 07:04:35 +0000 (09:04 +0200)]
stats: stats_metrics_add_dynamic() - Validate event exporter
Timo Sirainen [Wed, 5 Apr 2023 18:27:51 +0000 (21:27 +0300)]
notify: Change notify_unregister() to zero the pointer, and ignore NULL
Timo Sirainen [Tue, 4 Apr 2023 08:51:22 +0000 (11:51 +0300)]
notify-status: Fix crash if user initialization fails
The deinit code crashed if mail_namespaces_created hook hadn't been called
before user was deinitialized.
Timo Sirainen [Mon, 3 Apr 2023 21:43:55 +0000 (00:43 +0300)]
dsync: Fix handling mailboxes with % character when BROKENCHAR isn't explicitly set in config
When vname_escape_char (= BROKENCHAR) isn't explicitly set in configuration,
'%' character (or if it was hierarchy separator, '~') was used as the default
internal escape character. However, this was used inconsistently between local
and remote mailbox trees. The remote tree stored the mailbox names unescaped,
while the local mailbox names were escaped. This inconsistency caused dsync
to do unnecessary mailbox renames, which might have ended up failing.
This especially fixes dsync failures when mailbox name ended with the '%'
character.
Timo Sirainen [Mon, 3 Apr 2023 21:43:04 +0000 (00:43 +0300)]
dsync: Refactor dsync_brain_mailbox_to_parts() into dsync_mailbox_name_to_parts()
Karl Fleischmann [Tue, 4 Apr 2023 08:31:14 +0000 (10:31 +0200)]
lib-dns: dns_lookup_timeout() - Append timeout value in error message
Marco Bettini [Fri, 31 Mar 2023 12:40:57 +0000 (12:40 +0000)]
imap-login: Handle each command in its own data stack frame
Marco Bettini [Thu, 23 Mar 2023 15:37:28 +0000 (15:37 +0000)]
lib-master: stats_client_deinit() - Ensure conn.output is flushed before returning
This prevents losing exported events still waiting in buffers while the process exits.
Marco Bettini [Mon, 27 Mar 2023 08:19:38 +0000 (08:19 +0000)]
lib-master: stats_event_callback() - Skip if conn.output is already closed
This also prevents further errors from happening on the closed stream.
Marco Bettini [Fri, 24 Mar 2023 14:04:00 +0000 (14:04 +0000)]
lib-master: stats_client_send_event() - Also flush conn.output and check for errors
Marco Bettini [Thu, 23 Mar 2023 15:35:49 +0000 (15:35 +0000)]
lib-master: stats_event_write() - Don't accumulate more than IO_BLOCK_SIZE bytes in str buffer
Timo Sirainen [Thu, 23 Mar 2023 20:23:39 +0000 (22:23 +0200)]
master: Fix service { idle_kill } to work better on busy servers
The previous behavior was to kill a process once it had idled for idle_kill
seconds. However, on a busy server the new connections are picked up somewhat
randomly by all the idling processes, so there's never any single process
idling for a long time. This effectively prevents the idle_kill from killing
any processes, even if there are unnecessarily many of them.
The new behavior here tracks the lowest number of idling processes during
idle_kill time interval. Then it kills that many processes. If the load
stays the same, this should shrink the number of processes to the number
that is needed to handle the load, but no more.
Timo Sirainen [Thu, 23 Mar 2023 14:07:26 +0000 (16:07 +0200)]
master: Replace per-process idle_kill timeout with per-service
This is much more efficient, since it doesn't have to keep updating the
timeout constantly for busy processes.
This change still preserves the original way the idle_kill setting behaves.
Timo Sirainen [Thu, 23 Mar 2023 14:37:08 +0000 (16:37 +0200)]
master: Add asserts to make sure counters don't wrap
Timo Sirainen [Thu, 23 Mar 2023 14:36:10 +0000 (16:36 +0200)]
master: Add service.process_idling to count number of idling processes
Timo Sirainen [Thu, 23 Mar 2023 13:09:43 +0000 (15:09 +0200)]
master: Split processes list to busy and idling processes
Keep the idling processes sorted by idle_start time. This will be needed
by the next commit.
Timo Sirainen [Thu, 30 Mar 2023 11:23:31 +0000 (14:23 +0300)]
lib: backtrace_append() with libc - Remove dead code
04d6a2e763bce8640a8192298025d0717e425a66 changed the "out of memory" case to
be handled by returning an error instead. This is better than returning
unnamed backtrace pointers, which aren't very useful.
Karl Fleischmann [Wed, 1 Mar 2023 13:44:09 +0000 (14:44 +0100)]
login-imap, imap: Truncate excessively large IMAP ID parameters in log messages
Karl Fleischmann [Mon, 6 Mar 2023 14:59:11 +0000 (15:59 +0100)]
imap-login: Do not log login ID parameter
Special IMAP ID parameters are used when proxying to retain additional
values from the original client, these should not produce any log
entries.
Karl Fleischmann [Mon, 6 Mar 2023 14:56:05 +0000 (15:56 +0100)]
imap-login: Clarify variable naming of login ID param
client_try_update_info() returns a boolean value that represents whether
the given key has a login ID parameter handler, i.e. it is a login ID
parameter. This commit changes the name to represent this more clearly.
Karl Fleischmann [Wed, 1 Mar 2023 13:42:37 +0000 (14:42 +0100)]
config: Deprecate imap_id_log setting
Karl Fleischmann [Wed, 1 Mar 2023 13:41:46 +0000 (14:41 +0100)]
lib-imap: Remove obsolete ID parameter log functions
Karl Fleischmann [Wed, 1 Mar 2023 13:40:24 +0000 (14:40 +0100)]
imap-login: Log Pre-login ID parameters as the imap_id_received event
Drop the manual filtering of the 'imap_id_log' fields in favor of using
a named event and respective log string.
Karl Fleischmann [Wed, 1 Mar 2023 13:38:15 +0000 (14:38 +0100)]
imap: Log Post-login ID parameters as the imap_id_received event
Drop the manual filtering of the 'imap_id_log' fields in favor of using
a named event and respective log string.
Karl Fleischmann [Wed, 1 Mar 2023 13:27:21 +0000 (14:27 +0100)]
lib-imap: Add function to log IMAP ID parameters
Karl Fleischmann [Wed, 22 Mar 2023 07:57:25 +0000 (08:57 +0100)]
imap-login: Prevent memory leak if ID command gets disconnected before finishing
Marco Bettini [Mon, 20 Mar 2023 14:00:48 +0000 (14:00 +0000)]
virtual: virtual_backend_box_lookup() - Enforce callers to check if the call succeeded
Marco Bettini [Fri, 24 Mar 2023 13:50:29 +0000 (13:50 +0000)]
virtual: virtual_sync_apply_existing_expunges() - Don't crash if the backend mailbox has been removed
Timo Sirainen [Sun, 26 Mar 2023 20:48:20 +0000 (23:48 +0300)]
lib: data_stack_grow event - Add backtrace_error field
This field is set if backtrace_get() failed.
Timo Sirainen [Sun, 26 Mar 2023 20:46:54 +0000 (23:46 +0300)]
lib: backtrace_get/append() - Add error_r parameter
Aki Tuomi [Tue, 21 Mar 2023 07:13:35 +0000 (09:13 +0200)]
lib: process-stat - Use eacces_error_get() for EACCES errno
This tells better why the open failed.
Aki Tuomi [Tue, 21 Mar 2023 07:05:12 +0000 (09:05 +0200)]
lib: process-stat - Increase maximum /proc/self/status size
Kernel 6.x has larger status file.
Aki Tuomi [Tue, 21 Mar 2023 06:55:55 +0000 (08:55 +0200)]
lib: process-stat - Use buffer_append_full_istream() to read files
Timo Sirainen [Fri, 24 Mar 2023 01:26:33 +0000 (03:26 +0200)]
global: Enable login_server_settings.update_proctitle
Timo Sirainen [Fri, 24 Mar 2023 01:26:11 +0000 (03:26 +0200)]
lib-login: Add login_server_settings.update_proctitle
Update the current login state in process title when enabled.
Timo Sirainen [Fri, 24 Mar 2023 02:02:28 +0000 (04:02 +0200)]
lib-login: Keep connection in server's linked list until it's fully freed
Otherwise the connection isn't accessible from any global variables.
Timo Sirainen [Fri, 24 Mar 2023 00:29:39 +0000 (02:29 +0200)]
imap: Update process title while unhibernating
Previously the process title stayed as [idling] even though the process was
busy waiting on the imap-hibernate process to finish sending the
unhibernation request.
Timo Sirainen [Fri, 24 Mar 2023 00:00:37 +0000 (02:00 +0200)]
lib-master: Set process title to [initializing] until master_service_init_finish()
Timo Sirainen [Fri, 24 Mar 2023 00:02:58 +0000 (02:02 +0200)]
lib: Add process_title_get_counter()
Timo Sirainen [Thu, 23 Mar 2023 23:53:43 +0000 (01:53 +0200)]
master: Set VERBOSE_PROCTITLE environment to child processes
This is needed for updating process title during initialization before
settings are read.
Sam James [Mon, 27 Mar 2023 01:25:12 +0000 (02:25 +0100)]
lib: md5: Fix strict aliasing violation
Followup to
f0c1cf42ea78d22e2674b03fe65f0ee6545c5b99 . It's exactly the
same code as in md4, so let's rip it out here too.
Aki Tuomi [Fri, 24 Mar 2023 06:53:27 +0000 (08:53 +0200)]
stats: openmetrics - Set field always when used
Satisfied static analysers.
Broken in
ba19a18d54cb7cf7de93d6a235862a408cfe5828
Martin Liska [Fri, 24 Mar 2023 12:33:13 +0000 (13:33 +0100)]
lib: md4 - Fix violation of strict aliasing.
Fix miscompilation when LTO is enabled.
Timo Sirainen [Thu, 23 Mar 2023 23:45:34 +0000 (01:45 +0200)]
imap: Improve disconnection log message if it happens immediately after unhibernation
The "No commands sent after unhibernation" can mean that imap-hibernate
process saw a timeout while unhibernating and shutdown the connection.
Or it can also mean just that the client itself disconnected.
Timo Sirainen [Thu, 23 Mar 2023 23:41:37 +0000 (01:41 +0200)]
imap-hibernate: If unhibernation fails, make sure imap process won't finish it later on
Especially if unhibernation fails due to a connection timeout to imap
process due to high load, it's possible that the imap process will
eventually finish the unhibernation and continue with the client. This is
rather confusing, since imap-hibernate process already logged that the
client got disconnected.
Timo Sirainen [Thu, 23 Mar 2023 23:15:21 +0000 (01:15 +0200)]
imap: Disconnect imap-master client if it's not sending anything for 25 seconds
Stephan Bosch [Fri, 10 Mar 2023 03:12:20 +0000 (04:12 +0100)]
lib-imap-urlauth: imap-urlauth - Make sure a host name is available in imap_urlauth_check_hostport().
Addresses FIXME.
Stephan Bosch [Fri, 10 Mar 2023 02:59:03 +0000 (03:59 +0100)]
lib-imap-urlauth: imap-urlauth - Make struct imap_url parameters const.
Stephan Bosch [Wed, 22 Feb 2023 00:59:42 +0000 (01:59 +0100)]
imap-urlauth: imap-urlauth-worker-client - Use the input_args handler of the connection API.
Stephan Bosch [Tue, 21 Feb 2023 03:08:08 +0000 (04:08 +0100)]
imap-urlauth: imap-urlauth-worker-client - Use generic line input handling from connection API.
Stephan Bosch [Tue, 21 Feb 2023 01:42:50 +0000 (02:42 +0100)]
imap-urlauth: imap-urlauth-worker - Fully perform client-to-server VERSION handshake with connection API.
Stephan Bosch [Tue, 21 Feb 2023 02:27:39 +0000 (03:27 +0100)]
imap-urlauth: imap-urlauth-worker - Perform client-to-server VERSION handshake in separate function.
Stephan Bosch [Tue, 21 Feb 2023 02:13:01 +0000 (03:13 +0100)]
imap-urlauth: imap-urlauth-worker - Enable connection API's server-to-client VERSION handling.
Stephan Bosch [Tue, 21 Feb 2023 00:33:15 +0000 (01:33 +0100)]
imap-urlauth: imap-urlauth-worker - Use connection API's client-to-server VERSION handling.
Requires reordering sending FDs with VERSION line.
Stephan Bosch [Wed, 15 Feb 2023 15:16:26 +0000 (16:16 +0100)]
imap-urlauth: imap-urlauth-worker - Use the connection.h API.
Stephan Bosch [Tue, 14 Feb 2023 18:18:04 +0000 (19:18 +0100)]
imap-urlauth: imap-urlauth-client - Use the connection.h API.