2024-08-09 12:24:39 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (d492236fa0)

    configure: Update version


M	configure.ac

2024-08-08 15:13:19 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (9a69ceda23)

    NEWS: Add news for 2.3.21.1


M	NEWS

2024-04-24 10:45:46 +0000 Marco Bettini <marco.bettini@open-xchange.com> (ce88c33abc)

    lib-mail: message-parser - Limit headers total count to 50MB by default

    (including top headers and all mime-sections headers)

M	src/lib-mail/message-parser-private.h
M	src/lib-mail/message-parser.c
M	src/lib-mail/message-parser.h
M	src/lib-mail/test-message-parser.c

2024-04-12 15:06:43 +0000 Marco Bettini <marco.bettini@open-xchange.com> (f020e139c5)

    lib-mail: message-header-parser - Limit header block to 10MB by default


M	src/lib-mail/message-header-parser.c
M	src/lib-mail/message-header-parser.h
M	src/lib-mail/test-message-header-parser.c

2024-02-09 00:57:12 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (1481c04f02)

    lib-mail, lib-imap: Optimize parsing large number of address headers

    Every header was appended to a linked list by walking through the whole 
    list, causing excessive CPU usage when the list became large enough. Fixed
    by changing struct message_part_envelope to use struct message_address_list,
    which stores also linked list tail pointers. This allows quickly appending
    to the end of the linked list.

M	src/lib-imap/imap-envelope.c
M	src/lib-mail/message-part-data.c
M	src/lib-mail/message-part-data.h
M	src/lib-storage/index/index-search-mime.c

2024-01-30 22:17:38 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (da61d20311)

    lib-mail: Add message_address_parse_full() and struct message_address_list


M	src/lib-mail/message-address.c
M	src/lib-mail/message-address.h
M	src/lib-mail/test-message-address.c

2024-02-04 00:26:57 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (a1c9b04094)

    lib-mail: Change message_address to be doubly linked list


M	src/lib-imap/imap-envelope.c
M	src/lib-mail/message-address.c
M	src/lib-mail/message-address.h
M	src/lib-mail/test-message-address.c

2024-01-30 22:42:50 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (0bae091859)

    lib-mail: test-imap-envelope - Use test_assert_idx() where possible


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

2024-02-09 00:33:00 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (cee08202c7)

    lib: Add DLLIST2_JOIN()


M	src/lib/llist.h
M	src/lib/test-llist.c

2024-02-09 00:32:39 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (8e4c42dbb3)

    lib: test-llist - Fix dllist2 test name


M	src/lib/test-llist.c

2024-03-26 14:13:42 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (57ee018642)

    auth: mech-oauth2 - Use the iterated passdb in oauth2_find_oidc_url()

    Fixes a crash when oauth2 passdb is not first. Broken in 
    59647f483c49c9e54c43cade168bf10f44a49292

M	src/auth/mech-oauth2.c

2024-03-13 13:08:18 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (b6f4074961)

    login-common: Add client_vfuncs.iostream_change_pre/post()


M	src/login-common/client-common.c
M	src/login-common/client-common.h

2023-10-06 15:59:32 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (955bff2155)

    lib: Fix sha2 functions to not produce wrong results with >500MB input


M	src/lib/sha2.c
M	src/lib/sha2.h
M	src/lib/test-hash-method.c

2023-10-03 13:11:49 +0000 Marco Bettini <marco.bettini@open-xchange.com> (ac2bc5da92)

    oauth: Accept multiple entries in aud field


M	src/auth/db-oauth2.c
M	src/lib-oauth2/oauth2-jwt.c

2023-08-28 15:27:09 +0000 Marco Bettini <marco.bettini@open-xchange.com> (47349e2482)

    mail-crypt: mail_crypt_mailbox_allocated() - Force cross-user copies to
    (de,re)encrypt the contents


M	src/plugins/mail-crypt/mail-crypt-plugin.c

2023-09-06 15:04:49 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (aaaa810590)

    NEWS: Update NEWS with changes


M	NEWS

2023-09-06 08:34:51 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (bafdc83211)

    lib-sql: driver-mysql - Use API state to check if there is connection

    db->mysql cannot be NULL.

    Broken in 542877c08eb8130733567e5b718933bc3cdc8426

M	src/lib-sql/driver-mysql.c

2023-09-05 13:39:40 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (21927de9f4)

    dsync: Destroy name128_remotesep_hash in dsync_mailbox_tree_deinit()

    Forgotten in 678d0463849ba777106eb7875f27db07a5d8e3df

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

2023-09-02 17:50:55 +1000 Ted Phelps <phelps@gnusto.com> (6901e5fc1c)

    dsync: Fix an infinite loop

    Be sure to update 'name' when traversing the components of a path in
    convert_name_to_remote_sep.  Otherwise we end up allocating a lot of memory
    and failing.

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

2023-08-30 13:19:47 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (542877c08e)

    lib-sql: driver-mysql - Initialize MYSQL struct once

    Calling initialize more than once will leak memory.

M	src/lib-sql/driver-mysql.c

2023-08-30 13:21:12 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (939e47c94e)

    lib-sql: driver-mysql - Use driver_mysql_disconnect() in deinit

    This ensures we call mysql_close() only in one place.

M	src/lib-sql/driver-mysql.c

2023-08-29 15:04:04 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f55acdc81c)

    lib-sql: driver-mysql - Use container_of instead of blind cast


M	src/lib-sql/driver-mysql.c

2023-07-17 10:36:32 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (34f597596e)

    lib-sql: Disconnect SQL connection on error


M	src/lib-sql/driver-mysql.c

2023-06-22 10:48:13 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (648b5a3a6e)

    mdbox: Fix crash still if fdatasync_path() fails

    Broken still in a8424a71d70e2f5c54d9e2aab8338cf9547b15b4

M	src/lib-storage/index/dbox-multi/mdbox-save.c

2023-08-30 15:46:20 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (02bf7bd126)

    configure: Update version


M	configure.ac

2023-08-30 15:45:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (c658ae5288)

    NEWS: Add news for 2.3.21


M	NEWS

2023-06-15 13:32:11 +0200 Karl Fleischmann <karl.fleischmann@open-xchange.com> (daff6f22c1)

    stats: Allow empty event exporters when registering metrics


M	src/stats/stats-metrics.c

2023-08-29 10:13:34 +0000 Marco Bettini <marco.bettini@open-xchange.com> (c7a8868882)

    fts: doveadm - Add missing pool initialization in cmd_search_box()

    Broken by: 467a664b5fce33f3d47a3e1171ecacb508968d1a

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

2023-08-24 12:26:44 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (526b66635d)

    auth: db-oauth2 - Set default value for active_attribute and active_value to
    empty string

    Otherwise it will always require this attribute to be present when not 
    configured.

M	src/auth/db-oauth2.c

2023-08-24 22:16:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (476e03f65b)

    login-common: If authentication is aborted, clear out final response.


M	src/login-common/sasl-server.c

2023-06-01 10:47:50 +0000 Marco Bettini <marco.bettini@open-xchange.com> (bfb698553f)

    auth: db-oauth2 - Handle the case for check on attribute presence only


M	src/auth/db-oauth2.c

2023-06-01 08:37:56 +0000 Marco Bettini <marco.bettini@open-xchange.com> (b6e310356f)

    auth: db_oauth2_user_is_enabled() - Flatten the code


M	src/auth/db-oauth2.c

2022-05-17 15:19:49 -0400 Steve Mokris <steve@kosada.com> (7969d5be1d)

    auth: db-oauth2 - Fail login if active_attribute is missing

    If active_attribute is required by config, we should fail to login when it's
    missing.

M	src/auth/db-oauth2.c

2023-05-12 11:48:25 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f3e85d8f51)

    lib-oauth2: Do not send empty client_id or client_secret


M	src/lib-oauth2/oauth2-request.c

2023-05-12 11:47:41 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (9ad55e6c04)

    lib-oauth2: Do not send client_id and client_secret as parameters in POST
    queries

    They need to be configured in the URL as Basic auth instead.

M	src/lib-oauth2/oauth2-request.c

2023-05-12 08:59:50 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e449757553)

    lib-oauth2: Do not send client_id & client_secret as POST parameters when
    doing introspection


M	src/lib-oauth2/oauth2-request.c

2023-05-08 08:38:20 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (8623cb0319)

    lib-oauth2: Validate scope when configured


M	src/lib-oauth2/oauth2-jwt.c
M	src/lib-oauth2/test-oauth2-jwt.c

2023-05-08 08:23:39 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (9c7f5a74a7)

    lib-oauth2: Remove typ check

    It is not really useful. And mostly just keeps breaking when people invent
    new kty values.

M	src/lib-oauth2/oauth2-jwt.c

2023-05-08 08:21:43 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (63e0c9ede4)

    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.

M	src/lib-oauth2/oauth2-jwt.c

2023-05-15 13:49:58 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (18576fde01)

    auth: mech-oauth2 - Always fail with protocol specific error


M	src/auth/mech-oauth2.c

2023-05-15 11:51:19 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (59647f483c)

    auth: mech-oauth2 - Look for openid configuration URL if missing


M	src/auth/mech-oauth2.c
M	src/auth/passdb-oauth2.c
M	src/auth/passdb.h

2023-05-04 15:44:15 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3db58fd809)

    lib-oauth2: Return failure instead of crash with invalid or missing token


M	src/lib-oauth2/oauth2-request.c

2022-12-14 10:10:12 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (d6ff43f766)

    auth: db-oauth2 - Add accessor for OpenID configuration URL


M	src/auth/db-oauth2.c
M	src/auth/db-oauth2.h

2023-06-02 14:20:08 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (77e2d55092)

    auth: db-oauth2 - Store request username


M	src/auth/db-oauth2.c

2023-05-15 12:41:39 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3a69b83a35)

    auth: Add auth_request_fail_with_reply()


M	src/auth/auth-request.c
M	src/auth/auth-request.h

2023-05-15 13:49:41 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (d8fdd193f0)

    auth: Pass along final response with failure


M	src/auth/auth-request-handler.c

2023-05-15 12:28:53 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (78b8d7c861)

    lib-auth: Move auth_client_request_continue() lower

    Simplifies next commit

M	src/lib-auth/auth-client-request.c

2023-05-15 14:27:55 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (7e5c9ad6da)

    login-common: Serve final response for client on failure


M	src/login-common/client-common-auth.c
M	src/login-common/client-common.c
M	src/login-common/client-common.h
M	src/login-common/sasl-server.c
M	src/login-common/sasl-server.h

2023-05-15 13:49:51 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (dbb801a8f0)

    login-common: Ignore resp when present


M	src/login-common/client-common-auth.c

2023-05-03 14:35:54 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (5061e0c48a)

    acl: Fix wrong \HasChildren flags for parent mailboxes containing '*' and
    '%'

    '*' in mailbox name is replaced with '%' while child mailboxes still have
    '*' in their path, this results in wrong \HasNoChildren flag.

M	src/plugins/acl/acl-mailbox-list.c

2023-05-03 14:35:18 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (f2e50d5676)

    lib-storage: Whitespace cleanup.


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

2023-05-09 07:22:15 +0000 Marco Bettini <marco.bettini@open-xchange.com> (50af4232c1)

    lib-storage: Add mail_get_message_id_no_validation()


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

2023-05-16 09:40:55 +0000 Marco Bettini <marco.bettini@open-xchange.com> (06aecd2b95)

    lib-dict: redis_reply_callback() - Don't crash if there is no callback


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

2023-04-18 00:08:40 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (175043954c)

    lib-index: Delete dovecot.index.cache during purging if it becomes too large

    This only happens if the file was already too large before the purging 
    happens. This mainly fixes assert-crashes caused by old huge >1GB cache 
    files.

    Fixes: Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset):
    assertion failed: (offset < 0x40000000)

M	src/lib-index/mail-cache-purge.c

2022-05-17 12:31:40 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (9f903ee879)

    lib-master: Use ssl_require_crl setting only for server-side SSL settings

    We don't currently properly support checking CRLs when acting as SSL client. 
    The CRL would have to be stored as part of the CAs, which isn't commonly 
    done. This bug has been in the code ever since it was added in 
    30c5c1fc3608ae575f11960281d3e338b6bf7bc8, but it became more noticeable with
    recent changes that started using lib-master for getting all SSL client
    settings, e.g. 1e5324b5805bf7299cd8196f7b659fe935f027bd

M	src/lib-master/master-service-ssl-settings.c

2023-04-06 09:04:35 +0200 Karl Fleischmann <karl.fleischmann@open-xchange.com> (08528c38e1)

    stats: stats_metrics_add_dynamic() - Validate event exporter


M	src/stats/stats-metrics.c

2023-03-23 15:37:28 +0000 Marco Bettini <marco.bettini@open-xchange.com> (b3981ea5c6)

    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.

M	src/lib-master/stats-client.c

2023-03-27 08:19:38 +0000 Marco Bettini <marco.bettini@open-xchange.com> (e52db68ff4)

    lib-master: stats_event_callback() - Skip if conn.output is already closed

    This also prevents further errors from happening on the closed stream.

M	src/lib-master/stats-client.c

2023-03-24 14:04:00 +0000 Marco Bettini <marco.bettini@open-xchange.com> (9c3e210f1e)

    lib-master: stats_client_send_event() - Also flush conn.output and check for
    errors


M	src/lib-master/stats-client.c

2023-03-23 15:35:49 +0000 Marco Bettini <marco.bettini@open-xchange.com> (6231b7af67)

    lib-master: stats_event_write() - Don't accumulate more than IO_BLOCK_SIZE
    bytes in str buffer


M	src/lib-master/stats-client.c

2023-02-24 14:06:14 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (d6c67f24c4)

    lib: event-filter-parser.y - Add workaround for nerrs being unused warning

    Fixes with clang-17: warning: variable 'event_filter_parser_nerrs' set but
    not used

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

2023-02-24 14:02:01 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (6c22f4dc1f)

    global: Remove dead code


M	src/lib-dict/test-dict-client.c
M	src/lib-master/test-event-stats.c
M	src/lib/test-mempool-allocfree.c

2021-12-31 11:29:02 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (7c73ba5364)

    lib-dict: test-dict-client - Handle shutdown cleanly with ctrl-c


M	src/lib-dict/test-dict-client.c

2022-07-07 13:58:02 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (4c06fee481)

    login-common: Handle missing ssl_iostream in get_var_expand_table()

    It can be missing during connection disconnection when connection is lost
    uncleanly.

M	src/login-common/client-common.c

2023-04-04 11:51:22 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b0fd628d56)

    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.

M	src/plugins/notify-status/notify-status-plugin.c

2023-06-29 13:40:24 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (2340275fad)

    lib-sql: pgsql - Use orig_ioloop instead of local variable

    orig_ioloop is used later, leaving it NULL here causes problems when timeout
    is added by sqlpool.

    Broken in 8981a973987c237552e46b68075b64caa8c1f5bb

M	src/lib-sql/driver-pgsql.c

2023-06-26 10:43:00 +0000 Marco Bettini <marco.bettini@open-xchange.com> (4c3ae0468e)

    dbox: Fix for dangling pointer being passed to cleanup_interval()

    Broken in 88eee28fd86d619b26ce6aebadca5b18e748dc6f

M	src/lib-storage/index/dbox-common/dbox-storage.c
M	src/lib-storage/index/dbox-common/dbox-storage.h
M	src/lib-storage/index/dbox-multi/mdbox-map.c

2023-06-20 18:58:13 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7268e169ec)

    mdbox: Optimize mail_temp_scan_interval storage/ scanning

    Use the generic dbox scanning code, which avoids stat()ing the directory by 
    keeping the timestamp in index header. Also do the scanning while at session
    deinit instead of startup, so the latency isn't visible to clients.

M	src/lib-storage/index/dbox-multi/mdbox-map.c

2023-06-20 18:58:00 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (37ddfe8efb)

    lib-storage: Split off index_mailbox_view_update_last_temp_file_scan()


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

2023-06-20 22:28:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6b4a3f8e7b)

    dbox: mail_temp_scan_interval - Fix deleted temp file prefix

    dbox files are always created with DBOX_TEMP_FILE_PREFIX, not the mailbox 
    list-specific prefix. This was a problem only if dbox was used with 
    LAYOUT=Maildir++, which nobody was likely to do. Other layouts had identical
    temp file prefixes to DBOX_TEMP_FILE_PREFIX.

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

2023-06-20 18:54:49 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (41ddf30762)

    dbox: Split off dbox_mailbox_list_cleanup()


M	src/lib-storage/index/dbox-common/dbox-storage.c
M	src/lib-storage/index/dbox-common/dbox-storage.h

2023-06-20 18:44:52 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (58028ecbcf)

    mdbox: Don't do temp file scanning for mailbox directories

    The intention was to delete any temporary mail files that have been left 
    behind by crashed processes, but mail files are written to storage/ 
    directory.

M	src/lib-storage/index/dbox-common/dbox-storage.c
M	src/lib-storage/index/dbox-common/dbox-storage.h
M	src/lib-storage/index/dbox-single/sdbox-storage.c

2023-06-20 18:24:34 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a8424a71d7)

    mdbox: Fix fdatasync() path when saving mails

    It was supposed to be called on the parent directory of where mails were 
    written, i.e. storage/ directory. The previous code was instead calling it 
    on the mailbox-specific directory (similarly to sdbox) where nothing was 
    written.

M	src/lib-storage/index/dbox-multi/mdbox-save.c

2023-06-20 18:21:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c6935e5ef2)

    mdbox: Fix crash if fdatasync_path() fails

    There is no dest_mail anymore at this stage of transaction.

M	src/lib-storage/index/dbox-multi/mdbox-save.c

2023-04-12 12:06:52 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (7bb46f7e89)

    lib-storage: Rollback save transaction when transaction commit fails.


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

2023-02-05 20:51:12 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (ac81ce75a6)

    sdbox: Fix panic due to leaked mail_index_view if sync fails

    Fixes: Panic: Leaked view for index .../dbox-Mails/dovecot.index: Opened in
    mail-index-sync.c:445

M	src/lib-storage/index/dbox-single/sdbox-sync.c

2023-02-05 20:50:06 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (aae93d3ea7)

    lib-index: Don't update log_file_tail_offset on sync if reading
    dovecot.index.log failed

    This is more of a theoretical issue, since dovecot.index.log read failure is 
    very unlikely.

M	src/lib-index/mail-index-sync-update.c

2023-02-05 20:47:08 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (830a7db7c0)

    lib-index: Don't update max_tail_offset if write to dovecot.index.log fails

    The max_tail_offset didn't actually increase in that situation. This fixes
    wrongly updating mail_index_header.log_file_tail_offset after write to
    dovecot.index.log failed (due to out of disk space), which in turn can cause
    some unexpected errors.

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

2023-02-05 20:46:34 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (08740f7902)

    lib-index: Fix event leak if purging dovecot.index.cache fails


M	src/lib-index/mail-cache-purge.c

2022-11-02 15:56:54 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (6d5eb29761)

    lib-oauth2: jwt - Allow missing 'typ' field


M	src/lib-oauth2/oauth2-jwt.c
M	src/lib-oauth2/test-oauth2-jwt.c

2020-05-28 15:05:08 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (9f528295d1)

    lib-oauth2: test-oauth2-jwt - Ensure we ignore 'none' algorithm


M	src/lib-oauth2/test-oauth2-jwt.c

2023-04-14 11:35:30 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3ea25161a3)

    lib-login: Don't update process title if verbose_proctitle=no

    Broken by 4fcd7f497577af361fc3313fbc07a61c14e17715

M	src/lib-master/master-login.c

2023-03-24 03:26:33 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (1e8d0face3)

    global: Enable login_server_settings.update_proctitle


M	src/imap-urlauth/imap-urlauth.c
M	src/imap/main.c
M	src/pop3/main.c
M	src/submission/main.c

2023-03-24 03:26:11 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (2a9b8c4e3a)

    lib-login: Add login_server_settings.update_proctitle

    Update the current login state in process title when enabled.

M	src/lib-master/master-login.c
M	src/lib-master/master-login.h

2023-03-24 04:02:28 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (5266019fbb)

    lib-login: Keep connection in server's linked list until it's fully freed

    Otherwise the connection isn't accessible from any global variables.

M	src/lib-master/master-login.c

2023-03-24 02:29:39 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (af6edaef3f)

    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.

M	src/imap/imap-master-client.c
M	src/imap/imap-master-client.h
M	src/imap/main.c

2023-03-24 02:00:37 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (ed42bc9c0f)

    lib-master: Set process title to [initializing] until
    master_service_init_finish()


M	src/lib-master/master-service.c

2023-03-24 02:02:58 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (d591711cdb)

    lib: Add process_title_get_counter()


M	src/lib/process-title.c
M	src/lib/process-title.h

2023-03-24 01:53:43 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (c7cf91d863)

    master: Set VERBOSE_PROCTITLE environment to child processes

    This is needed for updating process title during initialization before 
    settings are read.

M	src/lib-master/master-interface.h
M	src/master/service-process.c

2023-03-24 01:15:21 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (f89dec342d)

    imap: Disconnect imap-master client if it's not sending anything for 25
    seconds


M	src/imap/imap-master-client.c

2023-03-24 01:45:34 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (61e4e19d06)

    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.

M	src/imap/imap-client.c

2023-03-24 01:41:37 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (8eb93d1c41)

    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.

M	src/imap-hibernate/imap-client.c

2022-01-13 16:54:18 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (e4d6c8055e)

    imap: Add client.unhibernated boolean


M	src/imap/imap-client.c
M	src/imap/imap-client.h
M	src/imap/imap-common.h
M	src/imap/imap-master-client.c
M	src/imap/main.c
M	src/imap/test-imap-client-hibernate.c

2023-05-05 15:20:34 +0000 Marco Bettini <marco.bettini@open-xchange.com> (80ddfb7b30)

    auth: mech_gssapi_unwrap() - Release gss_release_buffe(outbuf) before
    returning


M	src/auth/mech-gssapi.c

2023-03-23 22:23:39 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (7566d8783f)

    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.

M	src/master/service-monitor.c
M	src/master/service-process.c
M	src/master/service.h

2023-03-23 16:07:26 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (d0e74ddac0)

    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.

M	src/master/service-monitor.c
M	src/master/service-process.c
M	src/master/service-process.h
M	src/master/service.h

2023-03-23 16:37:08 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (008622eb2c)

    master: Add asserts to make sure counters don't wrap


M	src/master/service-process.c

2023-03-23 16:36:10 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (6cfee1e183)

    master: Add service.process_idling to count number of idling processes


M	src/master/service-monitor.c
M	src/master/service-process.c
M	src/master/service.h

2023-03-23 15:09:43 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (a4e9e0c9b3)

    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.

M	src/master/main.c
M	src/master/master-client.c
M	src/master/service-monitor.c
M	src/master/service-process.c
M	src/master/service-process.h
M	src/master/service.c
M	src/master/service.h

2023-02-28 12:05:44 +0000 Marco Bettini <marco.bettini@open-xchange.com> (3b67507e97)

    dbox: dbox_cleanup_temp_files() - Fuzz scan interval adding 0..+30% based on
    username hash


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

2023-02-28 11:45:43 +0000 Marco Bettini <marco.bettini@open-xchange.com> (c3756423f0)

    dbox: dbox_cleanup_temp_files() - Reformat code


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

2023-02-28 11:44:48 +0000 Marco Bettini <marco.bettini@open-xchange.com> (5fcf0da179)

    dbox: dbox_cleanup_temp_files() - Remove unnecessary else/else if after
    returns


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

2023-02-28 11:30:22 +0000 Marco Bettini <marco.bettini@open-xchange.com> (e91d8309f5)

    dbox: dbox_mailbox_open() - Drop unused ctime


M	src/lib-storage/index/dbox-common/dbox-storage.c
M	src/lib-storage/index/dbox-common/dbox-storage.h
M	src/lib-storage/index/dbox-multi/mdbox-storage.c
M	src/lib-storage/index/dbox-single/sdbox-storage.c

2023-02-28 11:21:10 +0000 Marco Bettini <marco.bettini@open-xchange.com> (4bf0ee1814)

    dbox: dbox_mailbox_open() - Move dbox_cleanup_temp_files() to
    dbox_mailbox_close()


M	src/lib-storage/index/dbox-common/dbox-storage.c
M	src/lib-storage/index/dbox-common/dbox-storage.h
M	src/lib-storage/index/dbox-multi/mdbox-storage.c
M	src/lib-storage/index/dbox-single/sdbox-storage.c

2023-02-28 10:15:50 +0000 Marco Bettini <marco.bettini@open-xchange.com> (f18b8e9f46)

    dbox: dbox_mailbox_open() - Infer last_temp_file_scan from dir's atime if 0


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

2023-02-28 10:14:26 +0000 Marco Bettini <marco.bettini@open-xchange.com> (4ddb4f7656)

    dbox: dbox_mailbox_create() - Update last_temp_file_scan


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

2023-03-03 16:15:17 +0000 Marco Bettini <marco.bettini@open-xchange.com> (119d496acd)

    lib-storage: dbox_cleanup_temp_files() - Fix inverted check for ENOENT


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

2023-03-24 08:53:27 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (eab9fd0154)

    stats: openmetrics - Set field always when used

    Satisfied static analysers.

    Broken in ba19a18d54cb7cf7de93d6a235862a408cfe5828

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

2023-01-26 08:15:29 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (8aef0ce5ea)

    stats: openmetrics - Create metrics for all specified fields


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

2023-04-04 00:43:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4c74cf89f6)

    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.

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

2023-04-04 00:43:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e69f52d697)

    dsync: Refactor dsync_brain_mailbox_to_parts() into
    dsync_mailbox_name_to_parts()


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

2023-03-20 14:00:48 +0000 Marco Bettini <marco.bettini@open-xchange.com> (37f46933cf)

    virtual: virtual_backend_box_lookup() - Enforce callers to check if the call
    succeeded
[--snip--]
