2022-12-19 09:18:51 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (80a5ac675d)

    NEWS: Add lua-http crash fix


M	NEWS

2022-12-14 15:07:38 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (034ebd77b2)

    lib-lua: http - Use correct dns-client path

    The current code tries to look it up from user homedir sometimes.

    Broken in 5b56debd31800ec45fc0c6529b138d1ce943b0aa

M	src/lib-lua/dlua-dovecot-http.c

2022-12-01 10:54:38 +0100 Markus Valentin <markus.valentin@open-xchange.com> (cc440c4ba3)

    lib-sql: Add sql_statement_set_no_log_expanded_values()

    This allows to store no_log_expanded_values to sql_statement.

M	src/lib-dict-backend/dict-sql.c
M	src/lib-sql/sql-api-private.h
M	src/lib-sql/sql-api.c
M	src/lib-sql/sql-api.h

2022-12-01 11:13:16 +0100 Markus Valentin <markus.valentin@open-xchange.com> (e2eb85e006)

    dict: Implement DICT_PROTOCOL_CMD_HIDE_LOG_VALUES for dict and dict-proxy


M	src/dict/dict-commands.c
M	src/lib-dict/dict-client.c
M	src/lib-dict/dict-client.h

2022-12-01 11:03:26 +0100 Markus Valentin <markus.valentin@open-xchange.com> (be709b9f4e)

    lib-dict: Add .set_hide_log_values() to dict vfuncs

    This is used to set hide_log_values in dict op settings.

M	src/lib-dict/dict-private.h
M	src/lib-dict/dict.c
M	src/lib-dict/dict.h

2022-12-05 11:58:31 +0100 Markus Valentin <markus.valentin@open-xchange.com> (e0d8743ec7)

    cassandra: Rename query to log_query and initialize it with
    sql_statement_get_log_query()

    Also add sql_statement_get_log_query() to sql-api.

M	src/lib-sql/driver-cassandra.c
M	src/lib-sql/sql-api-private.h
M	src/lib-sql/sql-api.c

2022-12-05 11:50:30 +0100 Markus Valentin <markus.valentin@open-xchange.com> (594faf423e)

    lib-event: Add event_unset_log_message_callback()


M	src/lib/lib-event.c
M	src/lib/lib-event.h

2022-11-28 11:17:11 +0100 Markus Valentin <markus.valentin@open-xchange.com> (a3f95288ff)

    fs-api: Add fs_get_event()


M	src/lib-fs/fs-api.c
M	src/lib-fs/fs-api.h

2022-12-01 13:08:01 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (14afc277e5)

    NEWS: Add POP3 assert-crashfix.


M	NEWS

2022-12-01 12:37:17 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (439321dd17)

    pop3: Fix assert-crash when POP3 command name contained ':'

    The cmd_<name> reason code now only uses valid command names.

    Broken by d2ab26be6038bd53b13a3ff18c403d6c192c1d91 with incomplete fix in 
    1309137812424c80e63d3c1052795b43d6e19803.

    Fixes: Panic: event_reason_code_prefix(): name has ':'

M	src/pop3/pop3-client.c
M	src/pop3/pop3-commands.c
M	src/pop3/pop3-commands.h

2022-12-01 12:32:28 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (795f36cf53)

    pop3: Move pop3 commands to array and add pop3_command_find()


M	src/pop3/pop3-commands.c
M	src/pop3/pop3-commands.h

2022-11-23 09:55:36 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (a48c2ca47a)

    configure: Set version to 2.3.20


M	configure.ac

2022-11-23 09:55:15 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (9bc9b60850)

    NEWS: Add NEWS for 2.3.20


M	NEWS

2022-11-23 09:21:10 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (1f127c8a59)

    NEWS: Update news


M	NEWS

2022-11-14 23:27:33 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (88150e0bb8)

    lmtp: Fix restoring global log prefix after session is finished

    Broken by 069dfd657fd91a0e2a3a9307a0cf499d795f27f2

    This change also slightly changes the lmtp log prefixes in some places. It
    removes "conn $ip:$port [$idx]: rcpt $user:" from some of the log messages
    (but that wasn't in all of the log messages anyway), but it now always
    includes mail_log_prefix in these log messages, which previously wasn't
    always set at that point yet.

M	src/lmtp/main.c

2022-10-21 13:32:48 +0000 Marco Bettini <marco.bettini@open-xchange.com> (805db6b027)

    fts: struct fts_user - Drop data_languages


M	src/plugins/fts/fts-user.c
M	src/plugins/fts/fts-user.h

2022-10-21 09:15:04 +0000 Marco Bettini <marco.bettini@open-xchange.com> (74d8e389bf)

    fts: fts-search-args - Fix stopwords expansion (only on multiple languges
    and with stopword filter enabled)


M	src/plugins/fts/fts-search-args.c

2022-10-20 14:07:23 +0000 Marco Bettini <marco.bettini@open-xchange.com> (07ec8339ee)

    lib-storage: enum mail_search_arg_type - Add SEARCH_NIL


M	src/lib-storage/index/imapc/imapc-search.c
M	src/lib-storage/index/index-search.c
M	src/lib-storage/mail-search-args-cmdline.c
M	src/lib-storage/mail-search-args-imap.c
M	src/lib-storage/mail-search-args-simplify.c
M	src/lib-storage/mail-search-register-imap.c
M	src/lib-storage/mail-search.c
M	src/lib-storage/mail-search.h
M	src/lib-storage/test-mail-search-args-simplify.c

2022-11-09 15:29:39 +0000 Marco Bettini <marco.bettini@open-xchange.com> (f41286b8f1)

    lib-storage: mail_search_args_simplify_drop_redundant_args() - Apply
    Absorptive law versus all terms, not just the 1st


M	src/lib-storage/mail-search-args-simplify.c
M	src/lib-storage/mail-search.c
M	src/lib-storage/mail-search.h
M	src/lib-storage/test-mail-search-args-simplify.c

2022-11-03 17:40:28 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (8fb6b9e1b8)

    dsync: Skip autocreated mailboxes that haven't been created yet


M	src/doveadm/dsync/dsync-mailbox-tree-fill.c

2022-11-04 14:01:14 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (b05564d157)

    imapc: Fix listing INBOX when INBOX is already the namespace prefix

    This especially caused problems when using dsync with imapc, resulting in
    "Remote lost mailbox GUID" errors.

M	src/lib-storage/index/imapc/imapc-list.c

2022-11-01 11:21:34 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (142c054f85)

    replicator: Fix crash when importing user not listed by userdb iteration

    Broken by 31545b4f38ea85615f0111a33d630a03d92d22ab

M	src/replication/replicator/replicator-queue.c

2022-08-16 23:42:51 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7286076402)

    replicator: Add unit test to replicator-queue


M	src/replication/replicator/Makefile.am
A	src/replication/replicator/test-replicator-queue.c

2022-10-28 17:57:03 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (95ec1043e0)

    replicator: Add replicator_queue_count() and replicator_queue_peek()

    These will be useful for the following unit test.

M	src/replication/replicator/replicator-queue.c
M	src/replication/replicator/replicator-queue.h

2022-10-25 15:39:39 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8190571703)

    replicator: Add "next sync secs" field to doveadm replicator status


M	src/doveadm/doveadm-replicator.c
M	src/replication/replicator/doveadm-connection.c

2022-10-25 13:27:23 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (390e5a4c3d)

    replicator: Make sure to prevent request starvation

    This synchronizes how priority queue is ordered vs what 
    replicator_queue_want_sync_now() returns. The mismatch might have caused 
    request starvation in some situations because they behaved differently.

    Also this change makes sure that higher priority requests don't infinitely 
    block lower priority requests. Instead, they get a temporary boost time
    (hardcoded 15-45 minutes). Afterwards lower priority requests are started to
    be handled as well.

M	src/replication/replicator/doveadm-connection.c
M	src/replication/replicator/replicator-queue.c
M	src/replication/replicator/replicator-queue.h

2022-10-25 13:11:37 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (97bf10e1da)

    replicator: Don't update user's last_update if priority doesn't change

    This didn't actually matter, since it was only used to check if importing 
    should update an existing user. However, importing is only run at startup 
    when all users have last_update=0 anyway.

    The following changes bring new use cases for last_update.

M	src/replication/replicator/replicator-queue.c
M	src/replication/replicator/replicator-queue.h

2022-10-25 13:08:36 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (5c9f252471)

    replicator: Change replicator_queue_add_sync_callback() to take user struct

    This is just to clean up the API to match the previous change.

M	src/replication/replicator/notify-connection.c
M	src/replication/replicator/replicator-queue.c
M	src/replication/replicator/replicator-queue.h

2022-10-25 12:49:03 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (278d4a08f2)

    replicator: Fix user placement in replication queue

    Especially replicator queue importing and NOTIFY command could have placed
    the user to wrong place in the queue, because they modified the last sync
    timestamps afterwards.

    Fixed by splitting replicator_queue_add() into get/update/add(), so all the
    necessary changes can be done before replicator_queue_add() is used to place
    the user into the queue.

M	src/replication/replicator/doveadm-connection.c
M	src/replication/replicator/notify-connection.c
M	src/replication/replicator/replicator-queue-auth.c
M	src/replication/replicator/replicator-queue.c
M	src/replication/replicator/replicator-queue.h

2022-10-28 00:56:29 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (94f620c4da)

    maildir: If mailbox create fails, don't try to apply mailbox_update changes

    This was especially causing problems with mailbox GUID mismatches in dsync. 
    The mismatch wasn't automatically fixed, because mailbox_create()
    incorrectly kept updating the mailbox GUID for the already existing mailbox.

    Fixes errors such as: Remote lost mailbox GUID ... (maybe it was just
    deleted?)

M	src/lib-storage/index/maildir/maildir-storage.c

2022-10-27 02:56:45 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (29c982fe52)

    lib-storage: mailbox_attribute_get*() - Fail early on with empty key lookup

    This fixes using mail_attribute_dict with dict-sql.

M	src/lib-storage/mailbox-attribute.c

2022-03-03 14:21:00 +0100 Markus Valentin <markus.valentin@open-xchange.com> (2aa632260b)

    imapc: imapc_connection_disconnect_full() - Only conditionally abort

    Only abort commands if there are no reconnect commands. Otherwise these 
    still will be handled and the commands memory will be freed after handling 
    them.

    Broken by 6d16e82fa2c352974558e1415d06f07d8962fe09

M	src/lib-imap-client/imapc-connection.c

2022-02-28 15:50:05 +0100 Markus Valentin <markus.valentin@open-xchange.com> (e91916ad57)

    imapc: imapc_connection_disconnect_full() - Prevent leaking cmd->pool

    If the imapc connection was already disconnected when calling 
    imapc_connection_disconnect() it didn't clean up the commands and especially
    the command pools.

M	src/lib-imap-client/imapc-connection.c

2022-10-12 13:26:03 +0200 Markus Valentin <markus.valentin@open-xchange.com> (b0f19c117a)

    imapc: imapc_mailbox_get_status() - Implement STATUS_UNSEEN with INDEXPVT


M	src/lib-storage/index/imapc/imapc-storage.c

2022-10-19 09:26:55 +0300 Martti Rannanjärvi <martti.rannanjarvi@open-xchange.com> (410acf8760)

    lib-storage: mail-storage-list-index-rebuild - Don't use continue inside
    T_BEGIN..T_END

    Coverity doesn't like using continue there.

M	src/lib-storage/list/mail-storage-list-index-rebuild.c

2022-10-05 15:42:25 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ef26f7d1ef)

    lib-storage: LAYOUT=index rebuild - Fix detecting duplicate mailbox GUIDs in
    index

    Otherwise duplicate folders are not properly cleared out.

    Broken in 2fc8d7024bb161aab08031b8212a736301844858

M	src/lib-storage/list/mail-storage-list-index-rebuild.c

2022-10-05 15:27:31 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ce65fc1fc9)

    lib-storage: LAYOUT=index rebuild - Remove existence check

    It's not needed.

M	src/lib-storage/list/mail-storage-list-index-rebuild.c

2022-09-27 15:03:37 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (8dbd0d79cc)

    lib-storage: LAYOUT=index rebuild - Sort mailbox tree before creating

    Try to load the mailbox original name already from storage so we can sort &
    create the mailbox tree in correct order.

M	src/lib-storage/list/mail-storage-list-index-rebuild.c

2022-09-27 13:01:29 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (1ff6f0948a)

    lib-storage: LAYOUT=index rebuild - Remove first_list usage

    Instead, keep track of the list where box was found.

M	src/lib-storage/list/mail-storage-list-index-rebuild.c

2022-10-05 15:15:17 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b5b41c5410)

    lib-storage: LAYOUT=index rebuild - Remove useless check for LAYOUT=index

    This is already done when collecting namespaces.

    Simplifies next change.

M	src/lib-storage/list/mail-storage-list-index-rebuild.c

2022-09-21 11:14:40 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (7c2176d18e)

    lib-storage: LAYOUT=index rebuild - Fix rebuilds when using multiple
    namespaces

    The old code did not properly populate the mailbox list for each namespace,
    but only for the first namespace. This caused mailbox storage existence
    checks to always fail.

    This applies for LAYOUT=index only.

    Broken in 2fc8d7024bb161aab08031b8212a736301844858

M	src/lib-storage/list/mail-storage-list-index-rebuild.c

2022-10-18 11:35:22 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (bcdf913eb8)

    lib-storage: list - Add separators to mailbox names when decoding from index

    Mailbox name header decode did not add separators to name, producing only
    FooBarBar, when it was supposed to give Foo/Bar/Baz.

    Broken in 8216a079d8aac93e2537ed79485e301350ff3887

M	src/lib-storage/list/mailbox-list-index.c

2022-10-11 11:17:11 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (efafbfaad6)

    lib-storage: Store mailbox names unescaped in box-name header

    This header is used when rebuilding mailbox list indexes with LAYOUT=index. 
    The escape character is currently hardcoded for LAYOUT=index, so this 
    couldn't have broken anything unless the hardcoded separator was changed. 
    Still, this was wrong/confusing behavior.

M	src/lib-storage/list/mailbox-list-index-backend.c
M	src/lib-storage/list/mailbox-list-index.c
M	src/lib-storage/list/mailbox-list-index.h

2022-06-15 12:19:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (27131bdfa3)

    dict-redis: Fix crash when using synchronous commit

    Redis is usually used via dict proxy process, which always uses async 
    commit, so this didn't matter so much.

M	src/lib-dict/dict-redis.c

2022-02-10 17:12:09 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (a8f52eb73f)

    director: Fix handling auth_master_user_separator setting

    It was actually using a separate master_user_separator setting, causing 
    logins based on auth_master_user_separator to be hashed to wrong backends.

M	src/director/director-settings.c
M	src/director/director-settings.h
M	src/director/login-connection.c

2022-09-27 14:28:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4a1b25a1c0)

    doveadm: Fix assert-crash on secondary service_user failures

    This mainly affected dsync when imapc authentication failed, but could have 
    also happened with copy and import commands.

    Fixes: Panic: file lib-event.c: line 506 (event_pop_global): assertion
    failed: (event == current_global_event)

M	src/doveadm/doveadm-mail.c

2022-09-28 16:21:26 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (069dfd657f)

    lib-storage: Fix MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT to not change log
    prefix in ioloop context changes

    This didn't appear to cause any visible bugs with the current code, but is 
    required by the next commit.

    Broken by ad13ab0702141065b79a1b7e8f2833e5b93871a4

M	src/lib-storage/mail-storage-service.c

2022-08-25 09:20:40 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (62f388b03e)

     doc/example-config: Document submissions/465 for submission-login


M	doc/example-config/conf.d/10-master.conf

2022-02-22 17:47:55 +0100 Timo Sirainen <timo.sirainen@open-xchange.com> (08bf01a739)

    lib-storage: Avoid calling mail_set_attachment_keywords() recursively

    It doesn't break, but it's unnecessary work.

M	src/lib-storage/index/index-mail.c
M	src/lib-storage/index/index-mail.h

2022-02-22 17:44:02 +0100 Timo Sirainen <timo.sirainen@open-xchange.com> (73962c1f59)

    lib-imap: imap_bodystructure_parse*() - Reset parts.data on failure

    Having the data filled only to some message_parts can confuse the callers, 
    thinking that all the parts were successfully filled.

    Fixes: Panic: file message-part-data.c: line 579
    (message_part_is_attachment): assertion failed: (data != NULL)

M	src/lib-imap/imap-bodystructure.c
M	src/lib-imap/test-imap-bodystructure.c

2022-06-16 10:57:15 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (300b5c257b)

    dsync: Add more debug logging


M	src/doveadm/dsync/dsync-mailbox-import.c

2022-06-16 10:55:42 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8609825d4e)

    dsync: Fix dsync_features=no-header-hashes to match UIDs

    Mails were previously assumed to be the same, even if their UIDs didn't 
    match. This caused the sync to misbehave in some situations.

M	src/doveadm/dsync/dsync-mailbox-import.c

2022-02-04 09:33:34 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (4c56bab522)

    lib: ioloop-kqueue - Include time-util.h

    Needed to compile on MacOS

M	src/lib/ioloop-notify-kqueue.c

2022-05-16 11:04:10 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (7accb09647)

    util: dovecot-sysreport - Add timestamps before/after "ps" output

    Sometimes running "ps" can take a while, so make it clear in the output if 
    this has happened.

M	src/util/dovecot-sysreport

2022-05-16 10:52:54 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (fe8710dde7)

    util: dovecot-sysreport - Wait 3 seconds between "ps" outputs

    This allows showing more clearly in ps_output file whether a process is 
    using 100% CPU.

M	src/util/dovecot-sysreport

2022-06-13 09:56:13 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a5ffdc8deb)

    doveadm deduplicate: Allocate memory properly for keys in hash table

    This caused wrong mails to be deleted somewhat randomly. Broken by
    320844f50cd669b602d30210e2e5216f65d2050f

M	src/doveadm/doveadm-mail-deduplicate.c

2022-06-07 09:40:10 +0300 Martti Rannanjärvi <martti.rannanjarvi@open-xchange.com> (f0a9cbfb9d)

    auth: db_oauth2_have_all_fields() - Fix auth field existence check

    The correct pointer to pass on there is field, since ptr is the original 
    which still includes the ending }.

    Broken in 9b670175445a75987a713ff899d1a945255b0b5b and incorrectly fixed in
    5c2f3d0b85830d18dbb8b45b348da091e24d1b3b.

M	src/auth/db-oauth2.c

2022-05-24 15:52:26 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c4086c78a8)

    lib-compression: istream-decompress - Copy parent stream name

    This is needed, because istream-decompress doesn't actually use the parent 
    stream as the istream parent.

M	src/lib-compression/istream-decompress.c

2022-05-19 12:39:55 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (8b3b959d0c)

    stats: stats-service-openmetrics - Always clear the stack before next metric
    body

    If the attempt of generating output for the previous metric doesn’t
    completely consume the stack, the next metric will start with a non-empty
    stack, which breaks the metrics output.

M	src/stats/stats-service-openmetrics.c

2022-05-19 11:24:23 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (9708531c04)

    doveadm: Add dsync_features=no-header-hashes

    When this setting is enabled and one dsync side doesn't support mail GUIDs, 
    there is no fallback to using header hashes. Instead, dsync assumes that all
    mails with identical IMAP UIDs contains the same mail contents. This can
    significantly improve dsync performance with some IMAP servers that don't
    support caching Date/Message-ID headers.

M	src/doveadm/doveadm-dsync.c
M	src/doveadm/doveadm-settings.c
M	src/doveadm/doveadm-settings.h
M	src/doveadm/dsync/dsync-brain-mailbox.c
M	src/doveadm/dsync/dsync-brain-private.h
M	src/doveadm/dsync/dsync-brain.c
M	src/doveadm/dsync/dsync-brain.h
M	src/doveadm/dsync/dsync-mailbox-import.c
M	src/doveadm/dsync/dsync-mailbox-import.h

2022-05-18 11:31:44 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (30e6947179)

    auth: Fix assert-crash in iterating multiple userdbs

    Broken by 501e17ba6b448ba3c88338596e0e8f99f0693f79

    Fixes: Panic: file userdb-blocking.c: line 125 (userdb_blocking_iter_next):
    assertion failed: (ctx->conn != NULL)

M	src/auth/auth-master-connection.c

2022-05-02 13:12:26 +0000 Marco Bettini <marco.bettini@open-xchange.com> (e56bb5e361)

    lib: Fix for clang Wstrict-bool pragma failing on unpatched clang

    Note that clang recognises GCC diagnostic pragmas too, so there is no need
    for distinct pragmas in this case

M	src/lib/event-filter-lexer.l
M	src/lib/event-filter-parser.y

2022-05-02 11:14:10 +0000 Marco Bettini <marco.bettini@open-xchange.com> (fdf4cf0d01)

    quota: Fix for clang -Wstrict-bool clashing with #include <rpc/rpc.h>


M	src/plugins/quota/Makefile.am
A	src/plugins/quota/rquota-pragmas.h

2022-05-02 11:13:41 +0000 Marco Bettini <marco.bettini@open-xchange.com> (2f8682fc0d)

    m4: adding check for clang -Wstrict-bool availability


M	configure.ac
M	m4/dovecot.m4

2022-05-17 09:05:20 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (39abdd9343)

    submission: Don't log write() errors that fail due to ECONNRESET

    These happen only if client initialization fails.

M	src/submission/main.c

2022-05-17 09:03:47 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (06e883ec95)

    imap: Don't log write() errors that fail due to ECONNRESET

    These happen only before the client is fully initialized.

M	src/imap/main.c

2022-05-03 00:27:47 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a91f361d84)

    fts: Fix optimizing searches in virtual mailboxes without up-to-date indexes

    This could have caused header searches in virtual mailboxes to not return 
    all results when fts_enforced!=yes

    Broken by 9705b81fb51b5bdeaba12932a390ced2cc9dcad7

M	src/plugins/fts/fts-storage.c

2022-04-25 10:43:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (97f19460a9)

    lib-lua: dlua-dovecot-http - Support more settings with HTTP client


M	src/lib-lua/dlua-dovecot-http.c

2022-04-25 14:27:12 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3eddd5eba5)

    lib-http: Rename max_auto_retry_delay to max_auto_retry_delay_secs


M	src/lib-http/http-client-request.c
M	src/lib-http/http-client.c
M	src/lib-http/http-client.h

2022-04-19 11:42:05 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1c6c3c320d)

    auth: auth_worker_call() - Return void instead of the connection

    The return value is no longer necessary, and it most likely would just be 
    used wrong.

M	src/auth/auth-worker-server.c
M	src/auth/auth-worker-server.h

2022-04-19 11:40:52 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (94577c4450)

    auth: Fix crash when user iteration request is queued

    auth_worker_call() returns NULL when the request couldn't be handled 
    immediately, which would result in NULL pointer dereference later on.

M	src/auth/userdb-blocking.c

2022-04-19 11:39:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f89c9e587e)

    auth: Add connection parameter to auth_worker_callback_t


M	src/auth/auth-worker-server.c
M	src/auth/auth-worker-server.h
M	src/auth/passdb-blocking.c
M	src/auth/passdb-cache.c
M	src/auth/userdb-blocking.c

2022-04-14 13:46:59 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (865fb4f3c1)

    doveadm: Fix hang when flushing a corked print-ostream

    This could have happened at least with doveadm sync/backup command, i.e.
    causing replication to hang until timeout is reached:

    Error: write(<local>) failed: Timed out after 60 seconds

M	src/doveadm/doveadm-print-server.c

2022-04-08 15:59:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (0dd36a73e4)

    lib-index: Always write tail offset the same as head offset

    The mail_index_write() must not be called unless this is safe to do. This
    prevents unnecessarily reading through dovecot.index.log between tail..head
    offsets, which can be expensive due to modseq calculation.

M	src/lib-index/mail-index-write.c

2022-04-08 15:10:53 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (aa7d67e6d6)

    lib-index: Optimize modseq scanning by using the modseq header in index

    View is very commonly set to start reading new changes since dovecot.index 
    was last written. When reading the newer records in dovecot.index.log, the 
    modseq of each change is needed to be known. However, the initial modseq 
    calculation was usually done inefficiently by reading the whole 
    dovecot.index.log from the beginning of the file. This change prevents that
    by using instead the "modseq" header in dovecot.index to get the initial
    modseq.

M	src/lib-index/mail-index-map-read.c
M	src/lib-index/mail-index-modseq.c
M	src/lib-index/mail-index-modseq.h
M	src/lib-index/mail-index-private.h
M	src/lib-index/mail-transaction-log-modseq.c

2022-04-08 13:42:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (40e2a21f83)

    lib-index: Handle 0-sized dovecot.index.log record properly

    The previous behavior was to just silently ignore it and have the next write 
    to the transaction log silently truncate away the trailing garbage.

    Now if the log file isn't locked the issue is still ignored, since it's 
    possible that this is just a race condition. But if the log is locked, it's
    handled as corruption.

M	src/lib-index/mail-transaction-log-file.c

2022-04-12 10:12:11 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (36cbfb8e2b)

    lib: test-event-flatten - Use __FILE__ to get correct expected filename

    Fixes out of tree buids

    Broken in 4f752d381c8e19dd07d1e593996d02294668c8b6

M	src/lib/test-event-flatten.c

2022-03-01 10:01:06 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (5c2f3d0b85)

    auth: db-oauth2 - Fix off by one in oauth2 variable handling

    Broken in 9b670175445a75987a713ff899d1a945255b0b5b

M	src/auth/db-oauth2.c

2022-03-21 11:03:03 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (dc40c6dbcf)

    dsync: Properly terminate escape_chars when escaping mailbox names

    Broken by 596c5a52e7e554571285e90063712cb0d37b34eb

M	src/doveadm/dsync/dsync-brain-mailbox-tree.c

2022-03-02 09:39:30 -0500 Timo Sirainen <timo.sirainen@open-xchange.com> (9e7503d439)

    dsync: Fix hierarchical mailbox name parts individually

    For example with filesystem-based mailbox formats it's not allowed to create
    "box/../child" mailbox. With previous code dsync just gave up and created 
    the mailbox name based on its GUID. This is now improved to instead try to 
    insert '_' character after each hierarchy separator so the newly fixed 
    mailbox name is "box/_../child".

M	src/doveadm/dsync/dsync-brain-mailbox-tree.c

2022-03-01 08:37:57 -0500 Timo Sirainen <timo.sirainen@open-xchange.com> (801aae4bd5)

    dsync: Escape and unescape mailbox names as needed

    This should fix various issues with syncing local and remote mailbox names. 
    It especially avoids changing the escape character to alt_char.

M	src/doveadm/dsync/dsync-brain-mailbox-tree.c
M	src/doveadm/dsync/dsync-mailbox-tree.c
M	src/doveadm/dsync/test-dsync-mailbox-tree-sync.c

2022-03-01 11:51:04 -0500 Timo Sirainen <timo.sirainen@open-xchange.com> (cfd1b0687f)

    dsync: Track whether escape character was added just for dsync

    Will be used by the following commit

M	src/doveadm/doveadm-dsync.c
M	src/doveadm/dsync/dsync-brain.c
M	src/doveadm/dsync/dsync-brain.h

2022-03-01 08:36:55 -0500 Timo Sirainen <timo.sirainen@open-xchange.com> (60ae30dd9e)

    dsync: Add clarifying comment about mailbox_log_record.maibox_guid contents


M	src/doveadm/dsync/dsync-mailbox-tree-fill.c

2022-03-01 08:06:14 -0500 Timo Sirainen <timo.sirainen@open-xchange.com> (3864ecbfc7)

    dsync: Add escape_char to dsync-mailbox-tree

    This will be used by the following changes.

M	src/doveadm/dsync/dsync-brain-mailbox-tree.c
M	src/doveadm/dsync/dsync-brain-private.h
M	src/doveadm/dsync/dsync-ibc-pipe.c
M	src/doveadm/dsync/dsync-ibc-private.h
M	src/doveadm/dsync/dsync-ibc-stream.c
M	src/doveadm/dsync/dsync-ibc.c
M	src/doveadm/dsync/dsync-ibc.h
M	src/doveadm/dsync/dsync-mailbox-tree-private.h
M	src/doveadm/dsync/dsync-mailbox-tree.c
M	src/doveadm/dsync/dsync-mailbox-tree.h
M	src/doveadm/dsync/test-dsync-mailbox-tree-sync.c

2022-03-18 09:41:37 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (f95da1fa2f)

    lib-test: test-subprocess - Free subprocess before forking

    Otherwise it'll leak memory.

    Broken in 34bdfdcbc7e3b374a219732329b6ce6d84a7666e

M	src/lib-test/test-subprocess.c

2021-10-25 12:23:56 +0100 Siavash Tavakoli <siavash.tavakoli@open-xchange.com> (25ae16cb40)

    lib-lua: Add a minimal interface to lib-http

    Adds the ability to
    - Creating http clients
    - Creating http requests
    - Adding arbitrary headers and payload to the http request
    - Submitting the request to remote server and getting the response

M	src/lib-lua/Makefile.am
A	src/lib-lua/dlua-dovecot-http.c
M	src/lib-lua/dlua-dovecot.c
M	src/lib-lua/dlua-script-private.h

2022-03-14 10:18:58 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (e5ae6b26e9)

    doveadm-who: Do not parse numbers as IP addresses

    Fixes doveadm kick as well.

    Broken in 381daab1e3b56a0bc94d2191cf62beba0df51af9

M	src/doveadm/doveadm-who.c

2022-03-01 12:06:20 +0100 Markus Valentin <markus.valentin@open-xchange.com> (6026905b7a)

    lib: test-seqset-builder - Add missing seqset_builder_deinit()

    Fixes leaking memory when running tests.

M	src/lib/test-seq-set-builder.c

2022-03-01 13:49:39 +0100 Markus Valentin <markus.valentin@open-xchange.com> (4540884c46)

    imapc: imapc_transaction_save_rollback() - Fix NULL-check for ctx->src_mbox

    Assert that unfinished context implies that ctx->src_mbox is non-NULL. Also
    check for ctx->src_mbox being non-NULL before deinitializing it.

M	src/lib-storage/index/imapc/imapc-save.c

2022-02-28 13:15:06 +0100 Markus Valentin <markus.valentin@open-xchange.com> (e5a07bd1c4)

    imapc: imapc_mailbox_msgmap_update() - Set new_message_r

    In case a message has not yet been keep the reply till syncing and do not
    discard it right away.

M	src/lib-storage/index/imapc/imapc-mailbox.c

2022-02-24 15:31:39 +0100 Markus Valentin <markus.valentin@open-xchange.com> (f5fc15b1b1)

    imapc: Delay fetching state after untagged exists reply


M	src/lib-storage/index/imapc/imapc-mailbox.c
M	src/lib-storage/index/imapc/imapc-storage.h
M	src/lib-storage/index/imapc/imapc-sync.c

2021-12-16 09:11:55 +0100 Markus Valentin <markus.valentin@open-xchange.com> (173cc696f8)

    imapc: imapc_copy() - Make sure capabilities are known before copying


M	src/lib-storage/index/imapc/imapc-save.c

2021-11-11 16:17:35 +0100 Markus Valentin <markus.valentin@open-xchange.com> (09bfbb4cb1)

    imapc: Implement rollback for failed copies


M	src/lib-storage/index/imapc/imapc-save.c
M	src/lib-storage/index/imapc/imapc-storage.c
M	src/lib-storage/index/imapc/imapc-storage.h

2021-11-11 18:31:54 +0100 Markus Valentin <markus.valentin@open-xchange.com> (95baaaf454)

    imapc: imapc_save_copyuid() deduplicate code


M	src/lib-storage/index/imapc/imapc-save.c

2021-11-11 16:18:09 +0100 Markus Valentin <markus.valentin@open-xchange.com> (1e888011d0)

    imapc: Enable bulk copying if remote backend has UIDPLUS capability


M	src/lib-storage/index/imapc/imapc-save.c

2021-11-11 14:52:54 +0100 Markus Valentin <markus.valentin@open-xchange.com> (79b5dc6024)

    imapc: Implement bulk copying for imapc


M	src/lib-storage/index/imapc/imapc-save.c
M	src/lib-storage/index/imapc/imapc-storage.c
M	src/lib-storage/index/imapc/imapc-storage.h

2021-11-11 16:10:53 +0100 Markus Valentin <markus.valentin@open-xchange.com> (d8ac772071)

    imapc: Extract imapc_copy_simple() from imapc_copy()

    Keep the old one by one copying functionality as simple call. This will be
    used if the remote backend does not have the UIDPLUS capability.

M	src/lib-storage/index/imapc/imapc-save.c

2022-01-12 15:09:16 +0100 Markus Valentin <markus.valentin@open-xchange.com> (dd9923ed99)

    lib-storage: index_save_context_free() - Add assertion on non-NULL
    ctx->dest_mail


M	src/lib-storage/index/index-storage.c

2021-12-08 17:17:56 +0100 Markus Valentin <markus.valentin@open-xchange.com> (ed093cb058)

    lib: Add seq-set-builder and tests for it


M	src/lib/Makefile.am
A	src/lib/seq-set-builder.c
A	src/lib/seq-set-builder.h
M	src/lib/test-lib.inc
A	src/lib/test-seq-set-builder.c

2022-02-10 17:37:59 +0100 Marco Bettini <marco.bettini@open-xchange.com> (0b8d22e109)

    lib-storage: imapc_mailbox_close() - Remove unprocessed
    untagged_fetch_contexts


M	src/lib-storage/index/imapc/imapc-storage.c

2022-02-10 16:26:10 +0100 Marco Bettini <marco.bettini@open-xchange.com> (589f8b1eba)
