]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Timo Sirainen [Thu, 11 Feb 2021 23:54:48 +0000 (01:54 +0200)]
doveadm: Add doveadm_setting_roots_*() API for plugins to register settings
Timo Sirainen [Mon, 15 Feb 2021 15:11:07 +0000 (17:11 +0200)]
doveadm: Move settings reading code into doveadm-settings.c
This code is now shared between doveadm and doveadm-server.
Timo Sirainen [Fri, 12 Feb 2021 17:17:25 +0000 (19:17 +0200)]
lib-master: Add master_service_settings_input.extra_modules
This allows specifying more than one module.
Timo Sirainen [Fri, 12 Feb 2021 17:15:44 +0000 (19:15 +0200)]
lib-master: master_service_exec_config() - Build argv using dynamic array
Aki Tuomi [Mon, 10 May 2021 21:07:24 +0000 (00:07 +0300)]
auth: auth-worker - Respect service_count
If service_count is set, then auth-worker will stop after
given number of requests.
Timo Sirainen [Thu, 20 May 2021 12:54:04 +0000 (15:54 +0300)]
imap: Improve sending internal error to client if initialization fails
The "Internal server error" should be sent using the same ostream that
was created. Also if service_user initialization failed there was no
OK reply to sent to login.
Timo Sirainen [Thu, 20 May 2021 12:42:45 +0000 (15:42 +0300)]
imap: Send initial tagged reply directly using ostream
This simplifies the following commits.
Timo Sirainen [Thu, 20 May 2021 10:22:18 +0000 (13:22 +0300)]
imap: Send initial tagged reply and capability after rawlogs are initialized
This way the initial tagged reply and capability is written to the rawlog.
Broken by
16328738d35370685387ec51d20657265855e770
Timo Sirainen [Thu, 20 May 2021 10:16:40 +0000 (13:16 +0300)]
imap: Split client_add_input_capability() into two functions
Timo Sirainen [Thu, 20 May 2021 10:14:00 +0000 (13:14 +0300)]
imap: Rename struct client_input to imap_login_request
This better indicates what it is about, and causes less confusion with
all the other client_input variables.
Timo Sirainen [Mon, 8 Mar 2021 14:45:08 +0000 (16:45 +0200)]
pop3: Handle pipelined input via istream-concat
This fixes rawlog_dir to work properly. It didn't log the pipelined input
to rawlog and it may have also caused the connection to hang.
Timo Sirainen [Mon, 8 Mar 2021 14:44:31 +0000 (16:44 +0200)]
pop3: Move finishing istream to client_create_finish()
Timo Sirainen [Mon, 8 Mar 2021 14:55:49 +0000 (16:55 +0200)]
imap: Handle pipelined input from imap-hibernate via istream-concat
Similarly to the previous commit, this fixes issues with rawlog.
Timo Sirainen [Mon, 8 Mar 2021 14:37:15 +0000 (16:37 +0200)]
imap: Handle pipelined input via istream-concat
This fixes rawlog_dir to work properly. It didn't log the pipelined input
to rawlog and it may have also caused the connection to hang.
Timo Sirainen [Mon, 8 Mar 2021 14:33:50 +0000 (16:33 +0200)]
imap: Move iostream-rawlog creation to client_create_finish()
This allows the caller to modify the istream before rawlog.
Timo Sirainen [Mon, 8 Mar 2021 14:33:33 +0000 (16:33 +0200)]
lib: Add i_stream_copy_fd()
Markus Valentin [Fri, 14 May 2021 13:57:20 +0000 (15:57 +0200)]
acl: Fix broken LIST for shared namespaces
Due to the recent changes in the usage of the acl_ignore_namespace
setting shared namespaces where trying to use fast listing too. This
resulted in wrong LIST IMAP command outputs when using acl plugin.
Broken by
dc8ecd38a7e54b8bb80ae97712a0d8ad4edcbed3
Aki Tuomi [Wed, 12 May 2021 16:06:27 +0000 (19:06 +0300)]
lib-lua: dlua-compat - Undefine lua_isinteger
It's being defined in compat to return boolean, so undefine it
here to make sure it compiles. Broken in
b59e89ebd97fa52de25b8e976a7dfe61f0d8a639
Markus Valentin [Fri, 30 Apr 2021 09:34:51 +0000 (11:34 +0200)]
acl: Prevent crashes with acl_ignore_namespace
In case a namespace was ignored for ACLs an crash could occur because of
"Module context acl_storage_module missing". This panic is prevented by this
change.
Markus Valentin [Thu, 6 May 2021 08:18:10 +0000 (10:18 +0200)]
acl: Move static acl_namespace_is_ignored
Timo Sirainen [Thu, 18 Feb 2021 10:41:51 +0000 (12:41 +0200)]
lib-program-client: Change program_client_run*() to return enum program_client_exit_status
Their behavior is clearer when result is expressed as enum than int.
Timo Sirainen [Thu, 18 Feb 2021 10:33:06 +0000 (12:33 +0200)]
lib-program-client: Rename "exit_code" to "exit_status"
exit_code typically refers to the numeric 0..255 value that processes exit
with.
Timo Sirainen [Thu, 18 Feb 2021 10:30:50 +0000 (12:30 +0200)]
lib-program-client: Move enum program_client_exit_code to public .h file
Aki Tuomi [Mon, 10 May 2021 16:46:53 +0000 (19:46 +0300)]
lib-lua: dlua-dovecot - Ref event on push
Matches with unref on __gc.
Aki Tuomi [Mon, 10 May 2021 16:23:48 +0000 (19:23 +0300)]
lib-lua: test-lua - Use bool for expected_isnum in check_tointegerx_compat
Aki Tuomi [Mon, 10 May 2021 16:21:50 +0000 (19:21 +0300)]
lib-lua: Define lua_isinteger as boolean function
Aki Tuomi [Mon, 19 Apr 2021 11:51:05 +0000 (14:51 +0300)]
lib-lua: Fix error reporting for script loading
Aki Tuomi [Mon, 19 Apr 2021 11:45:56 +0000 (14:45 +0300)]
lib-lua: Use dluaL_error for luaL_error
Aki Tuomi [Fri, 16 Apr 2021 10:19:26 +0000 (13:19 +0300)]
lib-lua: Fix luaL_error usage
Aki Tuomi [Fri, 16 Apr 2021 10:11:20 +0000 (13:11 +0300)]
lib-lua: Add dluaL_error
Aki Tuomi [Fri, 16 Apr 2021 10:10:41 +0000 (13:10 +0300)]
lib-lua: dlua-script - Add dlua_pushfstring
Uses full sprintf
Aki Tuomi [Thu, 15 Apr 2021 08:19:52 +0000 (11:19 +0300)]
lib-lua: dlua-wrapper - Constify extra functions
Timo Sirainen [Tue, 11 May 2021 14:53:57 +0000 (16:53 +0200)]
lib-index, lib-compression: Fix explicit integer wrapping
Using modulo instead of AND wrapped it one number too early.
Luckily these didn't break anything.
Timo Sirainen [Wed, 5 May 2021 09:45:25 +0000 (12:45 +0300)]
lib: abort() on unexpected exit()
This can especially be useful in catching bugs in Lua script that could
unexpectedly exit.
Timo Sirainen [Wed, 5 May 2021 09:44:03 +0000 (12:44 +0300)]
global: Replace exit() with lib_exit()
Stephan Bosch [Wed, 14 Apr 2021 08:45:55 +0000 (10:45 +0200)]
lib-http: http-client-peer - Fix segfault occurring upon backoff connect.
If peers decide to close and destroy immediately, the iteration in the shared
peer yields an invalid pointer for the next peer to connect. Fixed by preserving
pointer to next peer inside the loop.
Josef 'Jeff' Sipek [Fri, 30 Apr 2021 20:59:50 +0000 (16:59 -0400)]
lib: event filter - Avoid using event field wildcard matching when not needed
If the right hand side of an event field comparison is not using any
wildcards, we can compare using strcasecmp() instead of the more expensive
wildcard_match_icase().
This wildcard matching avoidance change speeds up matching quite a bit.
When the desired comparison is *not* a wildcard match (i.e., the filter is
'fieldname=abc'), microbenchmarks show at least a 11% speedup in filter
matching speed. When the comparison includes a wildcard (i.e., the filter
is 'fieldname=abc*'), microbenchmarks show approximately 0.9% filer matching
slowdown.
Since there are so many non-wildcard matches in a typical filter, this is a
very good trade-off.
Josef 'Jeff' Sipek [Fri, 30 Apr 2021 20:39:15 +0000 (16:39 -0400)]
lib: event filter - Rename EVENT_FILTER_NODE_TYPE_EVENT_FIELD to denote wildcard matching
Josef 'Jeff' Sipek [Fri, 30 Apr 2021 16:41:55 +0000 (12:41 -0400)]
lib: event filter - Avoid using event name wildcard matching when not needed
If the right hand side of an event name comparison is not using any
wildcards, we can compare using strcmp() instead of the more expensive
wildcard_match().
This wildcard matching avoidance change speeds up matching quite a bit.
When the desired comparison is *not* a wildcard match (i.e., the filter is
'event=abc'), microbenchmarks show at least a 30% speedup in filter matching
speed. When the comparison includes a wildcard (i.e., the filter is
'event=abc*'), microbenchmarks show approximately 0.4% filer matching
slowdown.
Since there are so many non-wildcard matches in a typical filter, this is a
very good trade-off.
Josef 'Jeff' Sipek [Fri, 30 Apr 2021 16:44:17 +0000 (12:44 -0400)]
lib: event filter - Rename EVENT_FILTER_NODE_TYPE_EVENT_NAME to denote wildcard matching
Josef 'Jeff' Sipek [Fri, 30 Apr 2021 18:09:10 +0000 (14:09 -0400)]
lib: Add wildcard_is_literal to check if a mask has * or ?
Timo Sirainen [Mon, 10 May 2021 08:26:54 +0000 (11:26 +0300)]
lib: test-env-util - Make static analyzer happy
Aki Tuomi [Thu, 6 May 2021 18:25:54 +0000 (21:25 +0300)]
lib-dict: dict-lua - Don't yield again until previous one has completed
Aki Tuomi [Tue, 4 May 2021 09:15:55 +0000 (12:15 +0300)]
lib-dict: dict-lua - Use absolute stack positions for arguments
Aki Tuomi [Wed, 5 May 2021 10:40:29 +0000 (13:40 +0300)]
acl: Reinitialize local acl object after creating mailbox
For INDEX layout this is needed to actually get the local mailbox path.
This fixes inheriting ACLs from parent folder for INDEX layouts.
Timo Sirainen [Wed, 5 May 2021 15:18:29 +0000 (18:18 +0300)]
lib: Add unit tests to env-util
Timo Sirainen [Wed, 20 Jan 2021 18:53:53 +0000 (20:53 +0200)]
lib-index: Use env_put() instead of putenv() directly
Timo Sirainen [Wed, 20 Jan 2021 18:51:56 +0000 (20:51 +0200)]
configure, lib: Remove workarounds for unsetenv()
It's in POSIX.1-2001 and available on all modern systems.
Timo Sirainen [Wed, 20 Jan 2021 18:48:24 +0000 (20:48 +0200)]
lib: env_put() - Use setenv() instead of putenv()
It's already in POSIX.1-2001 so it should be available everywhere.
Timo Sirainen [Wed, 20 Jan 2021 18:46:27 +0000 (20:46 +0200)]
lib, global: Change env_put() API to take name,value pair
Timo Sirainen [Wed, 20 Jan 2021 18:45:11 +0000 (20:45 +0200)]
lib-program-client, script: Use env_put_array()
Timo Sirainen [Wed, 20 Jan 2021 18:42:40 +0000 (20:42 +0200)]
lib: Add env_put_array()
Timo Sirainen [Tue, 20 Apr 2021 16:06:19 +0000 (18:06 +0200)]
util/dovecot-sysreport: Finish report even if doveadm calls fail
It can be useful to generate the report even when dovecot isn't running.
Timo Sirainen [Thu, 1 Apr 2021 11:16:34 +0000 (14:16 +0300)]
util/dovecot-sysreport --core: Support multiple core files
Timo Sirainen [Thu, 1 Apr 2021 11:12:14 +0000 (14:12 +0300)]
util/dovecot-sysreport --core: Check gdb existence earlier
Simplifies the next commit.
Timo Sirainen [Thu, 1 Apr 2021 11:09:42 +0000 (14:09 +0300)]
util/dovecot-sysreport --core: Change binary path to be optional
If not specified, detect it from the core file itself
Timo Sirainen [Wed, 5 May 2021 22:08:50 +0000 (01:08 +0300)]
global: Use array_idx_elem() where possible
Timo Sirainen [Tue, 4 May 2021 13:40:09 +0000 (16:40 +0300)]
lib: Add array_idx_elem()
This returns array_idx()'s value dereferenced, so it only works for
arrays of pointers.
Note that using *array_idx() does the same, but it won't compile if the
compiler doesn't have typeof() support.
Timo Sirainen [Wed, 10 Feb 2021 20:06:29 +0000 (22:06 +0200)]
lib: Remove array_swap()
It's not used anywhere, and it's a bit too weird.
Timo Sirainen [Wed, 10 Feb 2021 19:45:58 +0000 (21:45 +0200)]
global: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:45:41 +0000 (21:45 +0200)]
lib-fts: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:45:19 +0000 (21:45 +0200)]
submission: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:43:18 +0000 (21:43 +0200)]
stats: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:35:04 +0000 (21:35 +0200)]
lib-smtp: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:31:16 +0000 (21:31 +0200)]
lib-old-stats: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:20:25 +0000 (21:20 +0200)]
config: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:18:42 +0000 (21:18 +0200)]
plugins: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:09:42 +0000 (21:09 +0200)]
master: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:03:16 +0000 (21:03 +0200)]
lib-index: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 19:01:06 +0000 (21:01 +0200)]
lib-imap-client: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 18:58:20 +0000 (20:58 +0200)]
lib-http: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 18:45:50 +0000 (20:45 +0200)]
lib-dict: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 18:44:08 +0000 (20:44 +0200)]
imap: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 18:41:27 +0000 (20:41 +0200)]
doveadm: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 18:34:25 +0000 (20:34 +0200)]
director: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 18:25:30 +0000 (20:25 +0200)]
auth: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 18:13:52 +0000 (20:13 +0200)]
lib-storage: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 18:06:07 +0000 (20:06 +0200)]
lib: Use array_foreach_elem() where possible
Timo Sirainen [Wed, 10 Feb 2021 17:53:25 +0000 (19:53 +0200)]
lib: array.h - Update array_foreach*() comments
Timo Sirainen [Wed, 10 Feb 2021 17:49:00 +0000 (19:49 +0200)]
lib: array.h - Require C99
We're already requiring C99 elsewhere.
Timo Sirainen [Wed, 5 May 2021 14:49:33 +0000 (17:49 +0300)]
lib: array_foreach_elem() - Don't allow using it for sizes larger than a pointer
Dovecot doesn't use any types larger than the pointer size (e.g. long
double). Restricting it to max pointer size might prevent inefficient usage.
Timo Sirainen [Wed, 10 Feb 2021 17:47:13 +0000 (19:47 +0200)]
lib: array_foreach_elem() - Small optimization
Avoid having to recalculate the end of the array after each loop.
This makes the resulting assembler output similar to array_foreach().
Timo Sirainen [Thu, 1 Apr 2021 14:24:10 +0000 (17:24 +0300)]
lib-index: Try harder to open index with MAIL_INDEX_OPEN_FLAG_READONLY
The readonly-flag is used when rebuilding index or dumping indexes.
In both cases it's better to try to open the index as best as possible,
since fsck isn't allowed.
Josef 'Jeff' Sipek [Thu, 6 May 2021 19:17:05 +0000 (15:17 -0400)]
lib-lua: Remove obsolete threading check
We support multiple lua thread as long as they are created using the
dlua_script_new_thread() helper.
Timo Sirainen [Wed, 5 May 2021 13:47:43 +0000 (16:47 +0300)]
dict-ldap: Fix calling dict_wait() on async lookup
The dict_wait() could have waited forever because nothing stopped the
ioloop. Also fix calling the callback with the proper active ioloop.
Timo Sirainen [Wed, 5 May 2021 13:41:21 +0000 (16:41 +0300)]
dict-redis: dict-client: Use the proper active ioloop while calling commit() callbacks
If the callbacks did any IO/timeout changes, they would have gone to a wrong
ioloop. This would have caused a warning about IO/timeout leak though, so
it doesn't seem like there were such code paths currently.
Timo Sirainen [Wed, 5 May 2021 13:37:52 +0000 (16:37 +0300)]
dict-memcached-ascii: Assert-crash if dict ioloop gets any unexpected IOs or timeouts
Timo Sirainen [Mon, 22 Mar 2021 15:05:24 +0000 (17:05 +0200)]
dict-client: Assert-crash if dict ioloop gets any unexpected IOs or timeouts
Timo Sirainen [Mon, 22 Mar 2021 14:50:04 +0000 (16:50 +0200)]
dict-client: Use the proper active ioloop while calling commit() and lookup() callbacks
If the callbacks did any IO/timeout changes, they would have gone to a wrong
ioloop.
Timo Sirainen [Mon, 22 Mar 2021 14:59:09 +0000 (16:59 +0200)]
lib: Add io_loop_is_empty()
Timo Sirainen [Wed, 5 May 2021 08:19:24 +0000 (11:19 +0300)]
stats: Truncate field values to 1000 bytes with log exporter
This attempts to prevent log lines from growing longer than 4 kB, which
causes them to wrap.
Timo Sirainen [Tue, 4 May 2021 11:12:20 +0000 (14:12 +0300)]
imap: copy/move: Refresh source mailbox before copying/moving
This way if another session had just expunged mails, the expunges will be
noticed and the copy/move will abort early.
Timo Sirainen [Thu, 29 Apr 2021 12:49:00 +0000 (15:49 +0300)]
imap: move: Sync source mailbox between commits
This way the messages are actually expunged from storage after the commit,
not just requested to be expunged. Most importantly this means that if
another session attempts to start moving the same messages it can be noticed
earlier and one of the moves aborted.
Timo Sirainen [Thu, 29 Apr 2021 12:45:44 +0000 (15:45 +0300)]
imap: Add imap_search_anyset_to_uidset()
Timo Sirainen [Thu, 29 Apr 2021 12:46:48 +0000 (15:46 +0300)]
imap: Allow imap_search_seqset_iter_init() to iterate over uidset also
Timo Sirainen [Thu, 29 Apr 2021 12:43:10 +0000 (15:43 +0300)]
lib-storage: Fix mailbox_get_uid_range() to handle "*" correctly
Previously attempting to convert e.g. 1:* range would just assert-crash.
There were no such callers currently though.
Timo Sirainen [Thu, 29 Apr 2021 12:39:29 +0000 (15:39 +0300)]
lib-storage: Always set struct mail.expunged
Previously it was set only when some error noticed that there was a problem
accessing the mail. Now this is set immediately in mail_set_seq(). This
allows e.g. IMAP COPY/MOVE to abort when it encounters expunged mails.
Stephan Bosch [Tue, 4 May 2021 00:19:07 +0000 (02:19 +0200)]
lib-program-client: test-program-client-unix - Add test for delayed disconnect after sending result code.
Stephan Bosch [Mon, 3 May 2021 21:54:11 +0000 (23:54 +0200)]
lib-program-client: test-program-client-net - Add test for delayed disconnect after sending result code.
Stephan Bosch [Tue, 4 May 2021 00:12:21 +0000 (02:12 +0200)]
lib-program-client: test-program-client-unix - Fix server-side argument count check.