summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2021-03-20 18:23:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2021-03-20 18:23:49 +0000
commit517f4243c4c191dab4467f208ddca466f89923e5 (patch)
tree290b564338f2ada85a0a905235861dae65179130
parentReleasing progress-linux version 1:2.3.11.3+dfsg1-2~progress5+u1. (diff)
downloaddovecot-517f4243c4c191dab4467f208ddca466f89923e5.tar.xz
dovecot-517f4243c4c191dab4467f208ddca466f89923e5.zip
Merging upstream version 1:2.3.13+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r--COPYING5
-rw-r--r--ChangeLog6982
-rw-r--r--Makefile.in10
-rw-r--r--NEWS136
-rw-r--r--aclocal.m42
-rw-r--r--config.h.in44
-rwxr-xr-xconfigure747
-rw-r--r--configure.ac36
-rw-r--r--doc/Makefile.in10
-rw-r--r--doc/example-config/Makefile.am1
-rw-r--r--doc/example-config/Makefile.in11
-rw-r--r--doc/example-config/conf.d/10-auth.conf5
-rw-r--r--doc/example-config/conf.d/10-mail.conf3
-rw-r--r--doc/example-config/conf.d/Makefile.am1
-rw-r--r--doc/example-config/conf.d/Makefile.in11
-rw-r--r--doc/example-config/conf.d/auth-vpopmail.conf.ext17
-rw-r--r--doc/example-config/dovecot-oauth2.conf.ext66
-rw-r--r--doc/man/Makefile.in10
-rw-r--r--doc/man/doveadm-auth.1.in28
-rw-r--r--doc/man/doveadm-proxy.1.in6
-rw-r--r--doc/man/doveadm-search-query.72
-rw-r--r--doc/wiki/Makefile.in10
-rw-r--r--dovecot-version.h2
-rw-r--r--m4/dovecot.m457
-rw-r--r--m4/want_cassandra.m426
-rw-r--r--m4/want_sia.m420
-rw-r--r--m4/want_vpopmail.m433
-rw-r--r--m4/want_zstd.m44
-rw-r--r--pigeonhole/ChangeLog632
-rw-r--r--pigeonhole/Makefile.am12
-rw-r--r--pigeonhole/Makefile.in12
-rw-r--r--pigeonhole/NEWS31
-rwxr-xr-xpigeonhole/configure28
-rw-r--r--pigeonhole/configure.ac4
-rw-r--r--pigeonhole/pigeonhole-version.h2
-rw-r--r--pigeonhole/src/lib-sieve-tool/sieve-tool.c353
-rw-r--r--pigeonhole/src/lib-sieve-tool/sieve-tool.h70
-rw-r--r--pigeonhole/src/lib-sieve/ext-fileinto.c110
-rw-r--r--pigeonhole/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c22
-rw-r--r--pigeonhole/src/lib-sieve/plugins/editheader/ext-editheader-common.c115
-rw-r--r--pigeonhole/src/lib-sieve/plugins/editheader/ext-editheader-common.h17
-rw-r--r--pigeonhole/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c148
-rw-r--r--pigeonhole/src/lib-sieve/plugins/metadata/tst-metadata.c31
-rw-r--r--pigeonhole/src/lib-sieve/plugins/metadata/tst-metadataexists.c125
-rw-r--r--pigeonhole/src/lib-sieve/plugins/relational/ext-relational-common.c66
-rw-r--r--pigeonhole/src/lib-sieve/plugins/relational/ext-relational-common.h22
-rw-r--r--pigeonhole/src/lib-sieve/plugins/special-use/tst-specialuse-exists.c173
-rw-r--r--pigeonhole/src/lib-sieve/sieve-actions.c2
-rw-r--r--pigeonhole/src/lib-sieve/sieve-actions.h2
-rw-r--r--pigeonhole/src/lib-sieve/sieve-address.c327
-rw-r--r--pigeonhole/src/lib-sieve/sieve-address.h42
-rw-r--r--pigeonhole/src/lib-sieve/sieve-interpreter.c124
-rw-r--r--pigeonhole/src/lib-sieve/sieve-interpreter.h3
-rw-r--r--pigeonhole/src/lib-sieve/sieve-result.c30
-rw-r--r--pigeonhole/src/lib-sieve/sieve-result.h5
-rw-r--r--pigeonhole/src/lib-sieve/sieve.c8
-rw-r--r--pigeonhole/src/managesieve-login/client.c2
-rw-r--r--pigeonhole/src/managesieve-login/managesieve-proxy.c227
-rw-r--r--pigeonhole/src/managesieve-login/managesieve-proxy.h4
-rw-r--r--pigeonhole/src/testsuite/cmd-test-config.c7
-rw-r--r--pigeonhole/src/testsuite/cmd-test-fail.c91
-rw-r--r--pigeonhole/src/testsuite/cmd-test-mailbox.c179
-rw-r--r--pigeonhole/src/testsuite/cmd-test-message.c315
-rw-r--r--pigeonhole/src/testsuite/cmd-test-result.c64
-rw-r--r--pigeonhole/src/testsuite/cmd-test.c123
-rw-r--r--pigeonhole/src/testsuite/testsuite-common.c170
-rw-r--r--pigeonhole/src/testsuite/testsuite-common.h39
-rw-r--r--pigeonhole/src/testsuite/testsuite-mailstore.c181
-rw-r--r--pigeonhole/src/testsuite/testsuite-mailstore.h16
-rw-r--r--pigeonhole/src/testsuite/testsuite-message.c88
-rw-r--r--pigeonhole/src/testsuite/testsuite-message.h2
-rw-r--r--pigeonhole/src/testsuite/testsuite-result.c5
-rw-r--r--pigeonhole/src/testsuite/testsuite.c15
-rw-r--r--pigeonhole/tests/compile/errors.svtest14
-rw-r--r--pigeonhole/tests/compile/errors/fileinto.sieve38
-rw-r--r--pigeonhole/tests/execute/errors.svtest17
-rw-r--r--pigeonhole/tests/execute/errors/fileinto-bad-utf8.sieve7
-rw-r--r--pigeonhole/tests/extensions/editheader/execute.svtest12
-rw-r--r--pigeonhole/tests/extensions/editheader/protected.svtest25
-rw-r--r--pigeonhole/tests/extensions/mailbox/errors.svtest40
-rw-r--r--pigeonhole/tests/extensions/mailbox/errors/mailboxexists-bad-utf8.sieve9
-rw-r--r--pigeonhole/tests/extensions/mailbox/errors/syntax.sieve41
-rw-r--r--pigeonhole/tests/extensions/metadata/errors.svtest38
-rw-r--r--pigeonhole/tests/extensions/metadata/errors/metadata-bad-utf8.sieve9
-rw-r--r--pigeonhole/tests/extensions/metadata/errors/metadataexists-bad-utf8.sieve9
-rw-r--r--pigeonhole/tests/extensions/metadata/errors/syntax.sieve17
-rw-r--r--pigeonhole/tests/extensions/relational/errors.svtest18
-rw-r--r--pigeonhole/tests/extensions/relational/errors/syntax.sieve8
-rw-r--r--pigeonhole/tests/extensions/special-use/errors.svtest20
-rw-r--r--pigeonhole/tests/extensions/special-use/errors/specialuse_exists-bad-utf8.sieve9
-rw-r--r--pigeonhole/tests/extensions/special-use/errors/syntax.sieve6
-rw-r--r--pigeonhole/tests/extensions/vacation/smtp.svtest42
-rw-r--r--pigeonhole/tests/failures/fuzz1.svtest33
-rw-r--r--pigeonhole/tests/failures/fuzz2.svtest37
-rw-r--r--pigeonhole/tests/plugins/extprograms/pipe/errors.svtest13
-rw-r--r--run-test-valgrind.supp12
-rw-r--r--src/Makefile.am1
-rw-r--r--src/Makefile.in15
-rw-r--r--src/anvil/Makefile.in10
-rw-r--r--src/anvil/anvil-connection.c2
-rw-r--r--src/anvil/anvil-settings.c2
-rw-r--r--src/auth/Makefile.am19
-rw-r--r--src/auth/Makefile.in81
-rw-r--r--src/auth/auth-cache.c44
-rw-r--r--src/auth/auth-cache.h2
-rw-r--r--src/auth/auth-client-connection.c5
-rw-r--r--src/auth/auth-fields.c2
-rw-r--r--src/auth/auth-master-connection.c34
-rw-r--r--src/auth/auth-penalty.c10
-rw-r--r--src/auth/auth-policy.c17
-rw-r--r--src/auth/auth-request-fields.c522
-rw-r--r--src/auth/auth-request-handler.c113
-rw-r--r--src/auth/auth-request-handler.h2
-rw-r--r--src/auth/auth-request-stats.c6
-rw-r--r--src/auth/auth-request-var-expand.c107
-rw-r--r--src/auth/auth-request-var-expand.h5
-rw-r--r--src/auth/auth-request.c729
-rw-r--r--src/auth/auth-request.h119
-rw-r--r--src/auth/auth-settings.c12
-rw-r--r--src/auth/auth-worker-client.c71
-rw-r--r--src/auth/auth-worker-server.c2
-rw-r--r--src/auth/crypt-blowfish.c6
-rw-r--r--src/auth/db-checkpassword.c57
-rw-r--r--src/auth/db-ldap.c6
-rw-r--r--src/auth/db-lua.c32
-rw-r--r--src/auth/db-oauth2.c74
-rw-r--r--src/auth/db-passwd-file.c2
-rw-r--r--src/auth/main.c8
-rw-r--r--src/auth/mech-anonymous.c8
-rw-r--r--src/auth/mech-digest-md5.c9
-rw-r--r--src/auth/mech-dovecot-token.c3
-rw-r--r--src/auth/mech-external.c2
-rw-r--r--src/auth/mech-gssapi.c15
-rw-r--r--src/auth/mech-login.c2
-rw-r--r--src/auth/mech-ntlm.c260
-rw-r--r--src/auth/mech-otp-common.c (renamed from src/auth/mech-otp-skey-common.c)12
-rw-r--r--src/auth/mech-otp-common.h (renamed from src/auth/mech-otp-skey-common.h)6
-rw-r--r--src/auth/mech-otp.c28
-rw-r--r--src/auth/mech-plain.c2
-rw-r--r--src/auth/mech-rpa.c590
-rw-r--r--src/auth/mech-scram.c4
-rw-r--r--src/auth/mech-skey.c199
-rw-r--r--src/auth/mech-winbind.c2
-rw-r--r--src/auth/mech.c9
-rw-r--r--src/auth/passdb-blocking.c8
-rw-r--r--src/auth/passdb-bsdauth.c7
-rw-r--r--src/auth/passdb-cache.c2
-rw-r--r--src/auth/passdb-checkpassword.c2
-rw-r--r--src/auth/passdb-dict.c5
-rw-r--r--src/auth/passdb-imap.c2
-rw-r--r--src/auth/passdb-ldap.c8
-rw-r--r--src/auth/passdb-lua.c2
-rw-r--r--src/auth/passdb-pam.c8
-rw-r--r--src/auth/passdb-passwd.c2
-rw-r--r--src/auth/passdb-shadow.c2
-rw-r--r--src/auth/passdb-sia.c66
-rw-r--r--src/auth/passdb-sql.c5
-rw-r--r--src/auth/passdb-static.c2
-rw-r--r--src/auth/passdb-vpopmail.c229
-rw-r--r--src/auth/passdb.c25
-rw-r--r--src/auth/password-scheme-rpa.c36
-rw-r--r--src/auth/password-scheme.c73
-rw-r--r--src/auth/password-scheme.h1
-rw-r--r--src/auth/test-auth-cache.c23
-rw-r--r--src/auth/test-auth-request-fields.c147
-rw-r--r--src/auth/test-auth-request-var-expand.c90
-rw-r--r--src/auth/test-auth.h3
-rw-r--r--src/auth/test-libpassword.c5
-rw-r--r--src/auth/test-lua.c62
-rw-r--r--src/auth/test-main.c1
-rw-r--r--src/auth/test-mech.c100
-rw-r--r--src/auth/userdb-blocking.c11
-rw-r--r--src/auth/userdb-passwd-file.c2
-rw-r--r--src/auth/userdb-passwd.c4
-rw-r--r--src/auth/userdb-static.c2
-rw-r--r--src/auth/userdb-vpopmail.c202
-rw-r--r--src/auth/userdb-vpopmail.h17
-rw-r--r--src/auth/userdb.c2
-rw-r--r--src/config/Makefile.in10
-rw-r--r--src/config/all-settings.c249
-rw-r--r--src/config/config-connection.c2
-rw-r--r--src/config/config-parser.c6
-rw-r--r--src/config/config-request.c2
-rw-r--r--src/config/config-settings.c2
-rw-r--r--src/dict/Makefile.in10
-rw-r--r--src/dict/dict-commands.c38
-rw-r--r--src/dict/dict-connection.h1
-rw-r--r--src/dict/dict-settings.c8
-rw-r--r--src/director/Makefile.in10
-rw-r--r--src/director/auth-connection.c17
-rw-r--r--src/director/auth-connection.h5
-rw-r--r--src/director/director-connection.c279
-rw-r--r--src/director/director-request.c41
-rw-r--r--src/director/director-settings.c6
-rw-r--r--src/director/director-test.c14
-rw-r--r--src/director/director.c158
-rw-r--r--src/director/director.h5
-rw-r--r--src/director/doveadm-connection.c43
-rw-r--r--src/director/login-connection.c18
-rw-r--r--src/director/mail-host.c34
-rw-r--r--src/director/mail-host.h4
-rw-r--r--src/director/main.c7
-rw-r--r--src/director/notify-connection.c10
-rw-r--r--src/director/test-user-directory.c6
-rw-r--r--src/director/user-directory.c9
-rw-r--r--src/director/user-directory.h4
-rw-r--r--src/dns/Makefile.in10
-rw-r--r--src/dns/dns-client-settings.c2
-rw-r--r--src/dns/dns-client.c4
-rw-r--r--src/doveadm/Makefile.am1
-rw-r--r--src/doveadm/Makefile.in11
-rw-r--r--src/doveadm/client-connection-tcp.c7
-rw-r--r--src/doveadm/doveadm-auth.c46
-rw-r--r--src/doveadm/doveadm-director.c2
-rw-r--r--src/doveadm/doveadm-dsync.c8
-rw-r--r--src/doveadm/doveadm-dump-dbox.c2
-rw-r--r--src/doveadm/doveadm-dump-index.c2
-rw-r--r--src/doveadm/doveadm-dump-log.c4
-rw-r--r--src/doveadm/doveadm-log.c2
-rw-r--r--src/doveadm/doveadm-mail-mailbox-cache.c2
-rw-r--r--src/doveadm/doveadm-mail-mailbox-status.c12
-rw-r--r--src/doveadm/doveadm-mail.c2
-rw-r--r--src/doveadm/doveadm-oldstats.c6
-rw-r--r--src/doveadm/doveadm-penalty.c2
-rw-r--r--src/doveadm/doveadm-proxy.c17
-rw-r--r--src/doveadm/doveadm-replicator.c2
-rw-r--r--src/doveadm/doveadm-settings.c6
-rw-r--r--src/doveadm/doveadm-stats.c2
-rw-r--r--src/doveadm/doveadm-who.c2
-rw-r--r--src/doveadm/doveadm-zlib.c2
-rw-r--r--src/doveadm/dsync/Makefile.in10
-rw-r--r--src/doveadm/dsync/dsync-brain.c4
-rw-r--r--src/doveadm/dsync/dsync-ibc-stream.c2
-rw-r--r--src/doveadm/dsync/dsync-mail.h2
-rw-r--r--src/doveadm/dsync/dsync-mailbox-export.c4
-rw-r--r--src/doveadm/dsync/dsync-mailbox-import.c4
-rw-r--r--src/doveadm/dsync/dsync-transaction-log-scan.c6
-rw-r--r--src/doveadm/main.c1
-rw-r--r--src/doveadm/server-connection.c4
-rw-r--r--src/imap-hibernate/Makefile.in10
-rw-r--r--src/imap-hibernate/imap-client.c96
-rw-r--r--src/imap-hibernate/imap-client.h3
-rw-r--r--src/imap-hibernate/imap-hibernate-client.c32
-rw-r--r--src/imap-hibernate/imap-hibernate-settings.c2
-rw-r--r--src/imap-hibernate/imap-master-connection.c7
-rw-r--r--src/imap-login/Makefile.in10
-rw-r--r--src/imap-login/imap-login-client.c75
-rw-r--r--src/imap-login/imap-login-settings.c6
-rw-r--r--src/imap-login/imap-proxy.c162
-rw-r--r--src/imap-login/imap-proxy.h4
-rw-r--r--src/imap-urlauth/Makefile.in10
-rw-r--r--src/imap-urlauth/imap-urlauth-client.c4
-rw-r--r--src/imap-urlauth/imap-urlauth-login-settings.c6
-rw-r--r--src/imap-urlauth/imap-urlauth-settings.c6
-rw-r--r--src/imap-urlauth/imap-urlauth-worker-settings.c6
-rw-r--r--src/imap-urlauth/imap-urlauth-worker.c6
-rw-r--r--src/imap/Makefile.am22
-rw-r--r--src/imap/Makefile.in78
-rw-r--r--src/imap/cmd-append.c7
-rw-r--r--src/imap/cmd-getmetadata.c7
-rw-r--r--src/imap/cmd-id.c2
-rw-r--r--src/imap/cmd-idle.c11
-rw-r--r--src/imap/cmd-list.c6
-rw-r--r--src/imap/cmd-notify.c5
-rw-r--r--src/imap/cmd-urlfetch.c4
-rw-r--r--src/imap/imap-client-hibernate.c91
-rw-r--r--src/imap/imap-client.c75
-rw-r--r--src/imap/imap-client.h5
-rw-r--r--src/imap/imap-fetch-body.c10
-rw-r--r--src/imap/imap-fetch.c2
-rw-r--r--src/imap/imap-master-client.c114
-rw-r--r--src/imap/imap-notify.c2
-rw-r--r--src/imap/imap-search.c7
-rw-r--r--src/imap/imap-settings.c6
-rw-r--r--src/imap/imap-sync.c8
-rw-r--r--src/imap/main.c10
-rw-r--r--src/imap/test-imap-client-hibernate.c290
-rw-r--r--src/indexer/Makefile.in10
-rw-r--r--src/indexer/indexer-client.c2
-rw-r--r--src/indexer/indexer-settings.c2
-rw-r--r--src/indexer/indexer-worker-settings.c2
-rw-r--r--src/indexer/master-connection.c2
-rw-r--r--src/indexer/worker-connection.c4
-rw-r--r--src/ipc/Makefile.in10
-rw-r--r--src/ipc/client.c4
-rw-r--r--src/ipc/ipc-connection.c4
-rw-r--r--src/ipc/ipc-settings.c2
-rw-r--r--src/lda/Makefile.in10
-rw-r--r--src/lda/main.c2
-rw-r--r--src/lib-auth/Makefile.in10
-rw-r--r--src/lib-auth/auth-client-connection.c43
-rw-r--r--src/lib-auth/auth-client-private.h1
-rw-r--r--src/lib-auth/auth-client-request.c102
-rw-r--r--src/lib-auth/auth-client.h1
-rw-r--r--src/lib-auth/auth-master.c39
-rw-r--r--src/lib-auth/auth-master.h4
-rw-r--r--src/lib-charset/Makefile.in10
-rw-r--r--src/lib-charset/charset-iconv.c6
-rw-r--r--src/lib-compression/Makefile.am3
-rw-r--r--src/lib-compression/Makefile.in19
-rw-r--r--src/lib-compression/compression.c34
-rw-r--r--src/lib-compression/compression.h18
-rw-r--r--src/lib-compression/iostream-zstd-private.h35
-rw-r--r--src/lib-compression/istream-bzlib.c11
-rw-r--r--src/lib-compression/istream-lz4.c8
-rw-r--r--src/lib-compression/istream-lzma.c20
-rw-r--r--src/lib-compression/istream-zlib.c8
-rw-r--r--src/lib-compression/istream-zstd.c64
-rw-r--r--src/lib-compression/ostream-bzlib.c7
-rw-r--r--src/lib-compression/ostream-lzma.c10
-rw-r--r--src/lib-compression/ostream-zlib.c7
-rw-r--r--src/lib-compression/ostream-zstd.c65
-rw-r--r--src/lib-compression/test-compression.c130
-rw-r--r--src/lib-dcrypt/Makefile.in10
-rw-r--r--src/lib-dcrypt/dcrypt-openssl.c282
-rw-r--r--src/lib-dcrypt/ostream-encrypt.c8
-rw-r--r--src/lib-dict-backend/Makefile.in10
-rw-r--r--src/lib-dict-backend/dict-cdb.c4
-rw-r--r--src/lib-dict-backend/dict-sql.c21
-rw-r--r--src/lib-dict-extra/Makefile.in10
-rw-r--r--src/lib-dict/Makefile.in10
-rw-r--r--src/lib-dict/dict-client.c36
-rw-r--r--src/lib-dict/dict-file.c2
-rw-r--r--src/lib-dict/dict-memcached-ascii.c4
-rw-r--r--src/lib-dict/dict-memcached.c4
-rw-r--r--src/lib-dict/dict-private.h3
-rw-r--r--src/lib-dict/dict-redis.c4
-rw-r--r--src/lib-dict/dict.c80
-rw-r--r--src/lib-dns/Makefile.in10
-rw-r--r--src/lib-dns/dns-lookup.c4
-rw-r--r--src/lib-dns/dns-util.c2
-rw-r--r--src/lib-dovecot/Makefile.in10
-rw-r--r--src/lib-fs/Makefile.in10
-rw-r--r--src/lib-fs/fs-api-private.h2
-rw-r--r--src/lib-fs/fs-api.c33
-rw-r--r--src/lib-fs/fs-dict.c7
-rw-r--r--src/lib-fs/fs-metawrap.c45
-rw-r--r--src/lib-fs/fs-posix.c7
-rw-r--r--src/lib-fs/fs-randomfail.c50
-rw-r--r--src/lib-fs/fs-sis-queue.c25
-rw-r--r--src/lib-fs/fs-sis.c25
-rw-r--r--src/lib-fs/fs-test-async.c10
-rw-r--r--src/lib-fs/fs-test.c7
-rw-r--r--src/lib-fts/Makefile.in10
-rw-r--r--src/lib-fts/test-fts-filter.c8
-rw-r--r--src/lib-fts/test-fts-tokenizer.c4
-rw-r--r--src/lib-http/Makefile.in10
-rw-r--r--src/lib-http/http-client-connection.c549
-rw-r--r--src/lib-http/http-client-host.c204
-rw-r--r--src/lib-http/http-client-peer.c351
-rw-r--r--src/lib-http/http-client-private.h218
-rw-r--r--src/lib-http/http-client-queue.c451
-rw-r--r--src/lib-http/http-client-request.c201
-rw-r--r--src/lib-http/http-header-parser.c4
-rw-r--r--src/lib-http/http-message-parser.c4
-rw-r--r--src/lib-http/http-response-parser.c2
-rw-r--r--src/lib-http/http-server-connection.c4
-rw-r--r--src/lib-http/http-server-request.c5
-rw-r--r--src/lib-http/http-server-resource.c4
-rw-r--r--src/lib-http/http-server-response.c2
-rw-r--r--src/lib-http/test-http-client-errors.c600
-rw-r--r--src/lib-http/test-http-payload.c331
-rw-r--r--src/lib-http/test-http-server-errors.c163
-rw-r--r--src/lib-imap-client/Makefile.in10
-rw-r--r--src/lib-imap-client/imapc-client.h2
-rw-r--r--src/lib-imap-client/imapc-connection.c11
-rw-r--r--src/lib-imap-client/test-imapc-client.c505
-rw-r--r--src/lib-imap-storage/Makefile.in10
-rw-r--r--src/lib-imap-storage/imap-msgpart-url.c2
-rw-r--r--src/lib-imap-storage/imap-msgpart.c12
-rw-r--r--src/lib-imap-storage/imap-msgpart.h2
-rw-r--r--src/lib-imap-urlauth/Makefile.in10
-rw-r--r--src/lib-imap-urlauth/imap-urlauth-connection.c6
-rw-r--r--src/lib-imap/Makefile.in10
-rw-r--r--src/lib-imap/imap-bodystructure.c44
-rw-r--r--src/lib-imap/imap-envelope.c2
-rw-r--r--src/lib-imap/imap-id.c2
-rw-r--r--src/lib-imap/imap-parser.c73
-rw-r--r--src/lib-imap/imap-parser.h12
-rw-r--r--src/lib-imap/imap-utf7.c4
-rw-r--r--src/lib-imap/test-imap-bodystructure.c108
-rw-r--r--src/lib-imap/test-imap-parser.c67
-rw-r--r--src/lib-index/Makefile.in10
-rw-r--r--src/lib-index/mail-cache-decisions.c2
-rw-r--r--src/lib-index/mail-cache-fields.c46
-rw-r--r--src/lib-index/mail-cache-private.h18
-rw-r--r--src/lib-index/mail-cache-purge.c112
-rw-r--r--src/lib-index/mail-cache-transaction.c37
-rw-r--r--src/lib-index/mail-cache.c30
-rw-r--r--src/lib-index/mail-cache.h6
-rw-r--r--src/lib-index/mail-index-fsck.c4
-rw-r--r--src/lib-index/mail-index-map-hdr.c4
-rw-r--r--src/lib-index/mail-index-map-read.c8
-rw-r--r--src/lib-index/mail-index-map.c2
-rw-r--r--src/lib-index/mail-index-private.h5
-rw-r--r--src/lib-index/mail-index-strmap.c2
-rw-r--r--src/lib-index/mail-index-sync-keywords.c2
-rw-r--r--src/lib-index/mail-index-sync-update.c8
-rw-r--r--src/lib-index/mail-index-sync.c13
-rw-r--r--src/lib-index/mail-index-transaction-update.c12
-rw-r--r--src/lib-index/mail-index-transaction-view.c2
-rw-r--r--src/lib-index/mail-index-transaction.c3
-rw-r--r--src/lib-index/mail-index-util.c4
-rw-r--r--src/lib-index/mail-index-view-private.h13
-rw-r--r--src/lib-index/mail-index-view-sync.c4
-rw-r--r--src/lib-index/mail-index-view.c16
-rw-r--r--src/lib-index/mail-index-write.c5
-rw-r--r--src/lib-index/mail-index.c2
-rw-r--r--src/lib-index/mail-transaction-log-append.c4
-rw-r--r--src/lib-index/mail-transaction-log-file.c20
-rw-r--r--src/lib-index/mail-transaction-log-private.h2
-rw-r--r--src/lib-index/mail-transaction-log-view.c16
-rw-r--r--src/lib-index/mail-transaction-log.c2
-rw-r--r--src/lib-index/test-mail-cache-purge.c2
-rw-r--r--src/lib-index/test-mail-index-transaction-update.c2
-rw-r--r--src/lib-index/test-mail-transaction-log-view.c10
-rw-r--r--src/lib-lda/Makefile.in10
-rw-r--r--src/lib-lda/lda-settings.c4
-rw-r--r--src/lib-lda/mail-deliver.c6
-rw-r--r--src/lib-ldap/Makefile.in10
-rw-r--r--src/lib-ldap/ldap-connection.c39
-rw-r--r--src/lib-lua/Makefile.in10
-rw-r--r--src/lib-lua/dlua-dovecot.c2
-rw-r--r--src/lib-mail/Makefile.in10
-rw-r--r--src/lib-mail/istream-attachment-connector.c4
-rw-r--r--src/lib-mail/istream-attachment-connector.h2
-rw-r--r--src/lib-mail/istream-header-filter.c16
-rw-r--r--src/lib-mail/mail-html2text.c2
-rw-r--r--src/lib-mail/message-decoder.c2
-rw-r--r--src/lib-mail/message-header-encode.c265
-rw-r--r--src/lib-mail/message-header-encode.h24
-rw-r--r--src/lib-mail/message-parser-private.h2
-rw-r--r--src/lib-mail/message-parser.c20
-rw-r--r--src/lib-mail/qp-decoder.c24
-rw-r--r--src/lib-mail/test-istream-attachment.c6
-rw-r--r--src/lib-mail/test-istream-dot.c2
-rw-r--r--src/lib-mail/test-message-header-decode.c130
-rw-r--r--src/lib-mail/test-message-header-encode.c71
-rw-r--r--src/lib-mail/test-message-header-hash.c8
-rw-r--r--src/lib-mail/test-message-parser.c105
-rw-r--r--src/lib-master/Makefile.in10
-rw-r--r--src/lib-master/anvil-client.c2
-rw-r--r--src/lib-master/ipc-client.c4
-rw-r--r--src/lib-master/ipc-server.c4
-rw-r--r--src/lib-master/master-instance.c2
-rw-r--r--src/lib-master/master-login-auth.c2
-rw-r--r--src/lib-master/master-login.c2
-rw-r--r--src/lib-master/master-service-settings-cache.c2
-rw-r--r--src/lib-master/master-service-settings.c125
-rw-r--r--src/lib-master/master-service-settings.h4
-rw-r--r--src/lib-master/master-service-ssl-settings.c4
-rw-r--r--src/lib-master/master-service-ssl.c8
-rw-r--r--src/lib-master/master-service.c45
-rw-r--r--src/lib-master/master-service.h5
-rw-r--r--src/lib-master/stats-client.c29
-rw-r--r--src/lib-master/test-event-stats.c118
-rw-r--r--src/lib-master/test-master-service-settings-cache.c4
-rw-r--r--src/lib-ntlm/Makefile.am18
-rw-r--r--src/lib-ntlm/Makefile.in744
-rw-r--r--src/lib-ntlm/ntlm-byteorder.h108
-rw-r--r--src/lib-ntlm/ntlm-des.c595
-rw-r--r--src/lib-ntlm/ntlm-des.h7
-rw-r--r--src/lib-ntlm/ntlm-encrypt.c140
-rw-r--r--src/lib-ntlm/ntlm-encrypt.h23
-rw-r--r--src/lib-ntlm/ntlm-flags.h137
-rw-r--r--src/lib-ntlm/ntlm-message.c261
-rw-r--r--src/lib-ntlm/ntlm-message.h13
-rw-r--r--src/lib-ntlm/ntlm-types.h130
-rw-r--r--src/lib-ntlm/ntlm.h36
-rw-r--r--src/lib-oauth2/Makefile.in10
-rw-r--r--src/lib-oauth2/test-oauth2-jwt.c18
-rw-r--r--src/lib-old-stats/Makefile.in10
-rw-r--r--src/lib-otp/Makefile.in10
-rw-r--r--src/lib-otp/otp-hash.c2
-rw-r--r--src/lib-otp/otp-parse.c3
-rw-r--r--src/lib-program-client/Makefile.in10
-rw-r--r--src/lib-program-client/program-client-local.c32
-rw-r--r--src/lib-program-client/program-client.c4
-rw-r--r--src/lib-program-client/test-program-client-local.c26
-rw-r--r--src/lib-program-client/test-program-client-net.c6
-rw-r--r--src/lib-program-client/test-program-client-unix.c6
-rw-r--r--src/lib-sasl/Makefile.in10
-rw-r--r--src/lib-settings/Makefile.in10
-rw-r--r--src/lib-settings/settings-parser.c14
-rw-r--r--src/lib-settings/settings.c4
-rw-r--r--src/lib-smtp/Makefile.am2
-rw-r--r--src/lib-smtp/Makefile.in12
-rw-r--r--src/lib-smtp/smtp-client-command.c5
-rw-r--r--src/lib-smtp/smtp-client-connection.c600
-rw-r--r--src/lib-smtp/smtp-client-connection.h24
-rw-r--r--src/lib-smtp/smtp-client-private.h14
-rw-r--r--src/lib-smtp/smtp-client-transaction.c3
-rw-r--r--src/lib-smtp/smtp-client.h2
-rw-r--r--src/lib-smtp/smtp-command-parser.c121
-rw-r--r--src/lib-smtp/smtp-params.c314
-rw-r--r--src/lib-smtp/smtp-params.h53
-rw-r--r--src/lib-smtp/smtp-reply-parser.c2
-rw-r--r--src/lib-smtp/smtp-server-cmd-mail.c32
-rw-r--r--src/lib-smtp/smtp-server-cmd-rcpt.c54
-rw-r--r--src/lib-smtp/smtp-server-command.c117
-rw-r--r--src/lib-smtp/smtp-server-connection.c263
-rw-r--r--src/lib-smtp/smtp-server-private.h56
-rw-r--r--src/lib-smtp/smtp-server-recipient.c48
-rw-r--r--src/lib-smtp/smtp-server-reply.c2
-rw-r--r--src/lib-smtp/smtp-server-transaction.c2
-rw-r--r--src/lib-smtp/smtp-submit-settings.c4
-rw-r--r--src/lib-smtp/smtp-syntax.c46
-rw-r--r--src/lib-smtp/smtp-syntax.h4
-rw-r--r--src/lib-smtp/test-smtp-client-errors.c1566
-rw-r--r--src/lib-smtp/test-smtp-command-parser.c390
-rw-r--r--src/lib-smtp/test-smtp-payload.c349
-rw-r--r--src/lib-smtp/test-smtp-server-errors.c980
-rw-r--r--src/lib-smtp/test-smtp-submit.c839
-rw-r--r--src/lib-sql/Makefile.in10
-rw-r--r--src/lib-sql/driver-cassandra.c369
-rw-r--r--src/lib-sql/sql-api.c4
-rw-r--r--src/lib-ssl-iostream/Makefile.in10
-rw-r--r--src/lib-ssl-iostream/iostream-openssl-context.c5
-rw-r--r--src/lib-ssl-iostream/iostream-openssl.c37
-rw-r--r--src/lib-ssl-iostream/iostream-openssl.h9
-rw-r--r--src/lib-ssl-iostream/istream-openssl.c2
-rw-r--r--src/lib-ssl-iostream/ostream-openssl.c30
-rw-r--r--src/lib-storage/Makefile.in10
-rw-r--r--src/lib-storage/fail-mailbox.c3
-rw-r--r--src/lib-storage/index/Makefile.in10
-rw-r--r--src/lib-storage/index/cydir/Makefile.in10
-rw-r--r--src/lib-storage/index/cydir/cydir-save.c2
-rw-r--r--src/lib-storage/index/cydir/cydir-storage.c2
-rw-r--r--src/lib-storage/index/dbox-common/Makefile.in10
-rw-r--r--src/lib-storage/index/dbox-common/dbox-file-fix.c10
-rw-r--r--src/lib-storage/index/dbox-common/dbox-file.c16
-rw-r--r--src/lib-storage/index/dbox-common/dbox-mail.c2
-rw-r--r--src/lib-storage/index/dbox-common/dbox-save.c2
-rw-r--r--src/lib-storage/index/dbox-multi/Makefile.in10
-rw-r--r--src/lib-storage/index/dbox-multi/mdbox-file.c2
-rw-r--r--src/lib-storage/index/dbox-multi/mdbox-mail.c2
-rw-r--r--src/lib-storage/index/dbox-multi/mdbox-purge.c4
-rw-r--r--src/lib-storage/index/dbox-multi/mdbox-settings.c4
-rw-r--r--src/lib-storage/index/dbox-multi/mdbox-storage.c2
-rw-r--r--src/lib-storage/index/dbox-single/Makefile.in10
-rw-r--r--src/lib-storage/index/dbox-single/sdbox-copy.c2
-rw-r--r--src/lib-storage/index/dbox-single/sdbox-storage.c2
-rw-r--r--src/lib-storage/index/imapc/Makefile.in10
-rw-r--r--src/lib-storage/index/imapc/imapc-list.c2
-rw-r--r--src/lib-storage/index/imapc/imapc-mail-fetch.c22
-rw-r--r--src/lib-storage/index/imapc/imapc-mail.c6
-rw-r--r--src/lib-storage/index/imapc/imapc-mailbox.c2
-rw-r--r--src/lib-storage/index/imapc/imapc-save.c3
-rw-r--r--src/lib-storage/index/imapc/imapc-settings.c4
-rw-r--r--src/lib-storage/index/imapc/imapc-storage.c4
-rw-r--r--src/lib-storage/index/index-mail-binary.c2
-rw-r--r--src/lib-storage/index/index-mail-headers.c42
-rw-r--r--src/lib-storage/index/index-mail.c138
-rw-r--r--src/lib-storage/index/index-mail.h7
-rw-r--r--src/lib-storage/index/index-search.c4
-rw-r--r--src/lib-storage/index/index-status.c4
-rw-r--r--src/lib-storage/index/index-storage.c11
-rw-r--r--src/lib-storage/index/istream-mail.c11
-rw-r--r--src/lib-storage/index/maildir/Makefile.in10
-rw-r--r--src/lib-storage/index/maildir/maildir-copy.c4
-rw-r--r--src/lib-storage/index/maildir/maildir-filename-flags.c10
-rw-r--r--src/lib-storage/index/maildir/maildir-mail.c22
-rw-r--r--src/lib-storage/index/maildir/maildir-save.c23
-rw-r--r--src/lib-storage/index/maildir/maildir-settings.c4
-rw-r--r--src/lib-storage/index/maildir/maildir-sync-index.c4
-rw-r--r--src/lib-storage/index/maildir/maildir-uidlist.c20
-rw-r--r--src/lib-storage/index/mbox/Makefile.in10
-rw-r--r--src/lib-storage/index/mbox/istream-raw-mbox.c54
-rw-r--r--src/lib-storage/index/mbox/istream-raw-mbox.h4
-rw-r--r--src/lib-storage/index/mbox/mbox-lock.c2
-rw-r--r--src/lib-storage/index/mbox/mbox-mail.c8
-rw-r--r--src/lib-storage/index/mbox/mbox-save.c26
-rw-r--r--src/lib-storage/index/mbox/mbox-settings.c4
-rw-r--r--src/lib-storage/index/mbox/mbox-sync-parse.c10
-rw-r--r--src/lib-storage/index/mbox/mbox-sync-rewrite.c26
-rw-r--r--src/lib-storage/index/mbox/mbox-sync-update.c50
-rw-r--r--src/lib-storage/index/mbox/mbox-sync.c18
-rw-r--r--src/lib-storage/index/pop3c/Makefile.in10
-rw-r--r--src/lib-storage/index/pop3c/pop3c-client.c2
-rw-r--r--src/lib-storage/index/pop3c/pop3c-mail.c4
-rw-r--r--src/lib-storage/index/pop3c/pop3c-settings.c4
-rw-r--r--src/lib-storage/index/pop3c/pop3c-storage.c2
-rw-r--r--src/lib-storage/index/raw/Makefile.in10
-rw-r--r--src/lib-storage/index/raw/raw-mail.c6
-rw-r--r--src/lib-storage/index/raw/raw-storage.c4
-rw-r--r--src/lib-storage/index/shared/Makefile.in10
-rw-r--r--src/lib-storage/list/Makefile.in10
-rw-r--r--src/lib-storage/list/mailbox-list-fs-iter.c12
-rw-r--r--src/lib-storage/list/mailbox-list-index-backend.c8
-rw-r--r--src/lib-storage/list/mailbox-list-index-iter.c3
-rw-r--r--src/lib-storage/list/mailbox-list-index-notify.c2
-rw-r--r--src/lib-storage/list/mailbox-list-index-status.c10
-rw-r--r--src/lib-storage/list/mailbox-list-index-sync.c2
-rw-r--r--src/lib-storage/list/mailbox-list-index.c33
-rw-r--r--src/lib-storage/list/mailbox-list-iter.c20
-rw-r--r--src/lib-storage/list/mailbox-list-maildir-iter.c16
-rw-r--r--src/lib-storage/list/mailbox-list-subscriptions.c4
-rw-r--r--src/lib-storage/mail-namespace.h6
-rw-r--r--src/lib-storage/mail-storage-service.c7
-rw-r--r--src/lib-storage/mail-storage-service.h2
-rw-r--r--src/lib-storage/mail-storage-settings.c17
-rw-r--r--src/lib-storage/mail-storage-settings.h3
-rw-r--r--src/lib-storage/mail-storage.c6
-rw-r--r--src/lib-storage/mail-user.c5
-rw-r--r--src/lib-storage/mailbox-attribute.c4
-rw-r--r--src/lib-storage/mailbox-get.c14
-rw-r--r--src/lib-test/Makefile.am6
-rw-r--r--src/lib-test/Makefile.in20
-rw-r--r--src/lib-test/test-common.c11
-rw-r--r--src/lib-test/test-common.h3
-rw-r--r--src/lib-test/test-istream.c4
-rw-r--r--src/lib-test/test-ostream.c4
-rw-r--r--src/lib-test/test-subprocess.c335
-rw-r--r--src/lib-test/test-subprocess.h29
-rw-r--r--src/lib/Makefile.am34
-rw-r--r--src/lib/Makefile.in144
-rw-r--r--src/lib/array.c2
-rw-r--r--src/lib/array.h2
-rw-r--r--src/lib/askpass.c2
-rw-r--r--src/lib/base64.c89
-rw-r--r--src/lib/base64.h6
-rw-r--r--src/lib/bits.h15
-rw-r--r--src/lib/buffer-istream.c49
-rw-r--r--src/lib/buffer.c21
-rw-r--r--src/lib/buffer.h28
-rw-r--r--src/lib/child-wait.c11
-rw-r--r--src/lib/data-stack.c3
-rw-r--r--src/lib/event-filter-lexer.c2074
-rw-r--r--src/lib/event-filter-lexer.l132
-rw-r--r--src/lib/event-filter-parser.c1714
-rw-r--r--src/lib/event-filter-parser.h87
-rw-r--r--src/lib/event-filter-parser.y186
-rw-r--r--src/lib/event-filter-private.h95
-rw-r--r--src/lib/event-filter.c809
-rw-r--r--src/lib/event-filter.h27
-rw-r--r--src/lib/event-log.c3
-rw-r--r--src/lib/failures.c20
-rw-r--r--src/lib/fd-util.c2
-rw-r--r--src/lib/file-cache.c8
-rw-r--r--src/lib/file-dotlock.c3
-rw-r--r--src/lib/hash.c11
-rw-r--r--src/lib/ioloop-poll.c14
-rw-r--r--src/lib/ioloop.c36
-rw-r--r--src/lib/ioloop.h6
-rw-r--r--src/lib/iostream-temp.c4
-rw-r--r--src/lib/istream-concat.c2
-rw-r--r--src/lib/istream-data.c2
-rw-r--r--src/lib/istream-failure-at.c4
-rw-r--r--src/lib/istream-limit.c6
-rw-r--r--src/lib/istream-mmap.c252
-rw-r--r--src/lib/istream-private.h2
-rw-r--r--src/lib/istream-seekable.c11
-rw-r--r--src/lib/istream-tee.c6
-rw-r--r--src/lib/istream-try.c26
-rw-r--r--src/lib/istream-try.h15
-rw-r--r--src/lib/istream.c4
-rw-r--r--src/lib/istream.h3
-rw-r--r--src/lib/json-parser.c48
-rw-r--r--src/lib/lib-event-private.h10
-rw-r--r--src/lib/lib-event.c64
-rw-r--r--src/lib/lib-event.h19
-rw-r--r--src/lib/lib-signals.c346
-rw-r--r--src/lib/lib-signals.h19
-rw-r--r--src/lib/lib.h10
-rw-r--r--src/lib/log-throttle.c1
-rw-r--r--src/lib/macros.h53
-rw-r--r--src/lib/md4.c8
-rw-r--r--src/lib/md5.c7
-rw-r--r--src/lib/mempool-allocfree.c4
-rw-r--r--src/lib/mempool-system.c2
-rw-r--r--src/lib/net.c8
-rw-r--r--src/lib/ostream-buffer.c2
-rw-r--r--src/lib/ostream-file.c2
-rw-r--r--src/lib/ostream-multiplex.c1
-rw-r--r--src/lib/ostream-wrapper.c8
-rw-r--r--src/lib/ostream.h15
-rw-r--r--src/lib/rand.c65
-rw-r--r--src/lib/seq-range-array.c107
-rw-r--r--src/lib/seq-range-array.h8
-rw-r--r--src/lib/str.h12
-rw-r--r--src/lib/strfuncs.c2
-rw-r--r--src/lib/strnum.c6
-rw-r--r--src/lib/test-array.c15
-rw-r--r--src/lib/test-base32.c6
-rw-r--r--src/lib/test-base64.c58
-rw-r--r--src/lib/test-bits.c12
-rw-r--r--src/lib/test-buffer-istream.c101
-rw-r--r--src/lib/test-buffer.c4
-rw-r--r--src/lib/test-connection.c44
-rw-r--r--src/lib/test-data-stack.c10
-rw-r--r--src/lib/test-event-filter-parser.c519
-rw-r--r--src/lib/test-event-log.c16
-rw-r--r--src/lib/test-failures.c105
-rw-r--r--src/lib/test-file-cache.c296
-rw-r--r--src/lib/test-hash.c6
-rw-r--r--src/lib/test-iostream-pump.c2
-rw-r--r--src/lib/test-iostream-temp.c2
-rw-r--r--src/lib/test-istream-base64-decoder.c2
-rw-r--r--src/lib/test-istream-concat.c4
-rw-r--r--src/lib/test-istream-crlf.c2
-rw-r--r--src/lib/test-istream-multiplex.c19
-rw-r--r--src/lib/test-istream-seekable.c20
-rw-r--r--src/lib/test-istream-sized.c2
-rw-r--r--src/lib/test-istream-try.c47
-rw-r--r--src/lib/test-istream.c14
-rw-r--r--src/lib/test-json-parser.c44
-rw-r--r--src/lib/test-lib-signals.c15
-rw-r--r--src/lib/test-lib.inc4
-rw-r--r--src/lib/test-multiplex.c12
-rw-r--r--src/lib/test-net.c24
-rw-r--r--src/lib/test-ostream-buffer.c2
-rw-r--r--src/lib/test-ostream-multiplex.c19
-rw-r--r--src/lib/test-seq-range-array.c63
-rw-r--r--src/lib/test-time-util.c39
-rw-r--r--src/lib/test-unichar.c4
-rw-r--r--src/lib/time-util.c44
-rw-r--r--src/lib/time-util.h7
-rw-r--r--src/lib/unichar.c2
-rw-r--r--src/lib/unichar.h10
-rw-r--r--src/lib/uri-util.c2
-rw-r--r--src/lib/var-expand.c5
-rw-r--r--src/lmtp/Makefile.in10
-rw-r--r--src/lmtp/lmtp-client.c27
-rw-r--r--src/lmtp/lmtp-commands.c53
-rw-r--r--src/lmtp/lmtp-common.h3
-rw-r--r--src/lmtp/lmtp-local.c1
-rw-r--r--src/lmtp/lmtp-proxy.c221
-rw-r--r--src/lmtp/lmtp-recipient.h2
-rw-r--r--src/lmtp/lmtp-settings.c6
-rw-r--r--src/log/Makefile.in10
-rw-r--r--src/log/doveadm-connection.c2
-rw-r--r--src/log/log-connection.c75
-rw-r--r--src/log/log-settings.c2
-rw-r--r--src/login-common/Makefile.in10
-rw-r--r--src/login-common/client-common-auth.c143
-rw-r--r--src/login-common/client-common.h9
-rw-r--r--src/login-common/login-proxy.c232
-rw-r--r--src/login-common/login-proxy.h46
-rw-r--r--src/login-common/login-settings.c8
-rw-r--r--src/login-common/login-settings.h2
-rw-r--r--src/login-common/main.c19
-rw-r--r--src/master/Makefile.in10
-rw-r--r--src/master/main.c6
-rw-r--r--src/master/master-settings.c10
-rw-r--r--src/master/service-monitor.c2
-rw-r--r--src/master/service.c2
-rw-r--r--src/master/test-auth-client.c286
-rw-r--r--src/master/test-auth-master.c332
-rw-r--r--src/master/test-master-login-auth.c273
-rw-r--r--src/old-stats/Makefile.in10
-rw-r--r--src/old-stats/client.c2
-rw-r--r--src/old-stats/global-memory.c2
-rw-r--r--src/old-stats/stats-settings.c6
-rw-r--r--src/plugins/Makefile.in10
-rw-r--r--src/plugins/acl/Makefile.am24
-rw-r--r--src/plugins/acl/Makefile.in82
-rw-r--r--src/plugins/acl/acl-api.c2
-rw-r--r--src/plugins/acl/acl-backend-vfile-acllist.c2
-rw-r--r--src/plugins/acl/acl-backend-vfile.c2
-rw-r--r--src/plugins/acl/acl-cache.c4
-rw-r--r--src/plugins/acl/acl-global-file.c2
-rw-r--r--src/plugins/acl/acl-mailbox-list.c4
-rw-r--r--src/plugins/acl/acl-mailbox.c21
-rw-r--r--src/plugins/acl/test-acl.c66
-rw-r--r--src/plugins/apparmor/Makefile.in10
-rw-r--r--src/plugins/autocreate/Makefile.in10
-rw-r--r--src/plugins/charset-alias/Makefile.in10
-rw-r--r--src/plugins/expire/Makefile.in10
-rw-r--r--src/plugins/fs-compress/Makefile.in10
-rw-r--r--src/plugins/fs-compress/fs-compress.c82
-rw-r--r--src/plugins/fts-lucene/Makefile.in10
-rw-r--r--src/plugins/fts-lucene/fts-backend-lucene.c2
-rw-r--r--src/plugins/fts-solr/Makefile.in10
-rw-r--r--src/plugins/fts-solr/fts-backend-solr.c2
-rw-r--r--src/plugins/fts-squat/Makefile.in10
-rw-r--r--src/plugins/fts-squat/squat-test.c2
-rw-r--r--src/plugins/fts-squat/squat-uidlist.c6
-rw-r--r--src/plugins/fts/Makefile.in10
-rw-r--r--src/plugins/fts/fts-api.c4
-rw-r--r--src/plugins/fts/fts-api.h2
-rw-r--r--src/plugins/fts/fts-expunge-log.c2
-rw-r--r--src/plugins/imap-acl/Makefile.in10
-rw-r--r--src/plugins/imap-old-stats/Makefile.in10
-rw-r--r--src/plugins/imap-quota/Makefile.in10
-rw-r--r--src/plugins/imap-zlib/Makefile.in10
-rw-r--r--src/plugins/imap-zlib/imap-zlib-plugin.c13
-rw-r--r--src/plugins/last-login/Makefile.in10
-rw-r--r--src/plugins/lazy-expunge/Makefile.in10
-rw-r--r--src/plugins/lazy-expunge/lazy-expunge-plugin.c2
-rw-r--r--src/plugins/listescape/Makefile.in10
-rw-r--r--src/plugins/mail-crypt/Makefile.in10
-rw-r--r--src/plugins/mail-crypt/fs-crypt-common.c28
-rw-r--r--src/plugins/mail-crypt/fs-crypt-settings.c4
-rw-r--r--src/plugins/mail-crypt/fs-crypt.c3
-rw-r--r--src/plugins/mail-crypt/fs-mail-crypt.c3
-rw-r--r--src/plugins/mail-crypt/mail-crypt-plugin.c4
-rw-r--r--src/plugins/mail-filter/Makefile.in10
-rw-r--r--src/plugins/mail-log/Makefile.in10
-rw-r--r--src/plugins/mail-lua/Makefile.in10
-rw-r--r--src/plugins/mail-lua/mail-lua-plugin.c10
-rw-r--r--src/plugins/mail-lua/mail-storage-lua.c5
-rw-r--r--src/plugins/mailbox-alias/Makefile.in10
-rw-r--r--src/plugins/notify-status/Makefile.in10
-rw-r--r--src/plugins/notify/Makefile.in10
-rw-r--r--src/plugins/old-stats/Makefile.in10
-rw-r--r--src/plugins/pop3-migration/Makefile.in10
-rw-r--r--src/plugins/pop3-migration/pop3-migration-plugin.c4
-rw-r--r--src/plugins/push-notification/Makefile.in10
-rw-r--r--src/plugins/push-notification/push-notification-driver-lua.c7
-rw-r--r--src/plugins/quota-clone/Makefile.in10
-rw-r--r--src/plugins/quota/Makefile.in10
-rw-r--r--src/plugins/quota/quota-count.c2
-rw-r--r--src/plugins/quota/quota-dict.c20
-rw-r--r--src/plugins/quota/quota-dirsize.c1
-rw-r--r--src/plugins/quota/quota-fs.c81
-rw-r--r--src/plugins/quota/quota-imapc.c23
-rw-r--r--src/plugins/quota/quota-maildir.c40
-rw-r--r--src/plugins/quota/quota-private.h3
-rw-r--r--src/plugins/quota/quota-status-settings.c4
-rw-r--r--src/plugins/quota/quota-status.c4
-rw-r--r--src/plugins/quota/quota-storage.c41
-rw-r--r--src/plugins/quota/quota-util.c76
-rw-r--r--src/plugins/quota/quota.c93
-rw-r--r--src/plugins/replication/Makefile.in10
-rw-r--r--src/plugins/replication/replication-plugin.c2
-rw-r--r--src/plugins/snarf/Makefile.in10
-rw-r--r--src/plugins/trash/Makefile.in10
-rw-r--r--src/plugins/trash/trash-plugin.c2
-rw-r--r--src/plugins/var-expand-crypt/Makefile.in10
-rw-r--r--src/plugins/virtual/Makefile.in10
-rw-r--r--src/plugins/virtual/virtual-config.c4
-rw-r--r--src/plugins/virtual/virtual-storage.c2
-rw-r--r--src/plugins/virtual/virtual-sync.c3
-rw-r--r--src/plugins/welcome/Makefile.in10
-rw-r--r--src/plugins/zlib/Makefile.in10
-rw-r--r--src/plugins/zlib/zlib-plugin.c20
-rw-r--r--src/pop3-login/Makefile.in10
-rw-r--r--src/pop3-login/client-authenticate.c9
-rw-r--r--src/pop3-login/client.c2
-rw-r--r--src/pop3-login/pop3-login-settings.c6
-rw-r--r--src/pop3-login/pop3-proxy.c126
-rw-r--r--src/pop3-login/pop3-proxy.h4
-rw-r--r--src/pop3/Makefile.in10
-rw-r--r--src/pop3/pop3-client.c2
-rw-r--r--src/pop3/pop3-commands.c6
-rw-r--r--src/pop3/pop3-settings.c6
-rw-r--r--src/replication/Makefile.in10
-rw-r--r--src/replication/aggregator/Makefile.in10
-rw-r--r--src/replication/aggregator/aggregator-settings.c6
-rw-r--r--src/replication/aggregator/notify-connection.c2
-rw-r--r--src/replication/aggregator/replicator-connection.c2
-rw-r--r--src/replication/replicator/Makefile.in10
-rw-r--r--src/replication/replicator/doveadm-connection.c4
-rw-r--r--src/replication/replicator/dsync-client.c4
-rw-r--r--src/replication/replicator/notify-connection.c2
-rw-r--r--src/replication/replicator/replicator-queue.c2
-rw-r--r--src/replication/replicator/replicator-settings.c6
-rw-r--r--src/stats/Makefile.in10
-rw-r--r--src/stats/client-reader.c2
-rw-r--r--src/stats/client-writer.c40
-rw-r--r--src/stats/event-exporter-fmt-json.c20
-rw-r--r--src/stats/event-exporter-fmt-tab-text.c17
-rw-r--r--src/stats/event-exporter-fmt.c52
-rw-r--r--src/stats/event-exporter.h9
-rw-r--r--src/stats/stats-metrics.c41
-rw-r--r--src/stats/stats-service-openmetrics.c72
-rw-r--r--src/stats/stats-settings.c40
-rw-r--r--src/stats/stats-settings.h7
-rw-r--r--src/stats/test-client-reader.c8
-rw-r--r--src/stats/test-client-writer.c8
-rw-r--r--src/stats/test-stats-metrics.c12
-rw-r--r--src/submission-login/Makefile.in10
-rw-r--r--src/submission-login/client.c2
-rw-r--r--src/submission-login/submission-login-settings.c6
-rw-r--r--src/submission-login/submission-proxy.c169
-rw-r--r--src/submission-login/submission-proxy.h4
-rw-r--r--src/submission/Makefile.in10
-rw-r--r--src/submission/submission-backend-relay.c5
-rw-r--r--src/submission/submission-settings.c6
-rw-r--r--src/util/Makefile.in10
-rw-r--r--src/util/health-check-settings.c2
-rw-r--r--src/util/rawlog.c8
-rw-r--r--src/util/tcpwrap-settings.c2
-rwxr-xr-xylwrap247
884 files changed, 32859 insertions, 16364 deletions
diff --git a/COPYING b/COPYING
index a98b282..11291fc 100644
--- a/COPYING
+++ b/COPYING
@@ -1,8 +1,7 @@
See AUTHORS file for list of copyright holders.
-Everything in src/lib/, src/auth/, src/lib-sql/ and src/lib-ntlm/ is under
-MIT license (see COPYING.MIT) unless otherwise mentioned at the beginning
-of the file.
+Everything in src/lib/, src/auth/, and src/lib-sql/ is under MIT license
+(see COPYING.MIT) unless otherwise mentioned at the beginning of the file.
Everything else is LGPLv2.1 (see COPYING.LGPL) unless otherwise mentioned
at the beginning of the file.
diff --git a/ChangeLog b/ChangeLog
index 3df2f2c..b58e5a8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,18 +1,4746 @@
-2020-07-29 11:29:12 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (502c39af9)
+2020-12-22 10:22:38 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (89f716dc2)
- Released v2.3.11.3
+ lib-master, stats: Fix sending and parsing UPDATE commands
+ These commands were parsed completely wrong, resulting in errors like:
-M configure.ac
+ Client sent invalid input for UPDATE: Invalid tv_created: Invalid timeval
+ microseconds parameter
+
+M src/lib-master/stats-client.c
+M src/lib-master/test-event-stats.c
+M src/stats/client-writer.c
+
+2020-12-12 17:39:54 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (1546d5e14)
+
+ NEWS: Add news for 2.3.13
+
+
+M NEWS
-2020-07-29 11:28:50 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (be398a73f)
+2020-07-29 11:28:50 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f71f58daf)
NEWS: Add NEWS for 2.3.11.3
M NEWS
-2020-07-29 10:40:17 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (63395d545)
+2020-07-28 11:02:06 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ed30ca543)
+
+ NEWS: Add NEWS for 2.3.11.2
+
+
+M NEWS
+
+2020-06-30 11:50:26 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ea34cc097)
+
+ NEWS: Add news for 2.3.11
+
+
+M NEWS
+
+2020-11-30 22:10:28 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (090bad0fa)
+
+ lib-storage: Fix potential assert-crash when fetching body snippet
+
+ This happened only in a rather special condition. Added unit test to
+ reproduce it.
+
+ Fixes: Panic: file message-part-data.c: line 28
+ (message_part_data_is_plain_7bit): assertion failed: (data != NULL)
+
+M src/lib-storage/index/index-mail-headers.c
+
+2020-11-30 20:37:46 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (6b9c86377)
+
+ lib-storage: Fix potential assert-crash when adding missing attachment flags
+
+ This happened only in a rather special condition. Added unit test to
+ reproduce it.
+
+ Fixes: Panic: file index-mail-headers.c: line 298 (index_mail_parse_header):
+ assertion failed: (part != NULL)
+
+M src/lib-storage/index/index-mail.c
+
+2020-11-18 21:22:45 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (84cde48e5)
+
+ lib-imap: Fix writing BODYSTRUCTURE for truncated multipart/digest part
+
+ Fixes error while parsing BODYSTRUCTURE: message_part message/rfc822 flag
+ doesn't match lines in BODYSTRUCTURE
+
+M src/lib-imap/imap-bodystructure.c
+M src/lib-imap/test-imap-bodystructure.c
+
+2020-11-18 20:48:11 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (e32a99fd5)
+
+ lib-imap: Fix writing BODYSTRUCTURE for truncated multipart/ part
+
+ If the max nesting limit is reached, write the last part out as
+ application/octet-stream. The original content-type could be confusing IMAP
+ clients when they don't see any child parts.
+
+M src/lib-imap/imap-bodystructure.c
+M src/lib-imap/test-imap-bodystructure.c
+
+2020-11-18 18:55:34 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (f3ff0ca97)
+
+ lib-imap: Fix writing BODYSTRUCTURE for truncated message/rfc822 part
+
+ If the max nesting limit is reached, write the last part out as
+ application/octet-stream instead of dummy message/rfc822.
+
+ Fixes error while parsing BODYSTRUCTURE: message_part message/rfc822 flag
+ doesn't match BODYSTRUCTURE
+
+M src/lib-imap/imap-bodystructure.c
+M src/lib-imap/test-imap-bodystructure.c
+
+2020-12-01 10:25:09 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (5cbc8d7da)
+
+ lib-http: http-client-request - Fix payload assertions in
+ http_client_request_send_more().
+
+ When the request payload is finished, both req->payload_input and
+ req->payload_output could be NULL, so the assertions on those being not NULL
+ need to happen after the check for req->payload_finished.
+
+ This particularly causes problems with the blocking
+ http_client_request_send/finish_payload() API, which constantly modifies
+ req->payload_input and sets it to NULL to finish the output.
+
+ This caused a panic:
+
+ Panic: file http-client-request.c: line 1232
+ (http_client_request_send_more): assertion failed: (req->payload_input !=
+ NULL)
+
+M src/lib-http/http-client-request.c
+
+2018-04-04 15:18:51 +0200 Stephan Bosch <stephan.bosch@dovecot.fi> (ba19713dd)
+
+ lib-http: test-http-payload - Add test for blocking client output payload.
+
+
+M src/lib-http/test-http-payload.c
+
+2018-04-04 03:02:24 +0200 Stephan Bosch <stephan.bosch@dovecot.fi> (298fc5f29)
+
+ lib-http: test-http-payload - Implement reference counting for client
+ request.
+
+
+M src/lib-http/test-http-payload.c
+
+2020-06-27 18:48:40 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (839d4279b)
+
+ lib-http: Reformat http-client-request.c.
+
+
+M src/lib-http/http-client-request.c
+
+2020-10-19 13:47:10 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (fef608008)
+
+ stats: openmetrics - Include submetric name only when present
+
+ Otherwise we SIGSEGV.
+
+M src/stats/stats-service-openmetrics.c
+
+2020-10-29 12:55:21 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (940307ae2)
+
+ imap: Fix potential hang if client disconnects with pipelined ambiguous
+ commands
+
+ For example if client pipelines FETCH+LOGOUT commands and disconnects during
+ a large FETCH output, the LOGOUT command is processed as waiting for
+ unambiguity. This code path however doesn't detect a client disconnection,
+ and input IO handler is removed so it can't detect it either. So the imap
+ process hangs.
+
+M src/imap/imap-client.c
+
+2020-10-29 12:52:16 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (1c56defb0)
+
+ imap: Move disconnected-check inside client_continue_pending_input()
+
+ This way all of its callers don't have to check if the client is
+ disconnected.
+
+M src/imap/cmd-append.c
+M src/imap/cmd-idle.c
+M src/imap/imap-client.c
+M src/imap/imap-search.c
+M src/imap/main.c
+
+2020-11-20 12:52:47 +0100 Markus Valentin <markus.valentin@open-xchange.com> (1acfa9175)
+
+ doveadm: mail: doveadm_mail_failed_error() - Set specific exit code for
+ MAIL_ERROR_INUSE
+
+ Set exit code DOVEADM_EX_NOTPOSSIBLE in case MAIL_ERROR_INUSE is set via
+ doveadm_mail_failed_error(). This exit code is used to indicate that a
+ operation cannot be done because another session prevents it.
+
+M src/doveadm/doveadm-mail.c
+
+2020-11-20 12:15:18 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (cafccc4f0)
+
+ doveadm: When sending server logs to client, make sure ioloop isn't set to
+ NULL
+
+ This could have happened if there was any logging done outside command
+ handling. For example a doveadm command used http-client, which has a
+ timeout that triggers logging only after the command is finished.
+
+ Fixes segfault and: Panic: file http-client.c: line 642
+ (http_client_context_close): assertion failed: (cctx->clients_list == NULL)
+
+M src/doveadm/client-connection-tcp.c
+
+2020-11-19 22:07:37 +0200 sergey.kitov <sergey.kitov@open-xchange.com> (461acf490)
+
+ imap: Fix memory leak in get_expunges_fallback()
+
+
+M src/imap/imap-fetch.c
+
+2020-11-12 14:15:54 -0500 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (7581cacd8)
+
+ lib: event-filter-parser - Test simple but invalid input
+
+
+M src/lib/test-event-filter-parser.c
+
+2020-11-12 13:49:49 -0500 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (a11b89423)
+
+ lib: event-filter - Do not assert that there in no output on error
+
+ When the input is a simple (but invalid) expression (e.g., a=b=c) the output
+ variable may be set. This is perfectly fine.
+
+ The assertion (and the associated failure) come from when event filter
+ parsing was switched to the new filter syntax
+ (fcba1d530737813de11d9d730d5db6496e2e574b).
+
+M src/lib/event-filter.c
+
+2020-11-11 11:09:02 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (50698d4bc)
+
+ configure.ac: Finish removing vpopmail support
+
+
+M configure.ac
+
+2020-10-23 16:24:09 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (48d6f7282)
+
+ auth: Remove ntlm mechanism & the LANMAN and NTLM password schemes
+
+
+M COPYING
+M configure.ac
+M src/Makefile.am
+M src/auth/Makefile.am
+D src/auth/mech-ntlm.c
+M src/auth/mech.c
+M src/auth/password-scheme.c
+M src/auth/test-libpassword.c
+M src/auth/test-mech.c
+M src/doveadm/Makefile.am
+D src/lib-ntlm/Makefile.am
+D src/lib-ntlm/ntlm-des.c
+D src/lib-ntlm/ntlm-des.h
+D src/lib-ntlm/ntlm-encrypt.c
+D src/lib-ntlm/ntlm-encrypt.h
+D src/lib-ntlm/ntlm-flags.h
+D src/lib-ntlm/ntlm-message.c
+D src/lib-ntlm/ntlm-message.h
+D src/lib-ntlm/ntlm-types.h
+D src/lib-ntlm/ntlm.h
+
+2020-10-16 09:18:31 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (0b6c6bbba)
+
+ auth: Remove vpopmail user & pass db support
+
+
+M configure.ac
+M doc/example-config/conf.d/10-auth.conf
+M doc/example-config/conf.d/Makefile.am
+D doc/example-config/conf.d/auth-vpopmail.conf.ext
+D m4/want_vpopmail.m4
+M src/auth/Makefile.am
+M src/auth/db-checkpassword.c
+D src/auth/passdb-vpopmail.c
+M src/auth/passdb.c
+D src/auth/userdb-vpopmail.c
+D src/auth/userdb-vpopmail.h
+M src/auth/userdb.c
+M src/master/main.c
+
+2020-10-16 09:01:19 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (84d8535ff)
+
+ auth: Remove S/Key mechanism & password scheme
+
+
+M doc/example-config/conf.d/10-auth.conf
+M src/auth/Makefile.am
+M src/auth/main.c
+R089 src/auth/mech-otp-skey-common.c src/auth/mech-otp-common.c
+R074 src/auth/mech-otp-skey-common.h src/auth/mech-otp-common.h
+M src/auth/mech-otp.c
+D src/auth/mech-skey.c
+M src/auth/mech.c
+M src/auth/password-scheme.c
+M src/auth/test-libpassword.c
+M src/auth/test-mech.c
+
+2020-10-16 08:50:21 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (6e9124339)
+
+ auth: Remove RPA mechanism & password scheme
+
+
+M src/auth/Makefile.am
+D src/auth/mech-rpa.c
+M src/auth/mech.c
+D src/auth/password-scheme-rpa.c
+M src/auth/password-scheme.c
+M src/auth/password-scheme.h
+M src/auth/test-libpassword.c
+M src/auth/test-mech.c
+
+2020-10-16 08:31:34 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (371580cd6)
+
+ auth: Remove postmap socket type
+
+
+M src/auth/main.c
+
+2020-10-16 08:28:12 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (a1818ebe8)
+
+ auth: Remove support for SIA passdb
+
+
+M configure.ac
+D m4/want_sia.m4
+M src/auth/Makefile.am
+D src/auth/passdb-sia.c
+M src/auth/passdb.c
+
+2020-10-27 15:12:19 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (6d4c971dd)
+
+ lib-storage: Add prefix to failed mailbox list index rebuild error messages
+
+ This makes it clearer that the failure is happening because index was being
+ rebuilt.
+
+M src/lib-storage/list/mailbox-list-index.c
+
+2020-10-27 15:13:39 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (ecf218af0)
+
+ lib-storage: Fix error message when mailbox list index rebuild fails
+
+ The error needs to be copied to mailbox_list, otherwise it's just
+ "Unknown internal list error".
+
+M src/lib-storage/list/mailbox-list-index.c
+
+2020-10-27 15:11:12 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (7e4515266)
+
+ lib-storage: Fix mailbox list iteration error handling for INBOX
+
+ If INBOX isn't in the first namespace, the error wasn't correctly set for
+ it.
+
+M src/lib-storage/list/mailbox-list-iter.c
+
+2020-10-27 15:08:15 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (fdf93eded)
+
+ lib-storage: Use mailbox_get_last_mail_error() for mailbox_get_path_to()
+ errors
+
+ mailbox_list_get_last_error() happens to work currently, but it's
+ accidental.
+
+M src/lib-storage/index/index-storage.c
+
+2020-11-02 18:55:16 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (68380ecde)
+
+ lib-index: Fix detecting if index is undeleted
+
+ It was possible that mail_index_is_deleted() kept returning that the index
+ was deleted, even if it was marked as undeleted. This happened when the
+ deletion was in dovecot.index.log.2, undeletion in dovecot.index.log and
+ dovecot.index pointed to the .log.2 file. This caused the .log file to be
+ read first, which sees the undeletion. Later on the .log.2 was parsed and it
+ marked the index back as deleted.
+
+M src/lib-index/mail-index-private.h
+M src/lib-index/mail-transaction-log-file.c
+
+2020-11-06 17:07:35 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (c2122e006)
+
+ imap: Improve imap-client-hibernate unit test
+
+
+M src/imap/imap-client-hibernate.c
+M src/imap/imap-client.h
+M src/imap/test-imap-client-hibernate.c
+
+2020-08-24 19:10:43 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (867ddfba4)
+
+ imap: imap_client_hibernate() - Return reason string on failure
+
+ This helps writing a unit test for it.
+
+M src/imap/cmd-idle.c
+M src/imap/imap-client-hibernate.c
+M src/imap/imap-client.h
+
+2020-08-24 19:10:10 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (d75fbac7f)
+
+ imap: Delay initializing client IO until client_create_finish()
+
+ This helps writing unit tests.
+
+M src/imap/imap-client.c
+
+2020-08-24 16:58:16 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1ea3a379a)
+
+ imap: Fix crash if imap-hibernate socket can't be connected to
+
+ The error was supposed to be returned to caller, not logged directly.
+
+M src/imap/imap-client-hibernate.c
+
+2020-08-17 18:26:01 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (259b4279f)
+
+ lib-imap: Add imap_parser_client_read_tag()
+
+
+M src/lib-imap/imap-parser.c
+M src/lib-imap/imap-parser.h
+
+2020-08-17 18:22:42 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c832b1a63)
+
+ imap-login: Use imap_parser_read_tag() and _read_command_name()
+
+
+M src/imap-login/imap-login-client.c
+
+2020-08-17 18:15:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a7103e0c1)
+
+ imap-login: Split off client_invalid_command()
+
+
+M src/imap-login/imap-login-client.c
+
+2020-08-17 18:11:36 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (09e436242)
+
+ imap: Use imap_parser_read_tag() and _read_command_name()
+
+
+M src/imap/imap-client.c
+
+2020-08-17 17:59:19 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (253787d72)
+
+ imap: Split off client_command_failed_early()
+
+
+M src/imap/imap-client.c
+
+2020-08-17 17:32:11 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (99159f963)
+
+ lib-imap: Add imap_parser_read_tag() and _read_command_name()
+
+
+M src/lib-imap/imap-parser.c
+M src/lib-imap/imap-parser.h
+M src/lib-imap/test-imap-parser.c
+
+2020-10-23 10:56:08 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (d101feb06)
+
+ lib: Be less verbose in event filter tests
+
+ Only print the input string if the test failed.
+
+M src/lib/test-event-filter-parser.c
+
+2020-09-11 10:57:51 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6ae93c393)
+
+ lib-imap: Don't generate invalid BODYSTRUCTURE when reaching MIME part limit
+
+ If the last MIME part was message/rfc822 and its child was truncated away,
+ BODYSTRUCTURE was missing the ENVELOPE and BODY[STRUCTURE] parts. Fixed by
+ writing empty dummy ones.
+
+M src/lib-imap/imap-bodystructure.c
+
+2020-09-11 09:53:03 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (67f792cb9)
+
+ lib-mail: message-parser - Fix assert-crash when enforcing MIME part limit
+
+ The limit could have been exceeded with message/rfc822 parts.
+
+M src/lib-mail/message-parser.c
+M src/lib-mail/test-message-parser.c
+
+2020-08-24 19:12:21 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b4a9872b8)
+
+ imap: Add unit test for imap-client-hibernate
+
+
+M src/imap/Makefile.am
+M src/imap/imap-client-hibernate.c
+M src/imap/imap-client.h
+A src/imap/test-imap-client-hibernate.c
+
+2020-08-17 18:33:20 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (00df2308b)
+
+ imap: Escape tag when sending it to imap-hibernate process
+
+
+M src/imap/imap-client-hibernate.c
+
+2020-11-05 16:02:39 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (a8a2ca01d)
+
+ configure: Update version to 2.3.13
+
+
+M configure.ac
+
+2020-10-27 23:16:44 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (184a9526e)
+
+ lib-smtp: smtp-server-connection - Make sure output stream errors are
+ handled.
+
+
+M src/lib-smtp/smtp-server-connection.c
+
+2020-10-26 10:19:46 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (75ab81059)
+
+ lib-ssl-iosteam: ostream-openssl - Make sure error on plaintext streams is
+ propagated.
+
+
+M src/lib-ssl-iostream/iostream-openssl.c
+M src/lib-ssl-iostream/iostream-openssl.h
+M src/lib-ssl-iostream/ostream-openssl.c
+
+2020-10-26 22:04:53 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (5b4e8e981)
+
+ lib-ssl-iostrea: ostream-openssl - Add local variable for ssl_io in
+ o_stream_ssl_flush_buffer().
+
+
+M src/lib-ssl-iostream/ostream-openssl.c
+
+2020-11-05 13:25:19 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (98798b85a)
+
+ auth: db-oauth2 - Do not allow empty active_value or active_attribute, when
+ other is set
+
+
+M src/auth/db-oauth2.c
+
+2020-10-29 11:37:22 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (0ce1f3495)
+
+ auth: db-oauth2 - If active attribute is present in request, check it
+
+ If the attribute is missing, do not assume it's false.
+
+M src/auth/db-oauth2.c
+
+2020-10-29 11:36:00 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (3330dbe12)
+
+ auth: db-oauth2 - Check active attribute by default
+
+
+M src/auth/db-oauth2.c
+
+2020-10-22 11:42:23 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (fd8ae5027)
+
+ auth: db-oauth2 - Change active:false to mean invalid token
+
+ Specifications say that invalid token, expired token and any other reason
+ why the token can be considered invalid should return
+ {"active":false} reply with no other fields.
+
+ Thus, we need to consider this as invalid token.
+
+M src/auth/db-oauth2.c
+
+2020-10-22 11:41:16 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (bec575990)
+
+ auth: db-oauth2 - Allow active:false without username
+
+
+M src/auth/db-oauth2.c
+
+2020-10-13 17:34:12 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (17813e78b)
+
+ lib-storage: Skip setting log view in mailbox_get_expunges_init when
+ box->view is outdated.
+
+ This fixes assert-crash when IMAP client uses QRESYNC and lots of changes
+ happen between syncing points.
+
+ Fixes: Panic: file mail-transaction-log-view.c: line 144
+ (mail_transaction_log_view_set): assertion failed: (min_file_seq <=
+ max_file_seq)
+
+M src/lib-storage/mailbox-get.c
+
+2020-10-29 12:34:57 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (28301c44d)
+
+ lib-fts: test-fts-filter - Fix clang suspicious concatenation of string
+ literals warning
+
+ Fixes: warning: suspicious concatenation of string literals in an array
+ initialization; did you mean to separate the elements with a comma?
+ [-Wstring-concatenation]
+
+M src/lib-fts/test-fts-filter.c
+
+2020-10-29 12:33:14 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (9e72e39d5)
+
+ lib: Standardize STMT_BEGIN and STMT_END
+
+ do .. while(0) should work everywhere.
+
+ This also fixes warnings given by new clang: warning: '}' and ')' tokens
+ terminating statement expression appear in different macro expansion
+ contexts [-Wcompound-token-split-by-macro]
+
+M src/lib/macros.h
+
+2020-10-29 12:32:44 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (e7342877f)
+
+ lib: test-istream - Don't try to return void
+
+
+M src/lib/test-istream.c
+
+2020-10-28 12:45:09 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (05a491eeb)
+
+ lib: test-file-cache - Add asserts for initial return value of
+ file_cache_get
+
+
+M src/lib/test-file-cache.c
+
+2020-10-28 12:23:40 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (57c63983d)
+
+ lib-lda: Update mail sizes to event only if they are known
+
+
+M src/lib-lda/mail-deliver.c
+
+2020-10-28 12:22:58 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (edb32ea0e)
+
+ lib-storage: raw-mail - Cast st_size to uoff_t
+
+ mbox->size is unsigned field, and st_size will be -1 is the stat target is
+ not regular file or symbolic link. This can happen if it's stream like
+ stdin.
+
+M src/lib-storage/index/raw/raw-mail.c
+
+2020-10-23 14:54:22 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (005a3d3b5)
+
+ lib-fs: iteration - Fix crash when overwriting iteration error
+
+ Can't use fs_file_path() because file is NULL. Instead, add the path to
+ struct fs_iter directly so it can be used in the error.
+
+ Broken by eaaf40ca4e8994824abff89fc617c3cc737d83a5
+
+M src/lib-fs/fs-api-private.h
+M src/lib-fs/fs-api.c
+
+2020-10-22 20:21:41 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (7a97dfb74)
+
+ quota: Avoid implicit integer conversion to unsigned in quota calculation
+
+ Deducting negative number from unsigned integer causes signed integer
+ conversion to unsigned int, which results a too large positive number. Do
+ calculations using int64 instead.
+
+ This did not cause any visible problems, found by clang integer
+ sanitization.
+
+M src/plugins/quota/quota.c
+
+2020-10-22 18:53:34 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (408a4323a)
+
+ global: Fix overzealous use of ENUM_NEGATE
+
+
+M src/lib-index/mail-transaction-log-file.c
+M src/lib-ssl-iostream/iostream-openssl-context.c
+
+2020-10-22 22:46:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (d1808bf2d)
+
+ lib: istream-seekable - Fix returning stream size
+
+ The returned size may have been truncated.
+
+M src/lib/istream-seekable.c
+M src/lib/test-istream-seekable.c
+
+2020-10-16 11:21:51 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (966140ac5)
+
+ lib-fs: Add assert to make sure we never log "(null)" as the old error
+
+
+M src/lib-fs/fs-api.c
+
+2020-10-16 11:20:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8a094bf12)
+
+ lib-fs: Fix logging old error when an unlogged error is replaced by new
+ error
+
+ The old error was logged as "(null)" if the error happened in a non-root
+ (filter) file.
+
+M src/lib-fs/fs-api.c
+
+2020-10-16 10:19:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (eaaf40ca4)
+
+ lib-fs: Include file's path when logging pending error messages
+
+ Otherwise it may not be known which file the error is about.
+
+ This happens when a file is freed without the last error being logged. Also
+ when an unlogged error is being replaced with a new error.
+
+M src/lib-fs/fs-api.c
+
+2020-09-24 13:44:58 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (23645222d)
+
+ lib: event-filter-parser - Disallow non-equals comparators on non-fields
+
+ Non-equals comparisons (<, <=, >, and >=) aren't well defined for anything
+ other than fields. Therefore, if we encounter one of these comparators with
+ an event name, category name, or source location, we should error out and
+ avoid confusing the user.
+
+M src/lib/event-filter-parser.y
+M src/lib/test-event-filter-parser.c
+
+2020-10-15 20:34:05 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (81e2119bf)
+
+ lib-storage: Delay recreating event when closing mail
+
+ If the mail isn't reused, the event is unnecessary.
+
+M src/lib-storage/index/index-mail.c
+
+2020-10-19 13:49:29 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (fb6aa6443)
+
+ global: Explicitly wrap values to fit target
+
+
+M src/lib-compression/test-compression.c
+M src/lib-imap/imap-utf7.c
+M src/lib/base64.c
+M src/lib/test-array.c
+M src/lib/test-data-stack.c
+M src/lib/test-istream-concat.c
+M src/lib/test-istream-seekable.c
+
+2020-09-01 09:44:04 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (48b2c8cfa)
+
+ global: Add explicit casts where needed
+
+ Squash implicit conversion complains from sanitizer.
+
+M src/auth/crypt-blowfish.c
+M src/lib-index/mail-index-sync-keywords.c
+M src/lib-index/mail-index-sync-update.c
+M src/lib-lua/dlua-dovecot.c
+M src/lib-master/master-service.c
+M src/lib-storage/index/mbox/mbox-sync-rewrite.c
+M src/lib-storage/index/mbox/mbox-sync-update.c
+M src/lib-storage/index/mbox/mbox-sync.c
+M src/lib/test-array.c
+M src/lib/test-failures.c
+M src/lib/test-unichar.c
+
+2020-08-13 11:36:08 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (fd35a7baa)
+
+ global: Disable undefined behaviour sanitization for select locations
+
+
+M src/auth/crypt-blowfish.c
+M src/lib-http/http-client-peer.c
+M src/lib-otp/otp-parse.c
+M src/lib/bits.h
+M src/lib/buffer.c
+M src/lib/data-stack.c
+M src/lib/hash.c
+M src/lib/md4.c
+M src/lib/md5.c
+M src/lib/strnum.c
+M src/lib/test-bits.c
+
+2020-08-20 08:39:26 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f4cca6a5c)
+
+ global: Fix negation with constants to match target type
+
+
+M src/doveadm/doveadm-dump-log.c
+M src/lib-index/mail-cache-transaction.c
+M src/lib-index/mail-index-private.h
+M src/lib-index/mail-index-sync-update.c
+M src/lib-index/mail-index-util.c
+M src/lib-storage/index/index-mail.h
+M src/lib-storage/index/mbox/mbox-lock.c
+M src/lib-storage/list/mailbox-list-index-notify.c
+M src/lib/hash.c
+M src/lib/md4.c
+M src/lib/md5.c
+M src/lib/test-bits.c
+M src/plugins/fts-squat/squat-uidlist.c
+
+2020-08-20 08:35:59 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (4684a4a0e)
+
+ global: Use ENUM_NEGATE() macro where necessary
+
+
+M src/auth/auth-fields.c
+M src/doveadm/doveadm-dump-index.c
+M src/doveadm/doveadm-mail-mailbox-cache.c
+M src/doveadm/doveadm-mail-mailbox-status.c
+M src/doveadm/dsync/dsync-brain.c
+M src/doveadm/dsync/dsync-ibc-stream.c
+M src/doveadm/dsync/dsync-transaction-log-scan.c
+M src/imap-login/imap-proxy.c
+M src/imap/cmd-list.c
+M src/imap/imap-search.c
+M src/imap/imap-sync.c
+M src/lib-dict-backend/dict-cdb.c
+M src/lib-fs/fs-api.c
+M src/lib-fs/fs-metawrap.c
+M src/lib-index/mail-cache-decisions.c
+M src/lib-index/mail-cache-fields.c
+M src/lib-index/mail-cache-purge.c
+M src/lib-index/mail-cache-transaction.c
+M src/lib-index/mail-index-map-hdr.c
+M src/lib-index/mail-index-sync-update.c
+M src/lib-index/mail-index-sync.c
+M src/lib-index/mail-index-transaction-update.c
+M src/lib-index/mail-index-transaction-view.c
+M src/lib-index/mail-index-view-sync.c
+M src/lib-index/mail-transaction-log-file.c
+M src/lib-index/mail-transaction-log-view.c
+M src/lib-index/test-mail-cache-purge.c
+M src/lib-index/test-mail-index-transaction-update.c
+M src/lib-mail/message-decoder.c
+M src/lib-mail/message-parser.c
+M src/lib-smtp/smtp-server-connection.c
+M src/lib-ssl-iostream/iostream-openssl-context.c
+M src/lib-storage/index/cydir/cydir-save.c
+M src/lib-storage/index/cydir/cydir-storage.c
+M src/lib-storage/index/dbox-common/dbox-save.c
+M src/lib-storage/index/dbox-multi/mdbox-mail.c
+M src/lib-storage/index/dbox-multi/mdbox-storage.c
+M src/lib-storage/index/dbox-single/sdbox-copy.c
+M src/lib-storage/index/dbox-single/sdbox-storage.c
+M src/lib-storage/index/imapc/imapc-list.c
+M src/lib-storage/index/imapc/imapc-mail-fetch.c
+M src/lib-storage/index/imapc/imapc-mailbox.c
+M src/lib-storage/index/imapc/imapc-save.c
+M src/lib-storage/index/imapc/imapc-storage.c
+M src/lib-storage/index/index-mail-headers.c
+M src/lib-storage/index/index-mail.c
+M src/lib-storage/index/index-search.c
+M src/lib-storage/index/index-status.c
+M src/lib-storage/index/index-storage.c
+M src/lib-storage/index/maildir/maildir-filename-flags.c
+M src/lib-storage/index/maildir/maildir-mail.c
+M src/lib-storage/index/maildir/maildir-save.c
+M src/lib-storage/index/maildir/maildir-sync-index.c
+M src/lib-storage/index/maildir/maildir-uidlist.c
+M src/lib-storage/index/mbox/mbox-save.c
+M src/lib-storage/index/mbox/mbox-sync-update.c
+M src/lib-storage/index/mbox/mbox-sync.c
+M src/lib-storage/index/pop3c/pop3c-storage.c
+M src/lib-storage/index/raw/raw-storage.c
+M src/lib-storage/list/mailbox-list-fs-iter.c
+M src/lib-storage/list/mailbox-list-index-backend.c
+M src/lib-storage/list/mailbox-list-index-iter.c
+M src/lib-storage/list/mailbox-list-index-status.c
+M src/lib-storage/list/mailbox-list-index-sync.c
+M src/lib-storage/list/mailbox-list-index.c
+M src/lib-storage/list/mailbox-list-iter.c
+M src/lib-storage/list/mailbox-list-maildir-iter.c
+M src/lib-storage/list/mailbox-list-subscriptions.c
+M src/lib-storage/mail-storage-service.c
+M src/lib-storage/mail-storage.c
+M src/lib-storage/mailbox-attribute.c
+M src/lib/askpass.c
+M src/lib/fd-util.c
+M src/lib/ioloop-poll.c
+M src/lib/iostream-temp.c
+M src/lib/net.c
+M src/plugins/acl/acl-cache.c
+M src/plugins/acl/acl-mailbox-list.c
+M src/plugins/acl/acl-mailbox.c
+M src/plugins/fs-compress/fs-compress.c
+M src/plugins/fts-lucene/fts-backend-lucene.c
+M src/plugins/fts-solr/fts-backend-solr.c
+M src/plugins/lazy-expunge/lazy-expunge-plugin.c
+M src/plugins/mail-crypt/fs-crypt-common.c
+M src/plugins/quota/quota-storage.c
+M src/plugins/replication/replication-plugin.c
+M src/plugins/virtual/virtual-storage.c
+M src/plugins/virtual/virtual-sync.c
+M src/util/rawlog.c
+
+2020-09-23 14:51:53 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (38a1c8fc8)
+
+ global: Use UOFF_T_MAX instead of (uoff_t)-1
+
+
+M src/anvil/anvil-settings.c
+M src/auth/auth-settings.c
+M src/config/config-settings.c
+M src/dict/dict-settings.c
+M src/director/director-settings.c
+M src/dns/dns-client-settings.c
+M src/doveadm/doveadm-settings.c
+M src/doveadm/dsync/dsync-mail.h
+M src/doveadm/dsync/dsync-mailbox-export.c
+M src/doveadm/dsync/dsync-mailbox-import.c
+M src/doveadm/dsync/dsync-transaction-log-scan.c
+M src/imap-hibernate/imap-hibernate-settings.c
+M src/imap-login/imap-login-settings.c
+M src/imap-urlauth/imap-urlauth-login-settings.c
+M src/imap-urlauth/imap-urlauth-settings.c
+M src/imap-urlauth/imap-urlauth-worker-settings.c
+M src/imap/cmd-append.c
+M src/imap/imap-fetch-body.c
+M src/imap/imap-settings.c
+M src/indexer/indexer-settings.c
+M src/indexer/indexer-worker-settings.c
+M src/ipc/ipc-settings.c
+M src/lda/main.c
+M src/lib-compression/istream-bzlib.c
+M src/lib-compression/istream-lzma.c
+M src/lib-compression/istream-zlib.c
+M src/lib-fs/fs-api.c
+M src/lib-fs/fs-metawrap.c
+M src/lib-fs/fs-posix.c
+M src/lib-http/http-client-connection.c
+M src/lib-http/http-header-parser.c
+M src/lib-http/http-response-parser.c
+M src/lib-http/http-server-request.c
+M src/lib-http/test-http-payload.c
+M src/lib-imap-storage/imap-msgpart-url.c
+M src/lib-imap-storage/imap-msgpart.c
+M src/lib-imap-storage/imap-msgpart.h
+M src/lib-index/mail-index-map-hdr.c
+M src/lib-index/mail-index-map-read.c
+M src/lib-index/mail-index-sync-update.c
+M src/lib-index/mail-index-sync.c
+M src/lib-index/mail-index-view-sync.c
+M src/lib-index/mail-transaction-log-file.c
+M src/lib-index/mail-transaction-log-private.h
+M src/lib-index/mail-transaction-log-view.c
+M src/lib-index/mail-transaction-log.c
+M src/lib-index/test-mail-transaction-log-view.c
+M src/lib-mail/istream-attachment-connector.c
+M src/lib-mail/istream-attachment-connector.h
+M src/lib-mail/istream-header-filter.c
+M src/lib-mail/test-istream-attachment.c
+M src/lib-settings/settings-parser.c
+M src/lib-smtp/smtp-command-parser.c
+M src/lib-smtp/smtp-server-connection.c
+M src/lib-smtp/smtp-server-reply.c
+M src/lib-smtp/test-smtp-payload.c
+M src/lib-storage/index/dbox-common/dbox-file-fix.c
+M src/lib-storage/index/dbox-common/dbox-file.c
+M src/lib-storage/index/dbox-common/dbox-mail.c
+M src/lib-storage/index/dbox-multi/mdbox-file.c
+M src/lib-storage/index/imapc/imapc-mail-fetch.c
+M src/lib-storage/index/imapc/imapc-mail.c
+M src/lib-storage/index/index-mail-binary.c
+M src/lib-storage/index/index-mail.c
+M src/lib-storage/index/istream-mail.c
+M src/lib-storage/index/maildir/maildir-copy.c
+M src/lib-storage/index/maildir/maildir-mail.c
+M src/lib-storage/index/maildir/maildir-save.c
+M src/lib-storage/index/maildir/maildir-uidlist.c
+M src/lib-storage/index/mbox/istream-raw-mbox.c
+M src/lib-storage/index/mbox/istream-raw-mbox.h
+M src/lib-storage/index/mbox/mbox-mail.c
+M src/lib-storage/index/mbox/mbox-save.c
+M src/lib-storage/index/mbox/mbox-sync-parse.c
+M src/lib-storage/index/mbox/mbox-sync-rewrite.c
+M src/lib-storage/index/mbox/mbox-sync-update.c
+M src/lib-storage/index/mbox/mbox-sync.c
+M src/lib-storage/index/pop3c/pop3c-mail.c
+M src/lib-storage/index/raw/raw-mail.c
+M src/lib-storage/index/raw/raw-storage.c
+M src/lib/file-cache.c
+M src/lib/istream-concat.c
+M src/lib/istream-failure-at.c
+M src/lib/istream-limit.c
+M src/lib/istream-private.h
+M src/lib/istream-seekable.c
+M src/lib/istream-tee.c
+M src/lib/istream.c
+M src/lib/ostream-file.c
+M src/lib/ostream.h
+M src/lib/strnum.c
+M src/lib/test-iostream-temp.c
+M src/lib/test-istream-concat.c
+M src/lib/test-istream-sized.c
+M src/lib/test-istream.c
+M src/lmtp/lmtp-client.c
+M src/lmtp/lmtp-proxy.c
+M src/lmtp/lmtp-settings.c
+M src/log/log-settings.c
+M src/master/master-settings.c
+M src/master/service.c
+M src/old-stats/stats-settings.c
+M src/plugins/fts-squat/squat-uidlist.c
+M src/plugins/mail-crypt/mail-crypt-plugin.c
+M src/plugins/pop3-migration/pop3-migration-plugin.c
+M src/plugins/quota/quota-maildir.c
+M src/plugins/zlib/zlib-plugin.c
+M src/pop3-login/pop3-login-settings.c
+M src/pop3/pop3-commands.c
+M src/pop3/pop3-settings.c
+M src/replication/aggregator/aggregator-settings.c
+M src/replication/replicator/replicator-settings.c
+M src/stats/stats-settings.c
+M src/submission-login/submission-login-settings.c
+M src/submission/submission-settings.c
+M src/util/health-check-settings.c
+M src/util/tcpwrap-settings.c
+
+2020-09-23 14:43:29 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e80cfb62b)
+
+ global: Use SIZE_MAX instead of (size_t)-1
+
+
+M src/anvil/anvil-connection.c
+M src/auth/auth-client-connection.c
+M src/auth/auth-master-connection.c
+M src/auth/auth-settings.c
+M src/auth/auth-worker-client.c
+M src/auth/auth-worker-server.c
+M src/auth/db-passwd-file.c
+M src/auth/mech-gssapi.c
+M src/auth/mech-winbind.c
+M src/auth/userdb-passwd-file.c
+M src/config/config-connection.c
+M src/config/config-parser.c
+M src/config/config-request.c
+M src/dict/dict-settings.c
+M src/director/auth-connection.c
+M src/director/director-settings.c
+M src/director/director-test.c
+M src/director/director.c
+M src/director/doveadm-connection.c
+M src/director/login-connection.c
+M src/dns/dns-client.c
+M src/doveadm/client-connection-tcp.c
+M src/doveadm/doveadm-director.c
+M src/doveadm/doveadm-dsync.c
+M src/doveadm/doveadm-dump-dbox.c
+M src/doveadm/doveadm-dump-log.c
+M src/doveadm/doveadm-log.c
+M src/doveadm/doveadm-oldstats.c
+M src/doveadm/doveadm-penalty.c
+M src/doveadm/doveadm-replicator.c
+M src/doveadm/doveadm-settings.c
+M src/doveadm/doveadm-stats.c
+M src/doveadm/doveadm-who.c
+M src/doveadm/doveadm-zlib.c
+M src/doveadm/server-connection.c
+M src/imap-hibernate/imap-hibernate-client.c
+M src/imap-hibernate/imap-master-connection.c
+M src/imap-login/imap-login-settings.c
+M src/imap-urlauth/imap-urlauth-client.c
+M src/imap-urlauth/imap-urlauth-login-settings.c
+M src/imap-urlauth/imap-urlauth-settings.c
+M src/imap-urlauth/imap-urlauth-worker-settings.c
+M src/imap-urlauth/imap-urlauth-worker.c
+M src/imap/cmd-getmetadata.c
+M src/imap/cmd-urlfetch.c
+M src/imap/imap-client.c
+M src/imap/imap-fetch-body.c
+M src/imap/imap-master-client.c
+M src/imap/imap-settings.c
+M src/indexer/indexer-client.c
+M src/indexer/master-connection.c
+M src/indexer/worker-connection.c
+M src/ipc/client.c
+M src/ipc/ipc-connection.c
+M src/lib-auth/auth-client-connection.c
+M src/lib-charset/charset-iconv.c
+M src/lib-dcrypt/dcrypt-openssl.c
+M src/lib-dcrypt/ostream-encrypt.c
+M src/lib-dict/dict-client.c
+M src/lib-dict/dict-file.c
+M src/lib-dict/dict-memcached-ascii.c
+M src/lib-dict/dict-memcached.c
+M src/lib-dict/dict-redis.c
+M src/lib-dns/dns-lookup.c
+M src/lib-dns/dns-util.c
+M src/lib-fs/fs-test.c
+M src/lib-http/http-client-connection.c
+M src/lib-http/http-client-request.c
+M src/lib-http/http-message-parser.c
+M src/lib-http/http-server-connection.c
+M src/lib-http/http-server-response.c
+M src/lib-http/test-http-client-errors.c
+M src/lib-http/test-http-payload.c
+M src/lib-http/test-http-server-errors.c
+M src/lib-imap-client/imapc-client.h
+M src/lib-imap-client/imapc-connection.c
+M src/lib-imap-client/test-imapc-client.c
+M src/lib-imap-storage/imap-msgpart.c
+M src/lib-imap-urlauth/imap-urlauth-connection.c
+M src/lib-imap/imap-bodystructure.c
+M src/lib-imap/imap-envelope.c
+M src/lib-imap/imap-id.c
+M src/lib-index/mail-cache-transaction.c
+M src/lib-index/mail-index-fsck.c
+M src/lib-index/mail-index-strmap.c
+M src/lib-index/mail-index-transaction-update.c
+M src/lib-index/mail-transaction-log-append.c
+M src/lib-index/mail-transaction-log-file.c
+M src/lib-lda/lda-settings.c
+M src/lib-mail/istream-header-filter.c
+M src/lib-mail/qp-decoder.c
+M src/lib-mail/test-istream-dot.c
+M src/lib-master/anvil-client.c
+M src/lib-master/ipc-client.c
+M src/lib-master/ipc-server.c
+M src/lib-master/master-instance.c
+M src/lib-master/master-login-auth.c
+M src/lib-master/master-login.c
+M src/lib-master/master-service-settings-cache.c
+M src/lib-master/master-service-settings.c
+M src/lib-master/master-service-ssl-settings.c
+M src/lib-master/stats-client.c
+M src/lib-master/test-event-stats.c
+M src/lib-master/test-master-service-settings-cache.c
+M src/lib-oauth2/test-oauth2-jwt.c
+M src/lib-program-client/program-client.c
+M src/lib-program-client/test-program-client-net.c
+M src/lib-program-client/test-program-client-unix.c
+M src/lib-settings/settings-parser.c
+M src/lib-settings/settings.c
+M src/lib-smtp/smtp-client-command.c
+M src/lib-smtp/smtp-client-connection.c
+M src/lib-smtp/smtp-client.h
+M src/lib-smtp/smtp-reply-parser.c
+M src/lib-smtp/smtp-server-connection.c
+M src/lib-smtp/smtp-submit-settings.c
+M src/lib-smtp/test-smtp-client-errors.c
+M src/lib-smtp/test-smtp-server-errors.c
+M src/lib-smtp/test-smtp-submit.c
+M src/lib-sql/sql-api.c
+M src/lib-ssl-iostream/istream-openssl.c
+M src/lib-storage/index/dbox-common/dbox-file.c
+M src/lib-storage/index/dbox-multi/mdbox-purge.c
+M src/lib-storage/index/dbox-multi/mdbox-settings.c
+M src/lib-storage/index/imapc/imapc-settings.c
+M src/lib-storage/index/maildir/maildir-settings.c
+M src/lib-storage/index/maildir/maildir-uidlist.c
+M src/lib-storage/index/mbox/istream-raw-mbox.c
+M src/lib-storage/index/mbox/mbox-settings.c
+M src/lib-storage/index/mbox/mbox-sync-parse.c
+M src/lib-storage/index/mbox/mbox-sync-rewrite.c
+M src/lib-storage/index/mbox/mbox-sync-update.c
+M src/lib-storage/index/pop3c/pop3c-client.c
+M src/lib-storage/index/pop3c/pop3c-settings.c
+M src/lib-storage/mail-storage-settings.c
+M src/lib-test/test-istream.c
+M src/lib-test/test-ostream.c
+M src/lib/array.c
+M src/lib/array.h
+M src/lib/buffer.c
+M src/lib/buffer.h
+M src/lib/file-cache.c
+M src/lib/istream-data.c
+M src/lib/istream-seekable.c
+M src/lib/istream-tee.c
+M src/lib/mempool-system.c
+M src/lib/ostream-buffer.c
+M src/lib/ostream-wrapper.c
+M src/lib/strfuncs.c
+M src/lib/test-buffer-istream.c
+M src/lib/test-buffer.c
+M src/lib/test-connection.c
+M src/lib/test-file-cache.c
+M src/lib/test-iostream-pump.c
+M src/lib/test-istream-multiplex.c
+M src/lib/test-multiplex.c
+M src/lib/test-ostream-buffer.c
+M src/lib/test-ostream-multiplex.c
+M src/lib/unichar.c
+M src/lib/uri-util.c
+M src/lmtp/lmtp-settings.c
+M src/log/doveadm-connection.c
+M src/login-common/login-proxy.c
+M src/login-common/login-settings.c
+M src/master/master-settings.c
+M src/master/test-auth-client.c
+M src/master/test-auth-master.c
+M src/master/test-master-login-auth.c
+M src/old-stats/client.c
+M src/old-stats/global-memory.c
+M src/old-stats/stats-settings.c
+M src/plugins/acl/acl-backend-vfile-acllist.c
+M src/plugins/acl/acl-backend-vfile.c
+M src/plugins/acl/acl-global-file.c
+M src/plugins/fts-squat/squat-test.c
+M src/plugins/fts/fts-expunge-log.c
+M src/plugins/mail-crypt/fs-crypt-common.c
+M src/plugins/mail-crypt/fs-crypt-settings.c
+M src/plugins/quota/quota-status-settings.c
+M src/plugins/quota/quota-status.c
+M src/plugins/trash/trash-plugin.c
+M src/plugins/virtual/virtual-config.c
+M src/pop3-login/pop3-login-settings.c
+M src/pop3/pop3-client.c
+M src/pop3/pop3-settings.c
+M src/replication/aggregator/aggregator-settings.c
+M src/replication/aggregator/notify-connection.c
+M src/replication/aggregator/replicator-connection.c
+M src/replication/replicator/doveadm-connection.c
+M src/replication/replicator/dsync-client.c
+M src/replication/replicator/notify-connection.c
+M src/replication/replicator/replicator-queue.c
+M src/replication/replicator/replicator-settings.c
+M src/stats/client-reader.c
+M src/stats/client-writer.c
+M src/stats/stats-settings.c
+M src/stats/test-client-reader.c
+M src/stats/test-client-writer.c
+M src/submission-login/submission-login-settings.c
+M src/submission/submission-settings.c
+M src/util/rawlog.c
+
+2020-08-11 08:41:54 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (369833493)
+
+ lib: macros - Add ENUM_NEGATE
+
+ Handles enumeration flag negation.
+
+M src/lib/macros.h
+
+2020-07-28 13:42:01 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (55c6d609a)
+
+ configure: Add ubsan support
+
+
+M m4/dovecot.m4
+M src/lib/macros.h
+
+2020-09-23 14:39:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (15318d278)
+
+ lib-mail: test-message-header-hash: Fix type issue
+
+ Satisfies runtime analyzer.
+
+M src/lib-mail/test-message-header-hash.c
+
+2020-09-22 14:39:41 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e32650c39)
+
+ doveadm: mailbox status - Handle first_save_date correctly
+
+ If first_save_date is -1 it means no save has been done.
+
+M src/doveadm/doveadm-mail-mailbox-status.c
+
+2020-08-20 08:57:35 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (309b3ceba)
+
+ lib: unichar - Change uni_utf8_char_bytes to accept unsigned char
+
+
+M src/lib-imap/imap-utf7.c
+M src/lib/unichar.h
+
+2020-09-01 09:57:04 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (fa3b53798)
+
+ lib-index: Use SIZE_MAX with str_sanitize
+
+
+M src/lib-index/mail-index-map.c
+M src/lib-index/mail-index.c
+
+2020-09-01 09:57:23 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b8c83f606)
+
+ auth: password-scheme - Use UINT_MAX when calling password_generate_otp
+
+
+M src/auth/password-scheme.c
+
+2020-09-01 11:54:50 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3aed1e852)
+
+ lib: mempool-allocfree - Do not use PTR_OFFSET with negative offset
+
+ Avoids undefined behaviour sanitization error.
+
+M src/lib/mempool-allocfree.c
+
+2020-09-01 11:56:42 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f5af22d2c)
+
+ lib-fts: test-fts-tokenizer - Change test_chars to unsigned char
+
+
+M src/lib-fts/test-fts-tokenizer.c
+
+2020-08-20 09:46:24 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f2e4eed82)
+
+ lib: str - Ensure str_append_c gets unsigned char parameter
+
+
+M src/lib/str.h
+
+2020-10-01 11:37:24 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f4ab2fc96)
+
+ lib: seq-range-array - Assert-crash if array becomes 0..(uint32_t)-1
+
+
+M src/lib/seq-range-array.c
+M src/lib/seq-range-array.h
+M src/lib/test-lib.inc
+M src/lib/test-seq-range-array.c
+
+2020-10-01 11:19:33 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (588c3b963)
+
+ lib: seq_range_array_add() - Reorder code flow
+
+
+M src/lib/seq-range-array.c
+
+2020-10-01 11:18:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1c7ae79d9)
+
+ lib: seq-range-array - Split off seq_range_array_add_slow_path()
+
+
+M src/lib/seq-range-array.c
+
+2020-10-01 11:04:56 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1203cd16a)
+
+ lib: seq-range-array - Use seq_range_length() internally
+
+
+M src/lib/seq-range-array.c
+
+2020-10-01 11:04:36 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c1a5cbb9d)
+
+ lib: seq_range_length() - Use const pointer
+
+
+M src/lib/seq-range-array.h
+
+2020-10-20 15:02:24 +0300 Martti Rannanjärvi <martti.rannanjarvi@open-xchange.com> (6752ab40f)
+
+ doc: Include dovecot-oauth2.conf.ext in dist tarball
+
+
+M doc/example-config/Makefile.am
+
+2020-10-12 23:29:02 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7f1738a77)
+
+ doveadm-server: Fix STARTTLS support.
+
+
+M src/doveadm/main.c
+
+2020-10-13 22:56:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4b90fbfcc)
+
+ lib-master: master-service-ssl - Make context initialization error more
+ useful.
+
+ This improves the error in case SSL is disabled; other causes still yield a
+ rather unhelpful error message.
+
+M src/lib-master/master-service-ssl.c
+
+2020-10-12 23:18:09 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c2e5d7fdf)
+
+ lib: ostream-multiplex - Fix dead assignment by adding an assertion on the
+ result.
+
+ Found by Clang scan-build.
+
+M src/lib/ostream-multiplex.c
+
+2020-10-07 00:06:08 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (904d96418)
+
+ global: Fix dead assignments in expressions.
+
+ Found by Clang scan-build.
+
+M src/auth/db-lua.c
+M src/lib-sql/driver-cassandra.c
+M src/lib/ostream-wrapper.c
+M src/plugins/mail-lua/mail-lua-plugin.c
+M src/plugins/mail-lua/mail-storage-lua.c
+M src/plugins/push-notification/push-notification-driver-lua.c
+
+2020-10-08 13:48:45 +0200 raphael-walther <48209673+raphael-walther@users.noreply.github.com> (9a8ebce90)
+
+ man: Update doveadm-search-query.7
+
+ TEXT searches also from headers, not just body.
+
+M doc/man/doveadm-search-query.7
+
+2020-10-07 17:48:06 +0200 jonmoesli <69861248+jonmoesli@users.noreply.github.com> (f0c15f2d6)
+
+ director: Fix error message when director_username_hash expansion fails
+
+
+M src/director/director.c
+
+2020-10-09 14:58:54 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (787cc98cf)
+
+ lib-storage: Fix potential assert-crash when adding missing attachment
+ keywords
+
+ Broken by aab71c35259f542d9ba46b4b5b24eff0016b802e
+
+ Fixes: Panic: file index-mail.c: line 1241 (index_mail_parse_body):
+ assertion failed: (data->parser_ctx != NULL)
+
+M src/lib-storage/index/index-mail-headers.c
+M src/lib-storage/index/index-mail.c
+
+2020-10-08 10:41:52 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4c4377e82)
+
+ lib: json-parser - Fix skipping strings with non-blocking input
+
+ The skipping could have accessed memory outside the allocated string. This
+ might have resulted in a crash, or caused JSON parsing to fail.
+
+M src/lib/json-parser.c
+
+2020-09-16 05:06:12 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (8608c2690)
+
+ lib-mail: test-message-header-decode - Add random encode/decode tests for 8
+ bit data.
+
+ This also tests handling of (broken) UTF-8 input.
+
+M src/lib-mail/test-message-header-decode.c
+
+2020-09-16 04:31:58 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b37dcca4f)
+
+ lib-mail: test-message-header-encode - Add tests for broken UTF-8 in input.
+
+
+M src/lib-mail/test-message-header-encode.c
+
+2020-09-17 12:17:44 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (5f35cab96)
+
+ lib-mail: test-message-header-encode - Check maximum line length with long
+ printable text and whitespace.
+
+
+M src/lib-mail/test-message-header-encode.c
+
+2020-09-17 01:26:13 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (05e84eb74)
+
+ lib-mail: message-header-encode - Update function descriptions.
+
+
+M src/lib-mail/message-header-encode.h
+
+2020-09-16 03:21:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (617b1beaa)
+
+ lib-mail: Properly handle bad UTF-8 in message_header_encode_b().
+
+ Broken characters are substituted with a replacement character.
+
+M src/lib-mail/message-header-encode.c
+
+2020-09-16 03:19:34 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (e73eafc68)
+
+ lib-mail: Properly handle bad UTF-8 in message_header_encode_q().
+
+ Broken characters are substituted with a replacement character.
+
+M src/lib-mail/message-header-encode.c
+
+2020-09-16 03:10:12 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (de56f9152)
+
+ lib-mail: message-header-encode - Return immediately when len == 0 in
+ message_header_encode_b/q().
+
+ Just to make sure. This shouldn't happen in the first place.
+
+M src/lib-mail/message-header-encode.c
+
+2020-09-16 03:05:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (894e088f9)
+
+ lib-mail: message-header-encode - Use size_t for length/size variables and
+ parameters.
+
+
+M src/lib-mail/message-header-encode.c
+M src/lib-mail/message-header-encode.h
+
+2020-09-17 01:33:52 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2d35de6b6)
+
+ lib-mail: message-header-encode - Fix encoding of 0x7F byte for Q encoding.
+
+ It was not escaped.
+
+M src/lib-mail/message-header-encode.c
+M src/lib-mail/test-message-header-decode.c
+
+2020-09-17 01:41:41 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6832846c8)
+
+ lib-mail: test-message-header-decode - Use test_assert_idx().
+
+
+M src/lib-mail/test-message-header-decode.c
+
+2020-09-16 18:28:43 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (154602378)
+
+ lib-mail: test-message-header-decode - Avoid generating random bytes that
+ are never used.
+
+
+M src/lib-mail/test-message-header-decode.c
+
+2020-09-17 12:24:40 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (9bd6007d8)
+
+ lib-mail: test-message-header-decode - Use test_assert_strcmp().
+
+
+M src/lib-mail/test-message-header-decode.c
+
+2020-09-17 12:23:06 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0b5206d88)
+
+ lib-mail: test-message-header-encode - Use test_assert_strcmp().
+
+
+M src/lib-mail/test-message-header-encode.c
+
+2020-09-16 01:03:53 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (334cd2fc2)
+
+ lib: base64 - Add base64_encode_get_full_space().
+
+ This translates the space in the destination buffer to the number of bytes
+ that can be encoded at most to complete the full base64 encoding, including
+ padding and newlines if configured.
+
+M src/lib/base64.c
+M src/lib/base64.h
+M src/lib/test-base64.c
+
+2020-09-16 01:02:22 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dd8408a50)
+
+ lib: base64 - Fix return value of base64_encode_more().
+
+ It didn't properly return TRUE when all input data was consumed.
+
+M src/lib/base64.c
+M src/lib/test-base64.c
+
+2020-09-16 23:19:19 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2eaa4e3fd)
+
+ lib: test-base64 - Add test for base64_encode_get_size() in random lowlevel
+ streaming tests.
+
+
+M src/lib/test-base64.c
+
+2020-09-16 23:20:32 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (375332aa5)
+
+ lib: test-base64 - Abort random lowlevel test case early when something
+ failed already.
+
+
+M src/lib/test-base64.c
+
+2020-09-16 00:37:45 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c830037f8)
+
+ lib: unichar - Add length definitions for replacement and ellipsis
+ characters.
+
+
+M src/lib/unichar.h
+
+2020-05-06 13:15:34 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1cf804030)
+
+ lib: json-parser - Fix parsing \uXXXX in non-blocking input
+
+ If it was in the istream's read boundary it resulted as parsing error.
+
+M src/lib/json-parser.c
+M src/lib/test-json-parser.c
+
+2020-05-06 13:01:41 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c4beabf43)
+
+ lib: json-parser - Fix error message for invalid escape sequence
+
+
+M src/lib/json-parser.c
+
+2020-05-06 12:54:13 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7d7432981)
+
+ lib: json-parser - Don't allocate errors from data stack
+
+ There's no guarantee that the json-parser's life time is within the same
+ data stack frame.
+
+M src/lib/json-parser.c
+
+2020-05-06 12:38:22 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a4057ea64)
+
+ lib: json-parser - Fail if strings contain NULs
+
+ Previous behavior was to just truncate the string, which could be worse than
+ failing entirely.
+
+M src/lib/json-parser.c
+M src/lib/test-json-parser.c
+
+2020-09-23 01:59:27 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4d0988452)
+
+ lib-http: test-http-client-errors - Add unit test for host idle timeout.
+
+ This test involves retrying a request that failed host lookup, which used to
+ cause the request to be erroneously aborted.
+
+M src/lib-http/test-http-client-errors.c
+
+2020-09-21 01:14:20 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ac4173fa3)
+
+ lib-http: http-client-host - Prevent erroneously starting host idle timeout
+ during request retry.
+
+ During request retry the request is first dropped from and subsequently
+ added to the queue. Dropping a request from the queue can start the host
+ idle timeout when it is the very last one. The timeout was not removed later
+ on anymore when the request was submitted again, because it was added
+ prematurely (before dropping the request).
+
+M src/lib-http/http-client-host.c
+
+2020-09-20 23:16:00 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (29f3be1af)
+
+ lib-http: http-client-host - Fix determination of whether host is idle.
+
+
+M src/lib-http/http-client-host.c
+
+2020-09-22 22:12:27 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c701368be)
+
+ lib-http: http-client-host - Make sure DNS lookup is performed when host has
+ no IPs.
+
+ This fixes at least one panic:
+
+ Panic: file ./http-client-private.h: line 679 (http_client_host_get_ip):
+ assertion failed: (idx < host->shared->ips_count)
+
+M src/lib-http/http-client-host.c
+
+2020-08-26 11:31:01 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (bf1c45440)
+
+ auth: Fix potential read buffer overflow in PLAIN mechanism
+
+ The overflow could have crashed the auth process in theory, although
+ practically it doesn't seem to happen.
+
+M src/auth/mech-plain.c
+M src/auth/test-mech.c
+
+2020-08-26 11:42:02 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e29ce296c)
+
+ auth: test-mech - Allocate test input explicitly
+
+ This way valgrind will catch if there are read buffer overflows.
+
+M src/auth/test-mech.c
+
+2020-04-01 17:22:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c394c6095)
+
+ lib-index: Fix DEBUG assert to not trigger on transaction resets
+
+ Fixes a crash in test-mail-index when compiled --with-devel-checks:
+
+ Panic: file mail-index-transaction.c: line 211
+ (mail_index_transaction_commit_real): assertion failed:
+ (expected_highest_modseq == log->head->sync_highest_modseq)
+
+M src/lib-index/mail-index-transaction.c
+
+2020-09-17 15:43:02 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (372a88e70)
+
+ login-common: Include the proxy's source address in log messages
+
+
+M src/login-common/client-common-auth.c
+
+2020-09-17 15:42:52 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (c066b7d60)
+
+ login-common: Move common client info logging into a helper function
+
+
+M src/login-common/client-common-auth.c
+
+2020-09-17 14:19:46 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (cd8a50c68)
+
+ login-common: Add login_proxy_get_source_host() to get the local proxy
+ hostname
+
+
+M src/login-common/login-proxy.c
+M src/login-common/login-proxy.h
+
+2020-09-17 10:45:44 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (bd8eadf12)
+
+ login-common: Heap allocate login source IPs array to avoid use-after-free
+
+ By default, the service init code runs with a temporary datastack frame that
+ gets freed at the end of initialization to get rid of any temporary
+ allocations made during init before the long-running part of the process
+ executes.
+
+M src/login-common/main.c
+
+2020-09-18 14:55:27 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (4740d48ba)
+
+ man: update doveadm-proxy man page with kick -h option.
+
+
+M doc/man/doveadm-proxy.1.in
+M src/login-common/login-proxy.c
+
+2020-09-15 15:52:24 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (0f889378f)
+
+ doveadm: Implement proxy kick -h <host>
+
+
+M src/doveadm/doveadm-proxy.c
+
+2020-09-15 15:51:26 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (30a816a36)
+
+ login-common: Implement kicking all user at backend host.
+
+
+M src/login-common/login-proxy.c
+
+2020-09-17 13:51:36 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (62e8fe8c4)
+
+ login-common: change want_kick signature from (struct *client, ...) to
+ (struct *login_proxy, ...)
+
+
+M src/login-common/login-proxy.c
+
+2020-09-25 10:43:39 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (10f534e0f)
+
+ login-common: Put proxy looping on stack in login_proxy_cmd_kick_full()
+
+
+M src/login-common/login-proxy.c
+
+2020-06-24 11:20:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (517080d0f)
+
+ lib-smtp: smtp-server-connection - Ignore replied command for pipeline limit
+ calculation.
+
+ This prevents failed commands with payload from blocking the input pipeline.
+ This caused a hang before.
+
+M src/lib-smtp/smtp-server-connection.c
+
+2020-06-24 11:15:55 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (95edff15c)
+
+ lib-smtp: smtp-server-connection - Use connection settings for command
+ pipeline limit.
+
+ It used the top-level server settings before.
+
+M src/lib-smtp/smtp-server-connection.c
+
+2020-06-24 11:13:59 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0dcc8f055)
+
+ lib-smtp: smtp-server-connection - Move pipeline limit check to separate
+ function.
+
+
+M src/lib-smtp/smtp-server-connection.c
+
+2020-06-24 10:45:38 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (e1009a864)
+
+ lib-smtp: smtp-server-command - Always end input lock/capture upon reply
+ submission.
+
+
+M src/lib-smtp/smtp-server-command.c
+
+2020-06-24 10:42:17 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d6ec5245d)
+
+ lib-smtp: smtp-server-command - Reliably end input capture in
+ smtp_server_command_input_unlock().
+
+
+M src/lib-smtp/smtp-server-command.c
+
+2020-09-17 13:09:54 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3fa7052a5)
+
+ lib-storage: Rename mail_attachment_detection_options=add-flags-on-save to
+ add-flags
+
+ Keep add-flags-on-save for backwards compatibility.
+
+M doc/example-config/conf.d/10-mail.conf
+M src/lib-storage/index/index-mail.c
+M src/lib-storage/mail-storage-settings.c
+M src/lib-storage/mail-storage-settings.h
+M src/lib-storage/mail-storage.c
+
+2020-09-04 01:58:58 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (aab71c352)
+
+ lib-storage: Try to add missing attachment flags when opening mail stream
+
+ Since the message body is being opened in any case, it's pretty inexpensive
+ to add missing attachment flags. Do this only when
+ mail_attachment_detection_options has add-flags-on-save but no
+ no-flags-on-fetch.
+
+M src/lib-storage/index/index-mail.c
+
+2020-09-10 16:38:11 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (194dcaa65)
+
+ lib-storage: Try to add missing attachment flags when fetching MIME parts or
+ BODYSTRUCTURE
+
+ This happens only if both mime.parts and imap.bodystructure are already in
+ cache and mail_attachment_detection_options has add-flags-on-save but no
+ no-flags-on-fetch. The no-flags-on-fetch option may be removed in a future
+ release once it's known that it's not causing any unexpected performance
+ issues.
+
+M src/lib-storage/index/index-mail.c
+M src/lib-storage/mail-storage-settings.c
+M src/lib-storage/mail-storage-settings.h
+
+2020-09-10 16:36:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (52a0f9184)
+
+ lib-storage: index_mail_get_cached_bodystructure() - Reorder the if
+ statements
+
+ Simplifies the following commit.
+
+M src/lib-storage/index/index-mail.c
+
+2020-09-10 16:32:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (74ab5e62e)
+
+ lib-storage: Avoid initializing stream multiple times recursively
+
+ This fixes the situation where stream opening causes it to be re-opened by
+ index_mail_parse_headers(). There are some other more rare situations, but
+ they're in error handling code paths.
+
+M src/lib-storage/index/index-mail-headers.c
+M src/lib-storage/index/index-mail.c
+M src/lib-storage/index/index-mail.h
+
+2020-09-10 16:21:17 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f4f1c0a1b)
+
+ lib-storage: Avoid caching size.physical unless it's explicitly asked for
+
+ It's internally requested in a few places, but only as an optimization if it
+ happens to exist. It's not important enough that it should affect caching
+ decisions.
+
+ This change becomes more important after the following changes, which cause
+ size.physical to be added unnecessarily when filling out attachment flags.
+
+M src/lib-storage/index/index-mail.c
+
+2020-09-22 20:00:17 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (778811a3e)
+
+ lib-http: http-client-host - Do not prematurely reset ips_count to zero.
+
+ It causes problems with existing connection attempts.
+
+ Panic was:
+
+ Panic: file http-client-queue.c: line 215
+ (http_client_queue_is_last_connect_ip): assertion failed:
+ (queue->ips_connect_idx < ips_count)
+
+M src/lib-http/http-client-host.c
+
+2020-09-23 02:04:20 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dff9d4719)
+
+ lib-http: http-client-host - Log debug message for failed DNS lookup.
+
+ If the host has no requests, nothing is logged about the failure otherwise.
+
+M src/lib-http/http-client-host.c
+
+2020-09-22 19:58:59 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1c9264909)
+
+ lib-http: http-client-host - Move DNS lookup success handling to a common
+ function.
+
+
+M src/lib-http/http-client-host.c
+
+2020-09-21 00:38:11 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a01eae05b)
+
+ lib-http: Reformat http-client-host.c.
+
+
+M src/lib-http/http-client-host.c
+
+2020-09-28 15:26:27 -0400 ihsinme <61293369+ihsinme@users.noreply.github.com> (9ca475537)
+
+ lib-mail: html2text - Fix buffer out-of-bounds access
+
+ The passed in buffer size is at least 1 byte shorter than the actual buffer
+ size, therefore there is no chance of a crash.
+
+M src/lib-mail/mail-html2text.c
+
+2020-08-15 00:56:36 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (645a30a6c)
+
+ dict-sql: Fix crash if dict iteration is destroyed early
+
+ If the iteration callback is still called after the iterator is freed, the
+ callback accesses freed memory and crashes.
+
+M src/lib-dict-backend/dict-sql.c
+
+2020-09-12 00:20:51 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dba3d8662)
+
+ lib-smtp: test-smtp-command-parser - Add tests for input ending in partial
+ UTF-8 sequences.
+
+
+M src/lib-smtp/test-smtp-command-parser.c
+
+2020-09-12 00:19:14 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4e24c1a70)
+
+ lib-smtp: test-smtp-command-parser - Test parsing commands from input that
+ comes in gradually.
+
+
+M src/lib-smtp/test-smtp-command-parser.c
+
+2020-09-12 00:15:35 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (77903cf3a)
+
+ lib-smtp: smtp-command-parser - Fix parameter parsing not to fail on
+ particular unicode code points.
+
+ Unicode code points were sometimes erroneously checked as ASCII characters.
+
+M src/lib-smtp/smtp-command-parser.c
+
+2020-09-11 21:53:06 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1ae3ca298)
+
+ lib-smtp: smtp-command-parser - Fix read past buffer limit while parsing
+ UTF-8 character.
+
+ The buffer limit was specified as (buf->pos - buf->end) rather than
+ (buf->end - buf->pos). Since at most a valid UTF-8 character can be read
+ beyond the buffer size, this bug didn't cause noticeable effects, nor does
+ it present an attack surface.
+
+M src/lib-smtp/smtp-command-parser.c
+
+2020-09-11 23:54:29 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2ec6f2f75)
+
+ lib-smtp: Reformat test-smtp-command-parser.c.
+
+
+M src/lib-smtp/test-smtp-command-parser.c
+
+2020-09-11 22:57:58 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (853b23346)
+
+ lib-smtp: Reformat smtp-command-parser.c.
+
+
+M src/lib-smtp/smtp-command-parser.c
+
+2020-08-31 20:38:42 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a668d767a)
+
+ lib-mail: message_parser_init_from_parts() - Fix crash if MIME boundaries
+ don't end
+
+ If the last "boundary--" doens't exist, the parsing assert-crashed at
+ deinit. This mainly happened when searching mails.
+
+ Fixes: Panic: file message-parser.c: line 175 (message_part_finish):
+ assertion failed: (ctx->nested_parts_count > 0)
+
+M src/lib-mail/message-parser.c
+M src/lib-mail/test-message-parser.c
+
+2020-08-28 18:35:00 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (86e1953d0)
+
+ acl: Ignore acl_object_list_deinit() error when copying ACLs from parent
+
+ There's already a FIXME, and this makes static analyzer happier.
+
+M src/plugins/acl/acl-mailbox.c
+
+2020-08-13 11:38:07 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (007e1ff1c)
+
+ director: Explicitly ignore array_bsearch_insert_pos() return value
+
+ Makes static analyzers happier.
+
+M src/director/mail-host.c
+
+2020-08-13 11:29:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (15e7385f6)
+
+ lib: test-istream - Check or explicitly ignore i_stream_read() return value
+
+ Makes static analyzers happier.
+
+M src/lib/test-istream.c
+
+2020-08-12 11:05:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (51ed74c63)
+
+ lib-ssl-iostream: Fix error message with invalid ciphersuites
+
+ The error message contained curve_list's value, not ciphersuites' value.
+
+M src/lib-ssl-iostream/iostream-openssl-context.c
+
+2020-09-14 17:44:58 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (ffd2fdd8d)
+
+ lib-compression: test-compression - Fix memory leak
+
+
+M src/lib-compression/test-compression.c
+
+2020-09-14 10:37:16 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8655329e1)
+
+ lib: Add a comment about o_stream_create_buffer()
+
+
+M src/lib/ostream.h
+
+2020-09-14 10:28:41 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (d2054a311)
+
+ lib: ostream-buffer - Revert returning 0 as used buffer size
+
+ This change broke at least one external plugin that assumed the original
+ behavior. Safer to just revert this change.
+
+ Reverts 48083d9e7fdbe257b0be33043ecf0ca87489eef9
+
+M src/lib/ostream-buffer.c
+M src/lib/test-ostream-buffer.c
+
+2020-09-14 10:27:26 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (0416a3fdc)
+
+ lib-compression: test-compression - Convert from ostream-buffer to
+ iostream-temp
+
+ Using ostream-buffer required 48083d9e7fdbe257b0be33043ecf0ca87489eef9
+ change, but this broke some code that assumed the original behavior.
+
+M src/lib-compression/test-compression.c
+
+2020-09-11 23:28:47 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (c2eee2e4b)
+
+ lib-compression: test-compression - Use datastack in test
+
+ Plugs a memory leak.
+
+ Broken in 60b4040ba498ce7b19fc8b189d327cc606856f07
+
+M src/lib-compression/test-compression.c
+
+2020-09-11 14:29:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (71c3938bc)
+
+ lib-fs: test-fs-async - Fix to work properly after previous changes
+
+ It's an async test, so it should expect that the fs actually behaves
+ asynchronously.
+
+M src/lib-fs/fs-test-async.c
+
+2020-09-11 14:28:11 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (31d7b252d)
+
+ lib-dict: dict_switch_ioloop() - Move also failure timeout
+
+ Forgotten in 178bb676ea1dd380789d3587bf5e64fd85a29d7a
+
+M src/lib-dict/dict.c
+
+2020-08-21 14:31:12 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (0bcdf2217)
+
+ stats: event exporter - Use category exporting helper to avoid duplicates
+ (tabtext)
+
+
+M src/stats/event-exporter-fmt-tab-text.c
+
+2020-08-21 14:23:50 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (de4d3eb97)
+
+ stats: event exporter - Use category exporting helper to avoid duplicates
+ (json)
+
+
+M src/stats/event-exporter-fmt-json.c
+
+2020-08-21 14:23:14 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (eb4c8a9a5)
+
+ stats: Add helper to append category names without duplicates
+
+
+M src/stats/event-exporter-fmt.c
+M src/stats/event-exporter.h
+
+2020-08-28 18:36:47 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6f42f48bd)
+
+ lib: net_listen|connect_unix() - Use consistent error handling for too long
+ paths
+
+ The errno should be the same for both functions. Prefer ENAMETOOLONG if it
+ exists on the OS, otherwise fallback to EOVERFLOW.
+
+M src/lib/net.c
+M src/lib/test-net.c
+
+2020-09-11 08:22:11 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (1f2ac2afa)
+
+ lib-dict: dict - Keep track of next commit in dict_wait
+
+ Satisfies static analyser, broken in
+ 178bb676ea1dd380789d3587bf5e64fd85a29d7a
+
+M src/lib-dict/dict.c
+
+2020-09-10 17:56:49 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b4a048914)
+
+ lib-dict: dict - Ensure there are no commits during deinit
+
+
+M src/lib-dict/dict.c
+
+2020-09-10 17:43:06 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (24aca7088)
+
+ lib-dict: dict - Allow calling callback immediately
+
+ Make callback calls the next callback immediately, instead of adding a
+ timeout that calls the callback.
+
+ Forgotten in 178bb676ea1dd380789d3587bf5e64fd85a29d7a
+
+M src/lib-dict/dict.c
+
+2020-09-10 17:42:19 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (5db10b21b)
+
+ lib-dict: dict - Change background to delayed_callback
+
+ It better describes what it's intended to do.
+
+M src/lib-dict/dict.c
+
+2020-08-12 15:48:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (690702153)
+
+ acl: Add unit test for acl_rights_sort()
+
+
+M src/plugins/acl/Makefile.am
+A src/plugins/acl/test-acl.c
+
+2020-08-12 15:46:31 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3d15b2596)
+
+ acl: acl_rights_sort() - Handle zero sized rights array properly
+
+ Fixes ubsan complaint about count-dest wrapping to negative. The array code
+ handled this properly though, so nothing was broken.
+
+M src/plugins/acl/acl-api.c
+
+2020-09-01 09:13:05 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (9a389c7e8)
+
+ lib: test-file-cache - Add tests for file-cache
+
+
+M src/lib/Makefile.am
+A src/lib/test-file-cache.c
+M src/lib/test-lib.inc
+
+2020-08-20 16:47:12 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (eab4b27d3)
+
+ lib: log-throttle - Initialize last_throttle
+
+ It's compared to ioloop_timeval later on and would produce overflow there.
+
+M src/lib/log-throttle.c
+
+2020-08-20 16:24:41 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (bbca56c94)
+
+ quota: quota_free_bytes - Check we don't decrease more than INT64_MAX
+
+ Otherwise we get overflow
+
+M src/plugins/quota/quota.c
+
+2020-08-20 12:46:06 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (d50a5a115)
+
+ lib: file-dotlock - Do not call callback if we are going to timeout
+
+
+M src/lib/file-dotlock.c
+
+2020-08-20 10:55:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (2a82a8a9d)
+
+ lib-mail: istream-header-filter - Avoid unsigned overflow in last_offset
+ calculation
+
+ Unsigned integer overflow occurs when size is 0.
+
+M src/lib-mail/istream-header-filter.c
+
+2020-08-20 10:37:54 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (d34c87339)
+
+ lib-ldap: ldap_connection_send_next - Extract next message in separate
+ function
+
+
+M src/lib-ldap/ldap-connection.c
+
+2020-08-20 10:31:41 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (70d98bc56)
+
+ lib-storage: index-mail-headers - Avoid unsigned overflow on
+ header_match_value
+
+
+M src/lib-storage/index/index-mail-headers.c
+
+2020-08-20 09:53:11 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (4eb3f6f27)
+
+ imap: imap-sync - Avoid unsigned integer overflow
+
+ Error: imap-sync.c:433:17: runtime error: unsigned integer overflow:
+ 4294967295 + 1 cannot be represented in type 'unsigned int'
+
+M src/imap/imap-sync.c
+
+2020-08-20 09:44:58 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3a5ebc8e8)
+
+ lib-mail: test-istream-attachment - Avoid unsigned overflow in size
+ calculation
+
+
+M src/lib-mail/test-istream-attachment.c
+
+2020-08-20 09:44:20 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (43f872958)
+
+ lib: var-expand - Avoid unsigned overflow in offset calculation
+
+
+M src/lib/var-expand.c
+
+2020-08-20 09:43:35 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (16ab55427)
+
+ lib: time-util - Use correct data types
+
+
+M src/lib/time-util.c
+
+2020-08-20 09:34:40 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (192d351ae)
+
+ quota: quota-imapc - Handle quota limits better
+
+ If quota limit is bigger than INT64_MAX, it's unlimited as we cannot express
+ this anyways.
+
+M src/plugins/quota/quota-imapc.c
+
+2020-08-20 09:10:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (7ca5c15b7)
+
+ lib-mail: message-parser - Change last_chr to unsigned char
+
+ Matches code usage.
+
+M src/lib-mail/message-parser-private.h
+
+2020-08-20 09:02:07 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (1a29b5ec0)
+
+ lib-imap-storage: imap-msgpart - Fix constant type
+
+
+M src/lib-imap-storage/imap-msgpart.c
+
+2020-08-20 08:47:16 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (a0ea53c31)
+
+ auth: password-scheme - Fix salt generation data type mess
+
+ Satisfies runtime analyser
+
+M src/auth/password-scheme.c
+
+2020-08-20 08:44:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (13254b7a4)
+
+ auth: mech-scram - Use correct data type for proof calculation
+
+ Satisfies runtime analyzer
+
+M src/auth/mech-scram.c
+
+2020-08-31 16:15:15 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (faa0c21f2)
+
+ lib: Remove istream-mmap.c
+
+ Nothing uses it.
+
+M src/lib/Makefile.am
+D src/lib/istream-mmap.c
+M src/lib/istream.h
+
+2020-08-31 10:33:05 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (28d085f40)
+
+ lib-ntlm: Ensure data_size is large enough for buffer
+
+
+M src/lib-ntlm/ntlm-message.c
+
+2020-08-13 09:48:27 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (371025a28)
+
+ lib-ntlm: Use CONST_PTR_OFFSET
+
+
+M src/lib-ntlm/ntlm-message.c
+M src/lib-ntlm/ntlm.h
+
+2020-08-13 09:46:37 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (4a264f8f7)
+
+ auth, lib-ntlm: Use dovecot byteorder functions
+
+
+M src/auth/mech-ntlm.c
+M src/lib-ntlm/Makefile.am
+D src/lib-ntlm/ntlm-byteorder.h
+M src/lib-ntlm/ntlm-message.c
+M src/lib-ntlm/ntlm.h
+
+2020-08-11 09:00:17 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (acba0e7c3)
+
+ lib: buffer - Assert that we don't try to allocate SIZE_MAX buffer
+
+ Only if devel checks are enabled
+
+M src/lib/buffer.c
+
+2020-08-11 08:45:37 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (c2631470a)
+
+ lib-ssl-iostream: ostream-openssl - Allocate at most IO_BLOCK_SIZE initial
+ buffer
+
+ Otherwise we might attempt to allocate way too large buffers. This has not
+ caused issues yet, except with max_buffer_size=SIZE_T, which has been
+ causing us to allocate 0-sized buffers.
+
+M src/lib-ssl-iostream/ostream-openssl.c
+
+2020-08-10 19:54:51 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ddf34a7a7)
+
+ auth: auth-cache - Data is not 4 bytes but variable sized
+
+
+M src/auth/auth-cache.c
+M src/auth/auth-cache.h
+
+2020-08-13 11:41:23 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (91c831378)
+
+ lib-otp: Use for-loop instead while
+
+ Avoids unsigned integer wrap
+
+M src/lib-otp/otp-hash.c
+
+2020-08-13 11:40:35 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (6473c1a61)
+
+ lib-compression: istream-zstd - Handle signed/unsigned return values
+ correctly
+
+
+M src/lib-compression/istream-zstd.c
+
+2020-08-13 11:39:59 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (20765bf47)
+
+ lib: lib-event - Use for-loop in copying categories
+
+ Avoids unsigned integer wrap
+
+M src/lib/lib-event.c
+
+2020-08-19 13:55:18 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (5c7b85971)
+
+ global: Use i_rand_limit(limit) instead of i_rand() % limit
+
+ spatch with coccinelle/random-misuse.cocci
+
+A coccinelle/random-misuse.cocci
+M src/director/director-test.c
+M src/lib-fts/test-fts-tokenizer.c
+M src/lib/test-array.c
+M src/lib/test-data-stack.c
+M src/lib/test-hash.c
+M src/lib/test-istream-crlf.c
+M src/lib/test-istream-multiplex.c
+M src/lib/test-multiplex.c
+M src/lib/test-ostream-multiplex.c
+M src/lib/test-seq-range-array.c
+
+2020-08-19 14:01:50 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (a8705c0a8)
+
+ lib: Use i_rand_limit() helpers
+
+
+M src/lib/test-array.c
+M src/lib/test-base32.c
+M src/lib/test-base64.c
+M src/lib/test-buffer.c
+M src/lib/test-istream-base64-decoder.c
+
+2020-08-19 14:00:03 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (761f5d779)
+
+ lib: test-base32/64 - Use unsigned char
+
+ Simplifies next change
+
+M src/lib/test-base32.c
+M src/lib/test-base64.c
+
+2020-08-19 19:49:38 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (5549aec84)
+
+ lib: Add some helpers for random values
+
+
+M src/lib/lib.h
+
+2020-08-19 14:33:59 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (bbdd5bb3b)
+
+ lib: Document how i_rand_limit() ensures uniform distribution
+
+ This algorithm is not original, but it is dense enough that a detailed
+ explanation is in order.
+
+M src/lib/rand.c
+
+2020-08-13 11:35:17 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (0589ced75)
+
+ lib: rand - Fix random number bounding
+
+
+M src/lib/rand.c
+
+2020-08-11 08:48:09 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (6c2196624)
+
+ auth: password-scheme - Use generate_salt in md5crypt
+
+ Deduplicates code
+
+M src/auth/password-scheme.c
+
+2020-08-23 23:24:35 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (74598bd6d)
+
+ lib-sql: driver-cassandra - Add SSL options
+
+ ssl_ca=<path>: Sets trusted peer certificate filename ssl_cert=<path>: Sets
+ client certificate filename sl_key=<path>: Sets client certificate private
+ key filename ssl_key_password=<string>: Sets password for private key
+ ssl_verify=none | cert | cert-ip | cert-dns: Sets verify mode
+ * none = don't verify
+ * cert = verify certificate
+ * cert-ip = verify IP from CN or SubjectAltName
+ * cert-dns = verify hostname from CN or SubjectAltName
+
+M src/lib-sql/driver-cassandra.c
+
+2020-08-23 23:05:33 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (0429b4aaf)
+
+ lib: buffer - Add buffer_append_full_(file|istream)
+
+ Consume istream or file up to max_read_size or EOF.
+
+M src/lib/Makefile.am
+A src/lib/buffer-istream.c
+M src/lib/buffer.h
+A src/lib/test-buffer-istream.c
+M src/lib/test-lib.inc
+
+2020-08-23 22:24:07 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (c25e20d65)
+
+ m4: want_cassandra.m4 - Add check for CASS_SSL_VERIFY_PEER_IDENTITY_DNS
+
+
+M m4/want_cassandra.m4
+
+2020-08-23 22:06:50 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (5cf96c1e7)
+
+ m4: want_cassandra.m4 - Add check for
+ cass_cluster_set_use_hostname_resolution
+
+
+M m4/want_cassandra.m4
+
+2020-08-23 22:06:34 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f4f08ac19)
+
+ m4: Modernize want_cassandra.m4
+
+
+M m4/want_cassandra.m4
+
+2020-08-28 13:17:10 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (8055e6bac)
+
+ lib-sql: driver-cassandra - Use INTx_MIN and INTx_MAX
+
+ Preferred over magic numbers
+
+M src/lib-sql/driver-cassandra.c
+
+2020-08-28 13:13:32 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e1c3224a4)
+
+ lib-sql: Reformat driver-cassandra.c
+
+
+M src/lib-sql/driver-cassandra.c
+
+2020-09-09 12:08:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (60b4040ba)
+
+ lib-compression: Add unit test to compress large input
+
+ This catches earlier zstd and lzma bugs.
+
+M src/lib-compression/test-compression.c
+
+2020-09-09 13:00:44 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3d0f6cf3e)
+
+ lib-compression: ostream-lzma - Compressed output could have been truncated
+
+ The compression wasn't fully finished, resulting in truncated compressed
+ output that couldn't be fully read back. Reading would result in "Broken
+ pipe" errors.
+
+ Broken by 6080aa16e1bd50cd661acc31203d9f4986a9450a
+
+M src/lib-compression/ostream-lzma.c
+
+2020-09-09 12:48:39 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (d559f5876)
+
+ lib-compression: istream-lzma - Improve error messages in EOF handling
+
+
+M src/lib-compression/istream-lzma.c
+
+2020-09-09 12:46:51 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a775fe3d0)
+
+ lib-compression: istream-lzma - Fix EOF handling
+
+ lzma_stream_end() call was accidentally dropped by
+ c6248b825d8c6562b1320e51ad0d88e99b9fbe85
+
+ This (probably) didn't result in visible problems.
+
+M src/lib-compression/istream-lzma.c
+
+2020-09-08 21:19:21 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a96e74204)
+
+ lib-compression: ostream-zstd - Fix assert-crash with large input
+
+ If the input was large enough, the ostream write could have returned
+ partially written output. Since this ostream-zstd was only used for blocking
+ ostreams, this would always result in an assert-crash. Fix is to keep
+ flushing the output to parent if the output buffer becomes full.
+
+ Fixes: Panic: file ostream.c: line 287 (o_stream_sendv_int): assertion
+ failed: (!stream->blocking)
+
+M src/lib-compression/ostream-zstd.c
+
+2020-09-09 12:03:31 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (48083d9e7)
+
+ lib: ostream-buffer: Return 0 as the used size, not the destination buffer
+ size
+
+ This allows using ostream-buffer in places that previously would think that
+ the ostream buffer needed to be flushed because its buffer size was too
+ large.
+
+ This also changes o_stream_get_buffer_avail_size() to always return the
+ ostream max buffer size.
+
+M src/lib/ostream-buffer.c
+M src/lib/test-ostream-buffer.c
+
+2020-08-31 15:29:03 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2d9f3124d)
+
+ lib-smtp: smtp-server-recipient - Recipient event should be using the
+ transaction event as parent.
+
+ The connection event is only used as event parent when the MAIL command
+ failed in pipeline or when the recipient is destroyed prematurely. The log
+ prefix of the transaction event is dropped, so that the connection event log
+ prefix is used in either case. Therefore, the main visible effect of this
+ commit is that the transaction event fields are available in the recipient
+ event when there is a transaction, the log messages will not change.
+
+M src/lib-smtp/smtp-server-recipient.c
+
+2020-08-31 14:10:18 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (e0529aa32)
+
+ lib-smtp: smtp-server-recipient - Don't create event until transaction
+ becomes available.
+
+ This way, the recipient event parent can be the transaction event once (and
+ if) that becomes available.
+
+M src/lib-smtp/smtp-server-cmd-rcpt.c
+M src/lib-smtp/smtp-server-private.h
+M src/lib-smtp/smtp-server-recipient.c
+
+2020-08-31 14:58:44 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (55a8b332c)
+
+ lib-smtp: smtp-server-command - Always call the NEXT_TO_REPLY hook.
+
+ Before, it wasn't called when a reply was submitted before the command
+ became next to reply.
+
+M src/lib-smtp/smtp-server-cmd-mail.c
+M src/lib-smtp/smtp-server-cmd-rcpt.c
+M src/lib-smtp/smtp-server-command.c
+M src/lib-smtp/smtp-server-connection.c
+
+2020-08-31 14:44:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1cae0ff5c)
+
+ lib-smtp: smtp-server-command - Move smtp_server_command_ready_to_reply().
+
+ New order makes more sense in the progression of command state.
+
+M src/lib-smtp/smtp-server-command.c
+
+2020-09-02 11:15:33 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (205b9fd9f)
+
+ lib: event-log - Fix handling dropping parent prefixes beyond a drop at a
+ higher level.
+
+ Before, the drop in the higher level became invisible to the lower
+ hiererarchies. For example:
+
+ parent1, parent2, parent3, parent4(drop one) yielded
+ "parent1: parent2: parent4: " as a prefix (which is still OK), whereas
+ parent1: parent2: parent3: parent4(drop one): leaf(drop 3) yielded
+ "parent1: leaf: ", while the expected prefix would be:
+ "leaf: ".
+
+ This means that the drop of one prefix by parent4 is ignored. Instead it
+ should apply that drop and operate on the prefixes that are still visible at
+ the lowel level, so the number of prefixes dropped should be additive, which
+ is what this commit changes.
+
+M src/lib/event-log.c
+M src/lib/test-event-log.c
+
+2020-08-31 15:08:43 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (fbd4baa15)
+
+ lib-smtp: Reformat smtp-server-recipient.c.
+
+
+M src/lib-smtp/smtp-server-recipient.c
+
+2020-08-31 14:40:16 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6848a98e5)
+
+ lib-smtp: Reformat smtp-server-private.h.
+
+
+M src/lib-smtp/smtp-server-private.h
+
+2020-08-31 14:37:35 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (5cd3c75a8)
+
+ lib-smtp: Reformat smtp-server-connection.c.
+
+
+M src/lib-smtp/smtp-server-connection.c
+
+2020-08-31 14:21:41 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4d7f258c9)
+
+ lib-smtp: Reformat smtp-server-command.c.
+
+
+M src/lib-smtp/smtp-server-command.c
+
+2020-08-31 14:16:31 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (953c35eed)
+
+ lib-smtp: Reformat smtp-server-cmd-mail.c.
+
+
+M src/lib-smtp/smtp-server-cmd-mail.c
+
+2020-08-31 14:13:31 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (bb6edd5e6)
+
+ lib-smtp: Reformat smtp-server-cmd-rcpt.c.
+
+
+M src/lib-smtp/smtp-server-cmd-rcpt.c
+
+2020-09-07 10:56:34 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (178bb676e)
+
+ lib-dict: dict_transaction_commit_async() - Never call callback immediately
+
+ This could cause confusion for the callers. Although so far all the callers
+ have handled it fine.
+
+ Use this wrappers for all dict drivers, even if they support async commits
+ themselves. This is because many of them were still calling the callback
+ immediately on error handling.
+
+M src/lib-dict/dict-private.h
+M src/lib-dict/dict.c
+
+2020-09-10 10:16:56 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (54bc6c2d4)
+
+ lib: istream-try - Fix off-by-one check for min_buffer_full_size
+
+ This mainly fixes random failures with the unit test.
+
+M src/lib/istream-try.c
+
+2020-09-10 10:16:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7a16c2e06)
+
+ lib: test-istream-try - Fix test name
+
+
+M src/lib/test-istream-try.c
+
+2020-09-08 17:32:32 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6d4c1a650)
+
+ lib: istream-try - Fix detecting istream when its input buffer is full
+
+ The previous check didn't work when the stream's buffer_size was 0, which
+ happened with istream-concat parent.
+
+ Added also a unit test that tries to test for these kind of situations. It
+ doesn't actually reproduce this specific bug, but it tests that the code
+ paths works at least in the generic situation.
+
+M src/lib/istream-try.c
+M src/lib/istream-try.h
+M src/lib/test-istream-try.c
+M src/plugins/fs-compress/fs-compress.c
+
+2020-09-08 20:14:09 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b1ca1ba08)
+
+ lib-compression: Add COMPRESSION_HDR_MAX_SIZE macro
+
+ Will be used by the next commit.
+
+M src/lib-compression/compression.h
+
+2020-07-08 10:18:27 +0200 Markus Valentin <markus.valentin@open-xchange.com> (43131bf97)
+
+ quota: Add logging prefix once and remove it from loglines
+
+
+M src/plugins/quota/quota-storage.c
+M src/plugins/quota/quota.c
+
+2020-07-07 14:39:22 +0200 Markus Valentin <markus.valentin@open-xchange.com> (f4ab67232)
+
+ quota: Introduce per quota-backend events
+
+
+M src/plugins/quota/quota-count.c
+M src/plugins/quota/quota-dict.c
+M src/plugins/quota/quota-dirsize.c
+M src/plugins/quota/quota-fs.c
+M src/plugins/quota/quota-imapc.c
+M src/plugins/quota/quota-maildir.c
+M src/plugins/quota/quota-private.h
+M src/plugins/quota/quota.c
+
+2019-10-31 19:27:15 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (d9f9d0862)
+
+ quota: Use event based logging
+
+
+M src/plugins/quota/quota-dict.c
+M src/plugins/quota/quota-fs.c
+M src/plugins/quota/quota-imapc.c
+M src/plugins/quota/quota-maildir.c
+M src/plugins/quota/quota-storage.c
+M src/plugins/quota/quota-util.c
+M src/plugins/quota/quota.c
+
+2020-08-25 14:01:24 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (25ed309c8)
+
+ quota: Add event support
+
+
+M src/plugins/quota/quota-private.h
+M src/plugins/quota/quota.c
+
+2020-08-31 18:30:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (15ae4f8c6)
+
+ lib-index: Fix cache being purged too often when it had unaccessed fields
+
+ Cache was being purged when it had a field that was last accessed after
+ mail_cache_unaccessed_field_drop but before
+ 2*mail_cache_unaccessed_field_drop. This purging may not have even done
+ anything.
+
+ Use shared code now between the check in mail_cache_header_fields_read() and
+ the actual purging in mail_cache_purge_check_field(). This way they can't
+ become desynced again.
+
+M src/lib-index/mail-cache-fields.c
+M src/lib-index/mail-cache-private.h
+M src/lib-index/mail-cache-purge.c
+
+2020-08-31 17:27:58 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c4a85ba0e)
+
+ lib-index: Use delayed purge reason for mail_cache_purge_* events
+
+
+M src/lib-index/mail-cache-purge.c
+M src/lib-index/mail-cache.h
+M src/lib-index/mail-index-sync.c
+
+2020-08-31 17:25:54 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4dd52e049)
+
+ lib-index: Remember reason for delayed cache file purges
+
+
+M src/lib-index/mail-cache-fields.c
+M src/lib-index/mail-cache-private.h
+M src/lib-index/mail-cache-purge.c
+M src/lib-index/mail-cache.c
+M src/lib-index/mail-cache.h
+
+2020-08-31 17:23:05 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (bfd065af9)
+
+ lib-index: Fix file_size field in mail_cache_purge_finished event
+
+ It used to be 32 always.
+
+M src/lib-index/mail-cache-purge.c
+
+2020-08-26 18:39:22 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (fe2141348)
+
+ lib-index: Fix deadlock when expunging mails and adding lots of data to
+ cache
+
+ This practically happened only when dovecot.index.cache contents were lost
+ and they were being re-filled while mails were also being expunged.
+
+ Broken by 9efb99924d0b7de27ca83e373f2290f3dd5b22cf
+
+M src/lib-index/mail-cache-transaction.c
+
+2020-08-28 17:16:03 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b3f95fbad)
+
+ zlib: Rename istreams from zlib(parent) to compress(parent)
+
+ This clarifies it that the istream is a generic compression stream, not
+ specifically zlib/gz.
+
+M src/plugins/zlib/zlib-plugin.c
+
+2020-08-28 17:13:32 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (154109921)
+
+ lib-compression: ostreams - Add asserts to clarify how buffer flushing works
+
+ If the output buffer isn't fully sent, the flush function returns 0 early
+ on, before setting flushed=TRUE.
+
+M src/lib-compression/ostream-bzlib.c
+M src/lib-compression/ostream-lzma.c
+M src/lib-compression/ostream-zlib.c
+M src/lib-compression/ostream-zstd.c
+
+2020-08-28 16:57:57 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1e3f43e12)
+
+ auth: Fix leaking memory if auth client disconnects with pending penalty
+ delays
+
+ * auth penalty lookup returns that auth_request needs a penalty delay
+ * during the penalty timeout auth client disconnects
+ * auth requests are freed, but auth_request_handler isn't unreferenced
+
+ This resulted in memory leak, and after recent changes also logging warnings
+ about event leaks.
+
+M src/auth/auth-request-handler.c
+M src/auth/auth-request-handler.h
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+
+2020-08-27 18:35:33 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (01a112995)
+
+ lib-auth: Remove duplicate auth_client_connection.event
+
+ It's already in auth_client_connection.conn.event. Just use it directly to
+ avoid any confusion between them.
+
+M src/lib-auth/auth-client-connection.c
+M src/lib-auth/auth-client-private.h
+M src/lib-auth/auth-client-request.c
+
+2020-08-27 17:28:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (50a6a5c0d)
+
+ auth: Fix compiling gssapi, bsdauth, sia, vpopmail
+
+ Broken by 5ff7299c9d85b1bab0c7d53d9459dbb31a2bd9d6
+
+M src/auth/mech-gssapi.c
+M src/auth/passdb-bsdauth.c
+M src/auth/passdb-sia.c
+M src/auth/passdb-vpopmail.c
+M src/auth/userdb-vpopmail.c
+
+2020-08-20 00:24:52 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c2df8fa8b)
+
+ lib-http: test-http-client-errors - Add tests involving idle connections.
+
+ Tests idle timeout and connection reuse.
+
+M src/lib-http/test-http-client-errors.c
+
+2020-08-20 00:17:49 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ef4e71e5c)
+
+ lib-http: http-client-connection - Use http_client_connection_is_active() to
+ check idle status.
+
+ This makes the check shorter and easier to understand.
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 22:30:35 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6f16b0d63)
+
+ lib-http: http-client-queue - Fix unsigned int arithmetic problem in
+ http_client_queue_request_timeout_cmp().
+
+
+M src/lib-http/http-client-queue.c
+
+2020-08-13 19:31:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ba7357541)
+
+ lib-http: http-client-connection - Use timeout_add_short_to() for idle
+ timeout.
+
+ The idle timeout can be very short.
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 21:33:08 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (f9751e9b2)
+
+ lib-http: http-client-connection - Make idle timeout calculation more
+ robust.
+
+
+M src/lib-http/http-client-connection.c
+M src/lib-http/http-client-private.h
+
+2020-08-12 22:24:22 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7e849b84a)
+
+ lib-http: http-client-connection - Explicitly handle an infinite connection
+ limit for setting idle timeout.
+
+ This can just use the maximum idle timeout directly.
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 22:20:26 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (32f0fc2b4)
+
+ lib-http: http-client-connection - Deal with first idle connection
+ separately for setting idle timeout.
+
+ This can just use the maximum idle timeout directly.
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 21:17:08 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2d49e42f9)
+
+ lib-http: http-client-connection - Improve overall logic in
+ http_client_connection_start_idle_timeout().
+
+ Make clear that idle_count < max when it is used.
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 18:00:45 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (09acd5c1e)
+
+ lib-http: http-client-connection - Start idle state in a common function.
+
+ Removes code duplication.
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 20:35:46 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6ea3dc6f4)
+
+ lib-http: http-client-connection - Handle infinite idle timeout
+ consistently.
+
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 20:11:01 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (8255f15bf)
+
+ lib-http: http-client-connection - Start idle timeout in a common function.
+
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 19:54:50 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dda4e8d8a)
+
+ lib-http: http-client-connection - Use separate flag for idle status.
+
+ It used the presence of the idle timeout before, which isn't acceptable when
+ the timeout is changed to be optional (happens in later commit).
+
+M src/lib-http/http-client-connection.c
+M src/lib-http/http-client-private.h
+
+2020-08-12 17:16:12 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d1d65664b)
+
+ lib-http: http-client-connection - Determine idle timeout consistently.
+
+ It should not matter whether connection got idle due to lost peer or
+ otherwise.
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 17:10:20 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (9ead85be5)
+
+ lib-http: http-client-connection - Restructure
+ http_client_connection_check_idle().
+
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 17:06:23 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (60bd3475f)
+
+ lib-http: http-client-connection - Restructure
+ http_client_connection_lost_peer().
+
+
+M src/lib-http/http-client-connection.c
+
+2020-08-12 21:47:39 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (50814cc74)
+
+ lib-http: http-client-peer - Properly saturate result of
+ http_client_peer_shared_max_connections() at UINT_MAX.
+
+
+M src/lib-http/http-client-peer.c
+
+2020-08-12 18:27:48 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ecaf195be)
+
+ lib-http: Reformat http-client-connection.c.
+
+
+M src/lib-http/http-client-connection.c
+
+2018-03-20 20:59:07 +0100 Stephan Bosch <stephan.bosch@dovecot.fi> (111b0d306)
+
+ lib-http: Reformat http-client-private.h.
+
+
+M src/lib-http/http-client-private.h
+
+2018-03-20 20:59:21 +0100 Stephan Bosch <stephan.bosch@dovecot.fi> (9b0f648c5)
+
+ lib-http: Reformat http-client-queue.c.
+
+
+M src/lib-http/http-client-queue.c
+
+2018-03-20 20:58:56 +0100 Stephan Bosch <stephan.bosch@dovecot.fi> (4dd39dc63)
+
+ lib-http: Reformat http-client-peer.c.
+
+
+M src/lib-http/http-client-peer.c
+
+2020-08-10 14:43:11 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (a88b78fa5)
+
+ lib-auth: Do not send ssl details to auth process
+
+ They are not used for anything. But we still provide them as auth_client
+ event fields, so that we can e.g. do metrics on which TLS protocol is used.
+
+M src/lib-auth/auth-client-request.c
+
+2020-08-10 10:56:14 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b2511e8d6)
+
+ lib-auth: Add user_mask to auth_userdb_list events
+
+
+M src/lib-auth/auth-master.c
+
+2020-08-10 10:23:19 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (4e3ae6fab)
+
+ lib-auth: Add new fields to auth_client_userdb events
+
+
+M src/lib-auth/auth-master.c
+
+2020-08-10 09:29:10 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (395ef5b35)
+
+ doveadm: doveadm-auth - Add support for real_{remote|local}_{ip|port} -x
+ parameters
+
+
+M src/doveadm/doveadm-auth.c
+
+2020-08-10 09:11:41 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (d4a70a35e)
+
+ doveadm: doveadm-auth - Add session and local_name -x parameters
+
+
+M src/doveadm/doveadm-auth.c
+
+2020-08-10 09:10:08 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (6c5b74939)
+
+ lib-auth: Add session_id and local_name to master auth
+
+
+M src/lib-auth/auth-master.c
+M src/lib-auth/auth-master.h
+
+2020-08-06 10:52:18 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f02877312)
+
+ lmtp: Rename orig_user event field to original_user
+
+
+M src/lmtp/lmtp-proxy.c
+
+2020-07-27 09:11:47 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (d1aaeab13)
+
+ lib-auth: Add more fields to auth client event
+
+ This way it becomes more useful
+
+M src/lib-auth/auth-client-request.c
+
+2020-07-27 12:26:49 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (36de1858d)
+
+ lib-auth: Always iterate input arguments
+
+ Makes next change easier
+
+M src/lib-auth/auth-client-request.c
+
+2020-07-27 08:48:49 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (0e3468f07)
+
+ lib-auth: Send event after setting all fields
+
+
+M src/lib-auth/auth-client-request.c
+
+2020-08-06 19:38:33 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (d60227472)
+
+ man: doveadm-auth - List more -x fields
+
+
+M doc/man/doveadm-auth.1.in
+
+2020-08-06 14:13:29 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (570ad473d)
+
+ auth: Add some unit testing for auth_request_import/export()
+
+
+M src/auth/Makefile.am
+A src/auth/test-auth-request-fields.c
+M src/auth/test-auth.h
+M src/auth/test-main.c
+
+2020-08-06 14:10:50 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4d46d3e5c)
+
+ auth: Escape exported session ID string in protocol replies
+
+ Session ID is normally coming only from trusted sources, so the lack of
+ escaping shouldn't have mattered too much.
+
+M src/auth/auth-request-fields.c
+
+2020-08-05 22:48:40 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3edbefb70)
+
+ auth: Worker commands: Rename "id" event field to "command_id"
+
+ Now that auth_request events are inherited from worker command events, the
+ "id" field was also inherited. This is rather confusing and might conflict
+ with other IDs in the future, so better to rename it already.
+
+M src/auth/auth-worker-client.c
+
+2020-08-05 22:45:30 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e53e98204)
+
+ auth: Support inheritance for master auth_requests' events
+
+ Requests created by auth worker will inherit from the command's event, while
+ other events inherit from the global auth_event for now (since
+ auth-master-connection doesn't have its own event yet).
+
+M src/auth/auth-master-connection.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+M src/auth/auth-worker-client.c
+M src/auth/test-lua.c
+
+2020-08-05 22:43:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (95f89e904)
+
+ auth: Inherit auth client connection event from the global auth_event
+
+
+M src/auth/auth-client-connection.c
+
+2020-06-25 20:03:57 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b06d4c730)
+
+ doveadm auth: Support forward and extra fields with -x parameter
+
+ Using "forward_" prefix assumes that it's a forwarded field. Otherwise all
+ unknown parameters are assumed to be extra fields.
+
+M src/doveadm/doveadm-auth.c
+
+2020-08-05 22:25:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1d5bbaf12)
+
+ lib-auth: auth-client - Support sending extra_fields.
+
+
+M src/lib-auth/auth-client-request.c
+M src/lib-auth/auth-client.h
+
+2020-05-28 23:10:41 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4ac4b3b5d)
+
+ lib-auth: auth-master - Support sending extra_fields.
+
+
+M src/lib-auth/auth-master.c
+M src/lib-auth/auth-master.h
+
+2020-08-04 17:35:30 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (29371f227)
+
+ auth: Add more event fields
+
+
+M src/auth/auth-request-fields.c
+
+2020-08-04 17:34:42 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b0fb82bb6)
+
+ auth: Set event fields immediately when they're changed in
+ auth_request_fields
+
+ This way the fields are available for all auth events, not just the final
+ events.
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+
+2020-08-06 12:29:07 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6c0fb4332)
+
+ auth: Remove "username" and "domain" event fields
+
+ They're not very useful in event fields, since event filtering can just do
+ user=username@* or user=*@domain.
+
+M src/auth/auth-request.c
+
+2020-08-04 17:30:02 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8499ff49e)
+
+ auth: Remove "credentials_scheme" event field
+
+ This field wasn't set for plaintext authentication, and in general it's not
+ quite what it was intended to be. Better to remove it entirely to avoid
+ confusion.
+
+M src/auth/auth-request.c
+
+2020-08-04 17:29:32 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (764265bfd)
+
+ auth: Rename auth_request.credentials_scheme to wanted_credentials_scheme
+
+ Also add comments explaining what it actually does.
+
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+M src/auth/auth-worker-client.c
+M src/auth/db-checkpassword.c
+M src/auth/passdb-blocking.c
+M src/auth/passdb-checkpassword.c
+M src/auth/passdb-dict.c
+M src/auth/passdb-ldap.c
+M src/auth/passdb-sql.c
+M src/auth/passdb.c
+
+2020-08-04 16:46:15 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6619fbab6)
+
+ auth: Rename "orig_user" event field to "original_user"
+
+ It's a bit more understandable to use the full name. There's now also
+ %{original_user} variable alias.
+
+M src/auth/auth-request.c
+
+2020-08-04 16:30:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3822c3e6e)
+
+ auth: Rename "mech" event field to "mechanism"
+
+ It's a bit more understandable to use the full name. There's now also
+ %{mechanism} variable alias.
+
+M src/auth/auth-request-fields.c
+
+2020-08-03 18:51:33 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (97749d387)
+
+ auth: Keep auth_request_fields const for most of the code
+
+ This way there's a compiler warning/error if anything outside
+ auth-request-fields.c attempts to modify them. It makes it easier to keep
+ the values synced with events.
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.h
+M src/auth/test-auth.h
+
+2020-08-04 16:16:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8c698ff01)
+
+ auth: test-mech - Fix include ordering
+
+ Required by the following change.
+
+M src/auth/test-mech.c
+
+2020-08-04 14:48:23 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4d724f877)
+
+ auth: Add and use auth_request_set_delayed_credentials()
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+
+2020-08-04 14:44:00 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8f86c02d6)
+
+ auth: Add and use auth_request_set_login_username_forced()
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+
+2020-08-04 14:28:28 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (39c4197b3)
+
+ auth: LIST - Use auth_request_import() to set missing "service"
+
+
+M src/auth/auth-master-connection.c
+
+2020-08-04 14:26:08 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c5a72becc)
+
+ auth: Use auth_request_init_userdb_reply() always for initializing
+ userdb_reply
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+
+2020-08-04 14:23:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e04efc5cb)
+
+ auth: auth_request_init_userdb_reply() - Add add_default_fields parameter
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+M src/auth/auth-worker-client.c
+
+2020-08-04 14:22:16 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (544781e8d)
+
+ auth: Move auth_request_init_userdb_reply() to auth-request-fields.c
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+
+2020-08-04 12:42:22 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1797aaf87)
+
+ auth: Add and use auth_request_set_password_verified()
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+
+2020-08-04 12:32:27 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4dc7edd91)
+
+ auth: Add and use auth_request_set_auth_successful()
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+
+2020-08-03 17:32:34 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (deaba5586)
+
+ auth: Add and use auth_request_set_realm()
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.h
+M src/auth/mech-digest-md5.c
+
+2020-08-03 17:25:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (854ffb49f)
+
+ auth: Add and use auth_request_set_username_forced()
+
+
+M src/auth/auth-master-connection.c
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+M src/auth/mech-anonymous.c
+M src/auth/userdb-blocking.c
+
+2020-08-04 14:41:42 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (cb06a8f19)
+
+ auth: Change auth_request_fix_username() to return int
+
+
+M src/auth/auth-request-fields.c
+
+2020-08-04 14:35:49 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (5f5256311)
+
+ auth: Optimize memory usage when auth_username_format is set
+
+ The per-request memory pool was used unnecessarily to allocate the username
+ before the formatting was applied.
+
+M src/auth/auth-request-fields.c
+
+2020-08-03 17:16:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6bf74fbc3)
+
+ auth: Move auth_request_fields initialization code to
+ auth_request_fields_init()
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+
+2020-08-03 17:11:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (51623b9e9)
+
+ auth: Move auth_request_master_lookup_finish() to auth-request-fields.c
+
+ Also rename it to auth_request_master_user_login_finish().
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+
+2020-08-03 17:07:22 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (007deed21)
+
+ auth: Move username changing functions to auth-request-fields.c
+
+
+M src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+
+2020-08-03 17:06:23 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f469acfcd)
+
+ auth: Change auth_request_get_log_prefix_db() to be public
+
+
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+
+2020-08-03 16:49:00 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1c7ea685e)
+
+ auth: test-lua - Use auth_request_set_username()
+
+ Instead of changing the user directly.
+
+M src/auth/test-lua.c
+
+2020-08-03 16:43:56 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8841d1b2a)
+
+ auth: test-lua - Deduplicate code into test_db_lua_auth_request_new()
+
+
+M src/auth/test-lua.c
+
+2020-08-03 16:28:57 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6e0747973)
+
+ auth: auth_request_fix_username() - Don't temporarily modify
+ auth_request_fields.user
+
+ Use the new username parameter in auth_request_get_var_expand_table_full()
+ instead.
+
+M src/auth/auth-request.c
+
+2020-08-03 16:26:11 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e743e0b02)
+
+ auth: auth_cache_insert() - Don't temporarily modify
+ auth_request_fields.user
+
+ Use the new username parameter in auth_request_get_var_expand_table_full()
+ instead.
+
+M src/auth/auth-cache.c
+M src/auth/test-auth-cache.c
+
+2020-08-03 16:18:00 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (aa2199918)
+
+ auth: auth_request_get_var_expand_table_full() - Add username parameter
+
+
+M src/auth/auth-policy.c
+M src/auth/auth-request-var-expand.c
+M src/auth/auth-request-var-expand.h
+M src/auth/db-ldap.c
+M src/auth/db-oauth2.c
+
+2020-08-04 16:45:19 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (2522e957e)
+
+ auth: Add %{original_*} aliases for %{orig_*}
+
+
+M src/auth/auth-request-var-expand.c
+M src/auth/auth-request-var-expand.h
+
+2020-08-04 16:19:29 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (bff8b1000)
+
+ auth: Add %{mechanism} alias for %{mech}
+
+
+M src/auth/auth-request-var-expand.c
+M src/auth/auth-request-var-expand.h
+
+2020-04-27 16:43:39 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (bb2a9ba49)
+
+ auth: Add %{[real_]local/remote_ip/port} aliases for
+ %{[real_]lip/rip/lport/rport)
+
+
+M src/auth/auth-request-var-expand.c
+M src/auth/auth-request-var-expand.h
+M src/auth/test-auth-request-var-expand.c
+
+2020-08-03 15:10:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c5d940f75)
+
+ auth: Move auth_request_export/import*() to auth-request-fields.c
+
+
+M src/auth/Makefile.am
+A src/auth/auth-request-fields.c
+M src/auth/auth-request.c
+
+2020-08-03 14:56:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (5ff7299c9)
+
+ auth: Move imported/exported fields to struct auth_request_fields
+
+ This makes it clearer what fields are being passed between auth master and
+ worker processes.
+
+M src/auth/auth-cache.c
+M src/auth/auth-master-connection.c
+M src/auth/auth-penalty.c
+M src/auth/auth-policy.c
+M src/auth/auth-request-handler.c
+M src/auth/auth-request-stats.c
+M src/auth/auth-request-var-expand.c
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+M src/auth/auth-worker-client.c
+M src/auth/db-checkpassword.c
+M src/auth/db-lua.c
+M src/auth/db-oauth2.c
+M src/auth/mech-anonymous.c
+M src/auth/mech-digest-md5.c
+M src/auth/mech-dovecot-token.c
+M src/auth/mech-external.c
+M src/auth/mech-login.c
+M src/auth/mech-ntlm.c
+M src/auth/mech-otp-skey-common.c
+M src/auth/mech-otp.c
+M src/auth/mech-rpa.c
+M src/auth/mech-skey.c
+M src/auth/passdb-blocking.c
+M src/auth/passdb-cache.c
+M src/auth/passdb-dict.c
+M src/auth/passdb-ldap.c
+M src/auth/passdb-lua.c
+M src/auth/passdb-pam.c
+M src/auth/passdb-passwd.c
+M src/auth/passdb-shadow.c
+M src/auth/passdb-sql.c
+M src/auth/passdb-static.c
+M src/auth/passdb.c
+M src/auth/test-auth-request-var-expand.c
+M src/auth/test-lua.c
+M src/auth/test-mech.c
+M src/auth/userdb-blocking.c
+M src/auth/userdb-passwd.c
+M src/auth/userdb-static.c
+
+2020-08-03 14:31:30 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (974315324)
+
+ auth: Remove auth_request->debug
+
+ Use event_want_debug(auth_request->event) instead.
+
+M src/auth/auth-request.c
+M src/auth/auth-request.h
+M src/auth/db-ldap.c
+M src/auth/passdb-imap.c
+M src/auth/test-lua.c
+
+2020-08-03 14:29:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (5110ff330)
+
+ auth: Remove unnecessary auth_request->debug checks
+
+ e_debug() already checks whether debug logging is enabled.
+
+M src/auth/db-lua.c
+
+2020-04-26 20:15:39 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6ef8c6324)
+
+ lib: events - Use const event pointer for "get" functions
+
+
+M src/lib/lib-event.c
+M src/lib/lib-event.h
+
+2020-08-24 15:00:39 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (cb875b83a)
+
+ lib-storage: mail_user_init_fs_settings() - Use user's event as fs parent
+ event
+
+
+M src/lib-storage/mail-user.c
+
+2020-08-13 19:13:49 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (68817df1e)
+
+ auth: test-mech - Fix type mismatch
+
+
+M src/auth/test-mech.c
+
+2020-08-13 19:13:04 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (a744f2829)
+
+ auth: test-mech - Fix APOP challenge format
+
+
+M src/auth/test-mech.c
+
+2020-08-17 18:06:14 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4e264dad2)
+
+ submission: submission-backend-relay - Handle relay server replies
+ consistently.
+
+ Initial connection setup errors were handled differently when the reply came
+ into the ready callback first.
+
+M src/submission/submission-backend-relay.c
+
+2018-07-12 00:15:23 +0200 Stephan Bosch <stephan.bosch@dovecot.fi> (a0a7d59e6)
+
+ lib-smtp: test-smtp-client-errors - Add test for server presenting invalid
+ SSL certificate.
+
+
+M src/lib-smtp/Makefile.am
+M src/lib-smtp/test-smtp-client-errors.c
+
+2018-07-14 13:16:05 +0200 Stephan Bosch <stephan.bosch@dovecot.fi> (403234746)
+
+ lib-smtp: smtp-client-connection - If SSL connection gets lost, log the last
+ SSL error.
+
+
+M src/lib-smtp/smtp-client-connection.c
+
+2018-07-12 00:15:31 +0200 Stephan Bosch <stephan.bosch@dovecot.fi> (d5c5dffdf)
+
+ lib-smtp: smtp-client-connection - Handle connection loss uniformly at a
+ single location.
+
+ Also amend the logged error message with SSL information when relevant.
+
+M src/lib-smtp/smtp-client-connection.c
+
+2018-07-14 12:19:07 +0200 Stephan Bosch <stephan.bosch@dovecot.fi> (58ace7aaa)
+
+ lib-smtp: smtp-client-connection - Properly log SSL handshake failure
+ occuring during input read as an error.
+
+
+M src/lib-smtp/smtp-client-connection.c
+
+2018-07-14 11:35:20 +0200 Stephan Bosch <stephan.bosch@dovecot.fi> (a9849c479)
+
+ lib-smtp: smtp-client-connection - Restructure handling of immediate
+ connection failure.
+
+ The delayed error callback is now started at a single location, much like
+ lib-http/client deals with this situation.
+
+M src/lib-smtp/smtp-client-connection.c
+M src/lib-smtp/smtp-client-private.h
+
+2020-05-04 17:21:23 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (db253d7e8)
+
+ master: Make sure a listener isn't added to a throttled service
+
+ This fixes master process using 100% CPU in some situations when a service
+ is being throttled.
+
+M src/master/service-monitor.c
+
+2020-08-16 10:57:36 +0100 Paul G. Banks <web@paulbanks.org> (fea1bacab)
+
+ auth: mech-gssapi - GSSAPI can contain NUL.
+
+
+M src/auth/mech-gssapi.c
+
+2020-08-17 19:16:01 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6ab580a6e)
+
+ imap: Add "mailbox" field to successful imap_client_unhibernated event
+
+
+M src/imap/imap-master-client.c
+
+2020-08-17 19:10:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (ef60e2634)
+
+ imap-hibernate: Add "mailbox" field to events
+
+
+M src/imap-hibernate/imap-client.c
+M src/imap-hibernate/imap-client.h
+M src/imap-hibernate/imap-hibernate-client.c
+M src/imap/imap-client-hibernate.c
+
+2020-08-17 15:33:23 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8fac1bccc)
+
+ imap, imap-hibernate: Track how long hibernation lasted
+
+
+M src/imap-hibernate/imap-client.c
+M src/imap/imap-master-client.c
+
+2020-08-17 15:39:19 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7c90fb072)
+
+ imap-hibernate: Add imap_client_unhibernate_retried event
+
+
+M src/imap-hibernate/imap-client.c
+
+2020-08-17 14:03:53 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (be68c8535)
+
+ imap-hibernate: Add imap_client_unhibernated event for errors
+
+ Successful unhibernation is logged by imap process.
+
+M src/imap-hibernate/imap-client.c
+
+2020-08-17 13:55:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (faaaf06e4)
+
+ imap-hibernate: Handle unhibernation errors more consistently.
+
+ Log an error with the exact reason, and just log "Failed to unhibernate
+ client" as the info-level disconnect reason.
+
+M src/imap-hibernate/imap-client.c
+
+2020-08-17 13:53:50 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6adcb7944)
+
+ imap-hibernate: Fix error handling when unhibernation retry timeout is
+ reached
+
+ An error message wasn't logged, and a wrong kind of message was logged in
+ the info line.
+
+M src/imap-hibernate/imap-client.c
+
+2020-08-17 13:53:28 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (cf69e3017)
+
+ imap-hibernate: Split off imap_move_has_reached_timeout()
+
+
+M src/imap-hibernate/imap-client.c
+
+2020-08-17 15:06:42 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (0ea836c9b)
+
+ imap: Add imap_client_unhibernated event
+
+
+M src/imap/imap-master-client.c
+
+2020-08-17 14:48:01 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (9e4487832)
+
+ imap: Send unhibernation OK reply to imap-hibernate only after creating
+ client
+
+ The following commit adds unhibernation event, which would be much more
+ difficult to implement for this error path without this change.
+
+ The OK reply is still sent before client_create_finish(), which is the part
+ that could be slow.
+
+M src/imap/imap-master-client.c
+
+2020-08-17 14:55:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (9df45f5df)
+
+ imap: Set unhibernation IDLE state earlier
+
+ This simplifies the following changes.
+
+M src/imap/imap-master-client.c
+
+2020-08-17 13:34:35 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (36a255bb9)
+
+ imap: Add imap_client_hibernated event
+
+
+M src/imap/imap-client-hibernate.c
+
+2020-08-17 13:08:50 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f8a13f869)
+
+ imap-hibernate: Log via imap_client.event or connection.event
+
+
+M src/imap-hibernate/imap-client.c
+M src/imap-hibernate/imap-hibernate-client.c
+M src/imap-hibernate/imap-master-connection.c
+
+2020-08-17 13:08:19 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (481e29ade)
+
+ imap-hibernate: Add imap_client.event
+
+
+M src/imap-hibernate/imap-client.c
+
+2020-08-17 13:07:49 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (0665e883e)
+
+ imap-hibernate: Preserve local_port and remote_port during hibernation
+
+
+M src/imap-hibernate/imap-client.c
+M src/imap-hibernate/imap-client.h
+M src/imap-hibernate/imap-hibernate-client.c
+M src/imap/imap-client-hibernate.c
+M src/imap/imap-master-client.c
+
+2020-08-17 12:47:53 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (30098f130)
+
+ imap: Log ID and logout info lines via imap_client.event
+
+ This doesn't change the logging output at all.
+
+M src/imap/cmd-id.c
+M src/imap/imap-client.c
+
+2020-08-17 12:45:08 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (12d740b89)
+
+ imap: Log imap-master errors/debugs via connection.event
+
+
+M src/imap/imap-master-client.c
+
+2020-08-17 12:43:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8482b886e)
+
+ imap: Log errors via imap_client.event when possible
+
+
+M src/imap/cmd-getmetadata.c
+M src/imap/cmd-urlfetch.c
+M src/imap/imap-client-hibernate.c
+M src/imap/imap-client.c
+M src/imap/imap-master-client.c
+M src/imap/main.c
+
+2020-08-17 13:28:58 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (218eaa07c)
+
+ imap: imap_hibernate_process_send() - Return error instead of logging it
+
+
+M src/imap/imap-client-hibernate.c
+
+2020-08-17 15:28:00 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b4b3b4198)
+
+ lib: Add str_to_timeval()
+
+
+M src/lib/test-time-util.c
+M src/lib/time-util.c
+M src/lib/time-util.h
+
+2020-08-20 16:17:48 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (ea91edd05)
+
+ director: Use director_connection.event wherever possible
+
+ This adds the "director(name): " log prefix to many log messages where it
+ didn't previously exist. The director name is now sometimes duplicated in
+ the log messages, but maybe that's good for clarity.
+
+M src/director/director-connection.c
+
+2020-08-20 16:11:56 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4b7d51bfd)
+
+ director: Avoid explicit log prefixes by logging via
+ director_connection.event
+
+
+M src/director/director-connection.c
+
+2020-08-20 16:07:00 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (716aab167)
+
+ director: Add director_connection.event
+
+
+M src/director/director-connection.c
+
+2020-08-20 16:05:23 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (057b8620d)
+
+ director: Add director_connection_set_name() change connection name
+
+
+M src/director/director-connection.c
+
+2019-10-31 19:15:22 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (b47636b61)
+
+ director: Replace most of the i_error() logging with e_error()
+
+
+M src/director/auth-connection.c
+M src/director/director-connection.c
+M src/director/director.c
+M src/director/doveadm-connection.c
+M src/director/login-connection.c
+M src/director/mail-host.c
+M src/director/notify-connection.c
+
+2019-10-31 19:10:22 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (2795b4f95)
+
+ director: Replace i_warning() and i_info() logging with e_*()
+
+
+M src/director/director-connection.c
+M src/director/director-request.c
+M src/director/director.c
+M src/director/doveadm-connection.c
+M src/director/mail-host.c
+M src/director/main.c
+M src/director/notify-connection.c
+M src/director/user-directory.c
+
+2019-10-31 19:17:28 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (5e6d04c95)
+
+ director: Add auth_connection.dir
+
+
+M src/director/auth-connection.c
+M src/director/auth-connection.h
+M src/director/main.c
+
+2019-10-31 19:09:35 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (c9b8061af)
+
+ director: Add user_directory.director
+
+
+M src/director/mail-host.c
+M src/director/test-user-directory.c
+M src/director/user-directory.c
+M src/director/user-directory.h
+
+2019-10-31 19:06:46 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (5107e7f89)
+
+ director: Add mail_host_list.dir
+
+
+M src/director/director.c
+M src/director/doveadm-connection.c
+M src/director/mail-host.c
+M src/director/mail-host.h
+
+2019-10-31 19:00:57 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (9da9aa4cf)
+
+ director: Remove dir_debug() and director_debug
+
+
+M src/director/director.c
+M src/director/director.h
+M src/director/main.c
+
+2019-10-31 18:59:57 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (d861dab09)
+
+ director: director-request: Add event and replace dir_debug() with e_debug()
+
+
+M src/director/director-request.c
+
+2019-10-31 18:56:56 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (7e4f1966b)
+
+ director: Replace most of the dir_debug() with e_debug()
+
+
+M src/director/director-connection.c
+M src/director/director.c
+
+2019-10-31 18:49:59 +0200 Timo Sirainen <timo.sirainen@open-xchange.com> (97af94165)
+
+ director: Add struct director.event
+
+
+M src/director/director.c
+M src/director/director.h
+M src/director/main.c
+
+2018-11-07 16:51:49 -0800 Rosen Penev <rosenp@gmail.com> (5d88510b3)
+
+ lib: Fix compilation with OpenSSL deprecated APIs disabled
+
+ OpenSSL with no deprecated APIs does not implicitly include header files.
+
+M src/lib-dcrypt/dcrypt-openssl.c
+M src/lib-ssl-iostream/iostream-openssl-context.c
+
+2020-08-07 11:11:21 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (8b2455fe5)
+
+ lib: Always use the representative when comparing event's categories
+
+ We need to be consistent about using the representative category pointer.
+ Otherwise, we may end up with duplicates in an event's categories array.
+
+ Since an event's categories are conceptually a set, it is reasonable to
+ write event using code that assumes no duplicates. If duplicates are
+ present, it may lead to incorrect behavior or even crashes.
+
+M src/lib/lib-event.c
+
+2020-08-14 10:25:33 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (942e4a1b5)
+
+ lib: event-filter-parser - Use str_begins() to compare unit test error
+ strings
+
+ Different versions of bison generate slightly different error strings, but
+ they always begin the same way. So, instead of comparing them let's only
+ compare the beginning.
+
+M src/lib/test-event-filter-parser.c
+
+2020-08-14 09:26:12 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (320a207cc)
+
+ lib: event-filter-parser - YYERROR_VERBOSE has been deprecated since 2003
+
+ The proper way to enable verbose error messages is to use the parse.error
+ define.
+
+M src/lib/event-filter-parser.y
+
+2020-08-14 00:36:19 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (92d767268)
+
+ lib: Add unit test for long log line splitting
+
+
+M src/lib/test-failures.c
+
+2020-08-13 22:49:43 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e02f24ac3)
+
+ lib-index: Remove log prefix from cache events
+
+ Index events don't have a prefix either. The parent event likely already
+ contains the mailbox name, which should be enough. It's especially bad using
+ the full filesystem path in the event prefix, because it could be very long.
+
+M src/lib-index/mail-cache.c
+
+2020-08-13 22:47:02 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (984e3d03b)
+
+ global: Make sure event log prefixes are sanitized and not excessively long
+
+ It doesn't make sense to allow log prefixes to grow to kilobytes long,
+ especially from user-given input.
+
+M src/lib-http/http-client-queue.c
+M src/lib-http/http-client-request.c
+M src/lib-http/http-server-request.c
+M src/lib-http/http-server-resource.c
+M src/lib-smtp/smtp-client-command.c
+M src/lib-smtp/smtp-client-transaction.c
+M src/lib-smtp/smtp-server-recipient.c
+M src/lib-storage/fail-mailbox.c
+M src/lib-storage/index/index-storage.c
+
+2020-08-13 22:18:41 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (812fab298)
+
+ lib: Fix sending log lines when prefix is larger than PIPE_BUF
+
+ This caused the log line to be sent repeatedly to the log process, possibly
+ causing hundreds of duplicate log lines.
+
+M src/lib/failures.c
+
+2020-08-13 22:08:48 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (172e23fec)
+
+ log: log_connection_handshake() - Handle i_stream_read()'s -2 return value
+ properly
+
+ Although this shouldn't happen anymore after the previous change.
+
+M src/log/log-connection.c
+
+2020-08-13 19:26:23 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (884b5c012)
+
+ log: Fix busy loop when a long line is logged
+
+ If the line exceeded PIPE_MAX (4 kB usually), the process got into a busy
+ loop. It would still break out of it every 100ms and maybe handle some other
+ services' logging, but the service that logged the long line would be stuck.
+ This resulted in all those service processes also hanging because they were
+ waiting to be able to write to log.
+
+M src/log/log-connection.c
+
+2020-05-18 13:08:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (199686daf)
+
+ auth: test-mech - Add tests for RPA and NTLM bug
+
+
+M src/auth/test-mech.c
+
+2020-05-18 12:33:39 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (fb246611e)
+
+ lib-ntlm: Check buffer length on responses
+
+ Add missing check for buffer length.
+
+ If this is not checked, it is possible to send message which causes read
+ past buffer bug.
+
+ Broken in c7480644202e5451fbed448508ea29a25cffc99c
+
+M src/lib-ntlm/ntlm-message.c
+
+2020-05-06 13:40:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (69ad3c902)
+
+ auth: mech-rpa - Fail on zero len buffer
+
+
+M src/auth/mech-rpa.c
+
+2020-07-02 17:31:19 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (19193f40b)
+
+ lib-mail: Fix handling trailing "--" in MIME boundaries
+
+ Broken by 5b8ec27fae941d06516c30476dcf4820c6d200ab
+
+M src/lib-mail/message-parser.c
+M src/lib-mail/test-message-parser.c
+
+2020-04-23 17:09:33 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (be53a118e)
+
+ lib-mail: message-parser - Support limiting max number of MIME parts
+
+ The default is to allow 10000 MIME parts. When it's reached, no more MIME
+ boundary lines will be recognized, so the rest of the mail belongs to the
+ last added MIME part.
+
+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
+
+2020-04-23 16:59:40 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7868f5f49)
+
+ lib-mail: message-parser - Support limiting max number of nested MIME parts
+
+ The default is to allow 100 nested MIME parts. When the limit is reached,
+ the innermost MIME part's body contains all the rest of the inner bodies
+ until a parent MIME part is reached.
+
+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
+
+2020-04-23 16:50:56 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (0f46088a1)
+
+ lib-mail, global: message_parser_init*() - Convert flags to settings
+ structure
+
+
+M src/doveadm/doveadm-mail-fetch.c
+M src/lib-imap/test-imap-bodystructure.c
+M src/lib-imap/test-imap-envelope.c
+M src/lib-mail/istream-attachment-extractor.c
+M src/lib-mail/istream-binary-converter.c
+M src/lib-mail/message-parser-from-parts.c
+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/message-search.c
+M src/lib-mail/message-snippet.c
+M src/lib-mail/test-message-decoder.c
+M src/lib-mail/test-message-parser.c
+M src/lib-mail/test-message-part.c
+M src/lib-storage/index/index-mail-headers.c
+M src/plugins/fts/fts-build-mail.c
+
+2020-04-23 15:00:57 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a676cb539)
+
+ lib-mail: message-parser - Don't use memory pool for parser
+
+ This reduces memory usage when parsing many MIME parts where boundaries are
+ being added and removed constantly.
+
+M src/lib-mail/message-parser-private.h
+M src/lib-mail/message-parser.c
+
+2020-04-23 14:53:27 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a175d654c)
+
+ lib-mail: message-parser - Add boundary_remove_until() helper function
+
+
+M src/lib-mail/message-parser.c
+
+2020-04-23 13:06:02 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8dbc754a3)
+
+ lib-mail: message-parser - Optimize boundary lookups when exact boundary is
+ found
+
+ When an exact boundary is found, there's no need to continue looking for
+ more boundaries.
+
+M src/lib-mail/message-parser.c
+
+2020-04-23 12:53:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (729941c99)
+
+ lib-mail: message-parser - Truncate excessively long MIME boundaries
+
+ RFC 2046 requires that the boundaries are a maximum of 70 characters
+ (excluding the "--" prefix and suffix). We allow 80 characters for a bit of
+ extra safety. Anything longer than that is truncated and treated the same as
+ if it was just 80 characters.
+
+M src/lib-mail/message-parser-private.h
+M src/lib-mail/message-parser.c
+M src/lib-mail/test-message-parser.c
+
+2020-04-23 12:10:07 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (02c7c6dbb)
+
+ lib-mail: message-parser - Minor code cleanup to finding the end of boundary
+ line
+
+
+M src/lib-mail/message-parser.c
+
+2020-04-23 12:00:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (24f0bfefd)
+
+ lib-mail: message-parser - Optimize appending new part to linked list
+
+
+M src/lib-mail/message-parser-private.h
+M src/lib-mail/message-parser.c
+
+2020-04-23 11:36:48 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (5ecadd307)
+
+ lib-mail: message-parser - Optimize updating children_count
+
+
+M src/lib-mail/message-parser.c
+
+2020-04-23 11:34:22 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (cb00e21fd)
+
+ lib-mail: message-parser - Change message_part_append() to do all work
+ internally
+
+
+M src/lib-mail/message-parser.c
+
+2020-04-23 11:33:31 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e5830ae88)
+
+ lib-mail: message-parser - Add a message_part_finish() helper function
+
+
+M src/lib-mail/message-parser.c
+
+2020-04-23 11:47:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (926742088)
+
+ lib-mail: Move message_parser_init_from_parts() handling to its own file
+
+ This helps to see what code they have in common.
+
+M src/lib-mail/Makefile.am
+A src/lib-mail/message-parser-from-parts.c
+A src/lib-mail/message-parser-private.h
+M src/lib-mail/message-parser.c
+
+2020-04-23 11:27:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6d77e00e4)
+
+ lib-mail: test-message-parser - Test that children_count is correct
+
+
+M src/lib-mail/test-message-parser.c
+
+2020-04-23 11:14:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (d4bb43a08)
+
+ lib-mail: test-message-parser - Add another test for boundary matching
+
+
+M src/lib-mail/test-message-parser.c
+
+2020-08-12 11:58:07 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (84b70b76a)
+
+ dict: Fix potential hang when iterating
+
+ Broken by 2937287a72cffa8c709c22ede838058d48b61778
+
+M src/dict/dict-commands.c
+M src/dict/dict-connection.h
+
+2020-08-12 11:57:26 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1bbb54716)
+
+ lib: Clarify o_stream_set_flush_pending() comment related to corking
+
+
+M src/lib/ostream.h
+
+2020-08-06 17:46:07 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (75693aa15)
+
+ lib: When clearing signal handlers, ignore the signals instead of restoring
+ defaults
+
+ This is mainly happening in while the process is shutting down. Getting a
+ signal at a time when the normal signal handlers are gone isn't something
+ that is expected. It's better to just ignore the signal and let the process
+ to finish shutting down normally instead of getting killed.
+
+ This should also fix some unit tests where the child processes were
+ sometimes dying with SIGTERM due to these race conditions.
+
+M src/lib-test/test-subprocess.c
+M src/lib/lib-signals.c
+M src/lib/lib-signals.h
+
+2020-08-03 13:21:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (d0ea7f9f4)
+
+ pop3-login: Fix the next command failing after unsuccessful AUTH
+
+ If the AUTH command failed (e.g. bad password or proxying failure), the next
+ command was still processed as AUTH command. For example:
+
+ auth plain .
+ -ERR [AUTH] Invalid base64 data in initial response quit
+ -ERR [AUTH] Unsupported authentication mechanism.
+
+M src/pop3-login/client-authenticate.c
+
+2020-08-04 12:37:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f491dea42)
+
+ lib-compression: zstd - Check version
+
+ If we are using older than 1.3.1 we emit warning if there is library
+ mismatch. This is because error codes will break.
+
+M src/lib-compression/iostream-zstd-private.h
+M src/lib-compression/istream-zstd.c
+M src/lib-compression/ostream-zstd.c
+
+2020-08-04 12:35:39 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (1160ac3a3)
+
+ lib-compression: zstd - Repair error codes if necessary
+
+ libzstd version numbers were pinned on 1.3.1, if we are compiled against
+ version before that, and runtime is newer, we need to repair version
+ numbers.
+
+ A horrible hack that only allows using 1.3.1+ with old code.
+
+M src/lib-compression/Makefile.am
+A src/lib-compression/iostream-zstd-private.h
+M src/lib-compression/istream-zstd.c
+M src/lib-compression/ostream-zstd.c
+
+2020-08-05 14:35:52 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (9ee1a1048)
+
+ lib: Fix potential crash changing signal handlers after destroying ioloop
+
+
+M src/lib/lib-signals.c
+
+2020-06-22 15:30:49 +0300 sergey.kitov <sergey.kitov@open-xchange.com> (ddd93d795)
+
+ lib-index: Set event name for "Recreated index"
+
+
+M src/lib-index/mail-index-write.c
+
+2020-07-21 13:32:19 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (9a6bbb115)
+
+ global: Rely on fs_deinit() automatically freeing parent fs
+
+
+M src/lib-fs/fs-metawrap.c
+M src/lib-fs/fs-randomfail.c
+M src/lib-fs/fs-sis-queue.c
+M src/lib-fs/fs-sis.c
+M src/plugins/fs-compress/fs-compress.c
+M src/plugins/mail-crypt/fs-crypt-common.c
+
+2020-07-21 12:55:27 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (e42b179cb)
+
+ lib-fs: Free parent fs generically
+
+
+M src/lib-fs/fs-api.c
+
+2020-07-21 13:24:15 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (09085ba9b)
+
+ mail-crypt: Use container_of() instead of casts for fs code
+
+ Being more explicit not only makes the code more explict, it makes it safer.
+
+M src/plugins/mail-crypt/fs-crypt-common.c
+
+2020-07-21 13:22:06 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (af02f4005)
+
+ fs-compress: Use container_of() instead of casts
+
+ Being more explicit not only makes the code more explict, it makes it safer.
+
+M src/plugins/fs-compress/fs-compress.c
+
+2020-07-21 13:18:41 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (efad611e1)
+
+ lib-fs: sis - Use container_of() instead of casts
+
+ Being more explicit not only makes the code more explict, it makes it safer.
+
+M src/lib-fs/fs-sis.c
+
+2020-07-21 13:16:34 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (e11855558)
+
+ lib-fs: sis-queue - Use container_of() instead of casts
+
+ Being more explicit not only makes the code more explict, it makes it safer.
+
+M src/lib-fs/fs-sis-queue.c
+
+2020-07-21 13:13:20 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (4f1409f68)
+
+ lib-fs: randomfail - Use container_of() instead of casts
+
+ Being more explicit not only makes the code more explict, it makes it safer.
+
+M src/lib-fs/fs-randomfail.c
+
+2020-07-21 13:05:34 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (fbfbbb344)
+
+ lib-fs: metawrap - Use container_of() instead of casts
+
+ Being more explicit not only makes the code more explict, it makes it safer.
+
+M src/lib-fs/fs-metawrap.c
+
+2020-07-17 17:43:08 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (8372b18e1)
+
+ lib-fs: Add new deinit vfunc
+
+ This is useful for tidying up anything just before freeing the struct fs.
+ For example, flushing dirty data in a write-back cache.
+
+M src/lib-fs/fs-api-private.h
+M src/lib-fs/fs-api.c
+M src/lib-fs/fs-dict.c
+M src/lib-fs/fs-metawrap.c
+M src/lib-fs/fs-posix.c
+M src/lib-fs/fs-randomfail.c
+M src/lib-fs/fs-sis-queue.c
+M src/lib-fs/fs-sis.c
+M src/lib-fs/fs-test.c
+M src/plugins/fs-compress/fs-compress.c
+M src/plugins/mail-crypt/fs-crypt.c
+M src/plugins/mail-crypt/fs-mail-crypt.c
+
+2020-07-17 17:26:41 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (9d59b32ff)
+
+ lib-fs: Rename deinit vfunc to free
+
+
+M src/lib-fs/fs-api-private.h
+M src/lib-fs/fs-api.c
+M src/lib-fs/fs-dict.c
+M src/lib-fs/fs-metawrap.c
+M src/lib-fs/fs-posix.c
+M src/lib-fs/fs-randomfail.c
+M src/lib-fs/fs-sis-queue.c
+M src/lib-fs/fs-sis.c
+M src/lib-fs/fs-test.c
+M src/plugins/fs-compress/fs-compress.c
+M src/plugins/mail-crypt/fs-crypt-common.c
+M src/plugins/mail-crypt/fs-crypt.c
+M src/plugins/mail-crypt/fs-mail-crypt.c
+
+2020-04-26 22:27:52 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a92b4b21f)
+
+ lib, lib-master: Send updated event to stats if fields/categories change
+
+ Based on code by Jeff Sipek
+
+M src/lib-master/stats-client.c
+M src/lib-master/test-event-stats.c
+M src/lib/lib-event-private.h
+M src/lib/lib-event.c
+
+2020-04-28 18:48:07 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (42c309013)
+
+ stats: Allow clients to update existing events with UPDATE command
+
+
+M src/stats/client-writer.c
+
+2020-04-28 18:43:21 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f78e3f8bf)
+
+ lib: event_import*() - Allow importing duplicate data without using more
+ memory
+
+
+M src/lib/lib-event.c
+
+2020-07-27 11:15:42 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (21477aaef)
+
+ lib-master: Properly compare unit test output strings with expected values
+
+ The I_MIN() mean that only the prefix was getting compared.
+
+M src/lib-master/test-event-stats.c
+
+2020-07-05 12:16:06 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6d9ff68a1)
+
+ imap: cmd-notify - Do not try to notify for removable namespaces.
+
+ It is not going to work anyway and it will cause a crash when the IMAP sync
+ code subsequently drops those namespaces as part of
+ mail_user_drop_useless_namespaces(). This does not drop the earlier created
+ mailbox_list_notify object, causing its mailbox list index view object to
+ remain open. This causes the following panic:
+
+ Panic: Leaked view for index <path>/dovecot.list.index: Opened in
+ mailbox-list-index-notify.c:142
+
+M src/imap/cmd-notify.c
+
+2020-07-07 01:37:54 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (08398c29d)
+
+ lib-storage: Add mail_namespace_is_removable() and use it.
+
+
+M src/lib-storage/mail-namespace.h
+M src/lib-storage/mail-user.c
+
+2020-07-05 12:47:05 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (fbeeffeef)
+
+ lib-index: mail-index-view - Record caller source filename and line for
+ mail_index_view_clone/dup_private().
+
+ Before, this was only recorded for mail_index_view_open(), which caused the
+ view leak panic to show a useless source location, e.g.:
+
+ Panic: Leaked view for index <path>: Opened in (null):0
+
+M src/lib-index/mail-index-view-private.h
+M src/lib-index/mail-index-view.c
+
+2020-07-16 16:30:00 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (622a3427e)
+
+ lib-fs: Set debug on event from settings
+
+
+M src/lib-fs/fs-api.c
+
+2020-06-29 11:56:02 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (49daa9013)
+
+ imap: cmd-notify - Fix segfault ocurring upon NOTIFY error.
+
+ The client_send_line() function in imap_client_notify_more() uses notify_ns
+ to obtain access to client struct, while that is available as a direct
+ function parameter. And notify_ns is invalid at the end of the for loop, so
+ dereferencing it causes a segmentation fault.
+
+M src/imap/imap-notify.c
+
+2020-07-31 18:39:54 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3fd7b277b)
+
+ lib-compression: test-compression - Do not fail on missing handlers
+
+
+M src/lib-compression/test-compression.c
+
+2020-07-31 09:51:35 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b8ab80ca2)
+
+ lib-compression: Fix support for older libzstd
+
+
+M m4/want_zstd.m4
+M src/lib-compression/istream-zstd.c
+M src/lib-compression/ostream-zstd.c
+
+2020-07-31 09:51:16 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (cf227c650)
+
+ lib-compression: test-compression - Ensure compression handler is found by
+ file extension
+
+
+M src/lib-compression/test-compression.c
+
+2020-06-10 15:53:41 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (044777576)
+
+ fs-compress: Try all compression formats when decompressing
+
+ Not just the specified compression format.
+
+M src/plugins/fs-compress/fs-compress.c
+
+2020-06-10 15:48:06 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4cd01cefd)
+
+ fs-compress: Rename compress_fs.handler to compress_handler
+
+
+M src/plugins/fs-compress/fs-compress.c
+
+2020-07-06 14:54:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (15786d88f)
+
+ lib-compression: test-compression - Add test for tiny invalid data
+
+ Ensure compression handlers return EINVAL when reading less than header size
+ data.
+
+M src/lib-compression/test-compression.c
+
+2020-07-06 19:55:10 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ba73b7f0e)
+
+ lib-compression: istream-xz - Fix header reading
+
+ If file was smaller than xz magic size, we would get EPIPE instead of
+ EINVAL.
+
+M src/lib-compression/istream-lzma.c
+
+2020-07-06 15:42:26 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (6aaafffe3)
+
+ lib-compression: istream-zstd - Fix header reading
+
+ If file was smaller than zstd magic size, we would get EPIPE instead of
+ EINVAL.
+
+M src/lib-compression/istream-zstd.c
+
+2020-07-06 15:41:28 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (658bc80f4)
+
+ lib-compression: istream-zlib - Fix header reading
+
+ If data size was 0 it would give EPIPE instead of EINVAL
+
+M src/lib-compression/istream-bzlib.c
+
+2020-07-06 19:16:50 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (58c9dda4c)
+
+ lib-compression: istream-lz4 - Fix header reading
+
+ If data size was smaller than header size, lz4 reading would return -1
+ without error indicating EOF instead of EINVAL.
+
+ Broken in c1a43c6098f0caf11e8a2c1889227ec3969e410e
+
+M src/lib-compression/istream-lz4.c
+
+2020-07-06 10:12:39 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (829ba2c7d)
+
+ lib-compression: ostream-zstd - Remove o_stream_zstd_error
+
+ It has only one private caller.
+
+M src/lib-compression/ostream-zstd.c
+
+2020-07-06 10:11:51 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (2341a0353)
+
+ lib-compression: ostream-zstd - Fix error handling
+
+ The error code handling in ZSTD was wrong, because zstd returns error codes
+ as large unsigned numbers which need to be retrieved with helper function.
+
+M src/lib-compression/ostream-zstd.c
+
+2020-07-06 10:10:00 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (286fa302a)
+
+ lib-compression: istream-zstd - Remove i_stream_zstd_error
+
+ It has only one private caller.
+
+M src/lib-compression/istream-zstd.c
+
+2020-07-03 09:45:09 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (a36b52447)
+
+ lib-compression: Fix error handling for zstd
+
+ The error code handling in ZSTD was wrong, because zstd returns error codes
+ as large unsigned numbers which need to be retrieved with helper function.
+
+M src/lib-compression/istream-zstd.c
+
+2020-07-06 11:48:13 +0200 Markus Valentin <markus.valentin@open-xchange.com> (6e1f9304c)
+
+ lib-compression: Add "unsupported" compression
+
+ This new compression is only used for testing purposes.
+
+M src/lib-compression/compression.c
+
+2020-06-30 14:28:03 +0200 Markus Valentin <markus.valentin@open-xchange.com> (e6a0c94c0)
+
+ lib-compression: Change compression_lookup_handler_from_ext return value
+
+ In order to improve the error handling for
+ compression_lookup_handler_from_ext calls return an integer rather then a
+ pointer to struct compression_handler.
+
+M src/lib-compression/compression.c
+M src/lib-compression/compression.h
+M src/lib-compression/test-compression.c
+M src/plugins/zlib/zlib-plugin.c
+
+2020-06-30 14:21:22 +0200 Markus Valentin <markus.valentin@open-xchange.com> (b6d3aedbd)
+
+ lib-compression: Change compression_lookup_handler return value
+
+ In order to improve the error handling for compression_lookup_handler calls
+ return an integer rather then a pointer to struct compression_handler.
+
+ This change also prevents crashes when trying to use a compression format
+ that isn't compiled in.
+
+M src/lib-compression/compression.c
+M src/lib-compression/compression.h
+M src/lib-compression/test-compression.c
+M src/plugins/fs-compress/fs-compress.c
+M src/plugins/imap-zlib/imap-zlib-plugin.c
+M src/plugins/zlib/zlib-plugin.c
+
+2020-07-29 10:40:17 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (af1a6be96)
pop3: Fix assert-crash when using pop3_deleted_flag
@@ -23,7 +4751,7 @@ M NEWS
M src/pop3/pop3-commands.c
-2020-07-15 12:42:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (2c42881c0)
+2020-07-15 12:42:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (581bea0f6)
pop3-login: Fix handling commands that are sent in multiple IP packets
@@ -36,21 +4764,7 @@ M src/pop3-login/client-authenticate.h
M src/pop3-login/client.c
M src/pop3-login/client.h
-2020-07-28 13:25:44 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (2c8a4e90f)
-
- Released v2.3.11.2
-
-
-M configure.ac
-
-2020-07-28 11:02:06 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (7067e5d66)
-
- NEWS: Add NEWS for 2.3.11.2
-
-
-M NEWS
-
-2020-07-10 11:00:14 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b3a4eb5b3)
+2020-07-10 11:00:14 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e6f8953a6)
lib-test: Rename s1, s2 to _temp_s1, _temp_s2 in test_assert_strcmp_idx
@@ -60,7 +4774,7 @@ M NEWS
M src/lib-test/test-common.h
-2020-07-09 09:38:37 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (624c0394f)
+2020-07-09 09:38:37 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f19d3ad34)
pop3-login: Use struct client authenticating member
@@ -72,7 +4786,7 @@ M src/pop3-login/client-authenticate.c
M src/pop3-login/client.c
M src/pop3-login/client.h
-2020-07-09 09:39:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3c8f9d898)
+2020-07-09 09:39:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (7ca712bb6)
pop3-login: Consume line after mech probe
@@ -82,7 +4796,7 @@ M src/pop3-login/client.h
M src/pop3-login/client-authenticate.c
-2020-07-08 10:59:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (0da6a6995)
+2020-07-08 10:59:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (1a1b810e2)
lib: istream - Do not attempt read past end in i_stream_next_line_finish
@@ -90,14 +4804,14 @@ M src/pop3-login/client-authenticate.c
M src/lib/istream.c
M src/lib/test-istream.c
-2020-07-08 12:58:56 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (9524ebad3)
+2020-07-08 12:58:56 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (449539dc5)
lib-test: test_assert_strcmp_idx - Avoid double evaluation
M src/lib-test/test-common.h
-2020-07-08 08:55:31 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (98e3565e9)
+2020-07-08 08:55:31 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (fb2379c54)
pop3-login: Read command more carefully
@@ -106,7 +4820,93 @@ M src/lib-test/test-common.h
M src/pop3-login/client.c
-2020-06-30 14:02:34 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (d8c3cfca7)
+2020-07-01 12:11:43 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (1accaf55c)
+
+ lib: Properly free event filter in unit tests
+
+
+M src/lib/test-event-filter-parser.c
+
+2020-07-03 09:11:09 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (5a38eafa7)
+
+ lib: event-filter-lexer - Ignore unused parameters
+
+
+M src/lib/event-filter-lexer.l
+
+2020-05-19 22:08:25 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (757255c50)
+
+ lib: lib-signals - Use persistent signal IOs
+
+ When ioloop is switched, don't remove the IO from old ioloop and create it
+ to new ioloop. Just use persistent IOs for each separate ioloop. This can
+ reduce a lot of syscalls when ioloops are often switched.
+
+M src/lib/lib-signals.c
+M src/lib/lib-signals.h
+
+2020-05-19 21:30:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b25bd31c7)
+
+ lib: lib-signals - Add struct signal_ioloop
+
+ This struct tracks which ioloops have signal handlers.
+
+M src/lib/lib-signals.c
+
+2020-05-19 21:02:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (bda17bd78)
+
+ lib: lib-signals - Replace LIBSIG_FLAG_NO_IOLOOP_AUTOMOVE with
+ LIBSIG_FLAG_IOLOOP_AUTOMOVE
+
+ There aren't many signal handlers that actually want to move automatically.
+ It's just causing accidental bugs when signal handlers are run in unexpected
+ ioloops.
+
+M src/lib-test/test-subprocess.c
+M src/lib/child-wait.c
+M src/lib/lib-signals.c
+M src/lib/lib-signals.h
+M src/lib/test-lib-signals.c
+
+2020-06-24 10:30:21 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (68210f3fa)
+
+ lib: lib-signals - Fix creating non-automove signal handlers before ioloop
+
+
+M src/lib/lib-signals.c
+
+2020-05-19 21:50:25 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (aa0515961)
+
+ lib: Add io_loop_add/remove_destroy_callback()
+
+
+M src/lib/ioloop.c
+M src/lib/ioloop.h
+
+2020-07-02 10:09:49 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (21ea4c603)
+
+ lib: event-filter - Use i_fatal for fatal error handling
+
+
+M src/lib/event-filter-lexer.l
+
+2020-07-02 09:56:15 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ef7cec295)
+
+ lib: event-filter - Disable some more compiler warnings
+
+
+M src/lib/event-filter-lexer.l
+
+2020-07-02 09:55:31 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (f3c879817)
+
+ lib: event-filter - Handle allocations
+
+ This allows us to use Dovecot specific memory error handling when
+ allocations fail. Also squashes compiler warnings.
+
+M src/lib/event-filter-lexer.l
+
+2020-06-30 14:02:34 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (6c5543703)
pop3-login: Read SASL-IR properly
@@ -118,7 +4918,7 @@ M src/pop3-login/client-authenticate.h
M src/pop3-login/client.c
M src/pop3-login/client.h
-2020-06-30 14:01:12 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ba9482dae)
+2020-06-30 14:01:12 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (c703c8ff5)
pop3-login: Read command separately
@@ -126,7 +4926,7 @@ M src/pop3-login/client.h
M src/pop3-login/client.c
-2020-07-01 14:49:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b5afdfe1b)
+2020-07-01 14:49:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b31bbec95)
auth: db-lua - Fix user iteration
@@ -135,35 +4935,35 @@ M src/pop3-login/client.c
M src/auth/db-lua.c
-2020-07-01 13:18:03 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (c2b339a19)
+2020-07-01 13:18:03 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (6e84cc3cd)
auth: db-lua - Always set callback when iterating
M src/auth/db-lua.c
-2020-06-26 18:31:11 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (4c1b1766f)
+2020-06-26 18:31:11 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (c76a5af14)
lib-lua: Register panic handler
M src/lib-lua/dlua-script.c
-2020-06-26 18:27:18 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (8cf21fa2b)
+2020-06-26 18:27:18 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3e11b97c6)
auth: db-lua - Ensure stack is empty at end
M src/auth/db-lua.c
-2020-06-26 18:29:46 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (97ccdbd86)
+2020-06-26 18:29:46 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (21668efa7)
auth: db-lua - Pop dovecot after registering
M src/auth/db-lua.c
-2020-06-26 12:21:40 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b22e5b0b2)
+2020-06-26 12:21:40 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (919c5103b)
auth: db-lua - Pop result after lookup
@@ -171,7 +4971,7 @@ M src/auth/db-lua.c
M src/auth/db-lua.c
-2020-06-26 12:16:31 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (5bf39d841)
+2020-06-26 12:16:31 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (d9dd3c279)
lib-lua: Add dlua_dump_stack
@@ -180,30 +4980,390 @@ M src/auth/db-lua.c
M src/lib-lua/dlua-script.c
M src/lib-lua/dlua-script.h
-2020-06-30 11:50:26 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (62b31b94a)
+2020-06-29 09:55:15 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (dd87051e9)
- NEWS: Add news for 2.3.11
+ configure: Properly fail if bison or flex is missing
+ If bison or flex is missing, and are needed, fail configure.
-M NEWS
+M configure.ac
-2020-07-02 17:31:19 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6001e4b48)
+2020-06-26 10:08:27 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (9a6e303a9)
- lib-mail: Fix handling trailing "--" in MIME boundaries
+ Ignore ylwrap
- Broken by 5b8ec27fae941d06516c30476dcf4820c6d200ab
-M src/lib-mail/message-parser.c
-M src/lib-mail/test-message-parser.c
+M .gitignore
+
+2020-06-25 12:16:44 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (1e4f9b656)
+
+ lib: Rename event filter files to be less redundantly named
+
+
+M .gitignore
+M src/lib/Makefile.am
+R098 src/lib/event-filter-parser-lexer.l src/lib/event-filter-lexer.l
+R100 src/lib/event-filter-parser-parser.y src/lib/event-filter-parser.y
+
+2020-06-10 16:44:19 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (b25cea63d)
+
+ lib: event filter parser unit tests
+
+
+M src/lib/Makefile.am
+A src/lib/test-event-filter-parser.c
+M src/lib/test-lib.inc
+
+2020-05-26 11:35:38 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (fcba1d530)
-2020-06-30 11:23:53 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (76369c5f2)
+ lib: Switch event filtering to the new filter language
- configure: Update version
+M src/lib-master/stats-client.c
+M src/lib-master/test-event-stats.c
+M src/lib/Makefile.am
+D src/lib/event-filter-parser.c
+M src/lib/event-filter.c
+M src/lib/event-filter.h
+M src/stats/client-writer.c
+M src/stats/test-client-reader.c
+M src/stats/test-client-writer.c
+M src/stats/test-stats-metrics.c
+2020-05-29 13:09:22 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (789484d40)
+
+ lib: Implement a new event filter language
+
+ Currently, it is not used by anything.
+
+ In general, the new syntax is very SQL-like. It is a boolean expression
+ made up of key-value comparisons, parentheses, and boolean connectors AND,
+ OR, and NOT.
+
+ The key-value comparisons are of the form:
+
+ <key> <operator> <value>
+
+ Where the key is one of:
+
+ (1) "event"
+ (2) "category"
+ (3) "source_location"
+ (4) a field name
+
+ The operator is one of:
+
+ (1) =
+ (2) >
+ (3) <
+ (4) >=
+ (5) <=
+
+ And the value is either:
+
+ (1) a single word token, or
+ (2) a quoted string
+
+ For example, to match events with the event name "abc", we would use one of
+ the following expressions. Note that white space is not significant between
+ tokens, and therefore the following are all equivalent.
+
+ event=abc
+ event="abc"
+ event = abc
+ event = "abc"
+
+ To match events with the name "abc" that include the "imap" category, we'd
+ use:
+
+ event=abc AND category=imap
+
+ To match events with the name "abc" that either include the "imap" or "pop3"
+ categories, we'd use:
+
+ event=abc AND (category=imap OR category=pop3)
+
+ Field names don't have any special prefix. Therefore, to match events than
+ have the field bytes_out equal to 10, we'd use:
+
+ bytes_out=10
+
+ To match events with bytes_out greater than or equal to 10, we'd use:
+
+ bytes_out>=10
+
+M .gitignore
M configure.ac
+M src/lib/Makefile.am
+A src/lib/event-filter-parser-lexer.l
+A src/lib/event-filter-parser-parser.y
+M src/lib/event-filter-private.h
+M src/lib/event-filter.c
+
+2020-06-17 15:16:48 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (09a26e31a)
+
+ lib: Allow event filter nodes to represent a log type category
+
+
+M src/lib/event-filter-private.h
+M src/lib/event-filter.c
+
+2020-06-17 15:01:28 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (64874eaac)
+
+ lib: Future-proof the log type to event filter log type mapping
+
+ The mapping assumed that:
+
+ EVENT_FILTER_LOG_TYPE_FOO == (1 << LOG_TYPE_FOO)
+
+ While that is true today and will likely continue to be true in the future,
+ there's no reason why we can't future proof it and ensure that it always
+ works.
+
+M src/lib/event-filter.c
+
+2020-05-28 17:43:21 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (fc330b22c)
+
+ lib: Expose event_filter_category_to_log_type to the rest of event filter
+ code
+
+
+M src/lib/event-filter-private.h
+M src/lib/event-filter.c
+
+2020-05-28 17:22:09 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (61cb32860)
+
+ lib: Add internal code for event filter le/lt/ge/gt comparisons
+
+ These are currently unreachable.
+
+M src/lib/event-filter.c
+
+2020-05-22 13:08:24 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (4ba261b73)
+
+ lib: Rewrite event filter internals to use an abstract-syntax-tree
+
+
+M src/lib/Makefile.am
+A src/lib/event-filter-private.h
+M src/lib/event-filter.c
+
+2020-05-11 14:43:15 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (623031f7e)
+
+ stats: Fail to load with empty metric filters
+
+
+M src/stats/stats-settings.c
+
+2020-04-21 10:32:32 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (15ff31c2f)
+
+ stats: replace metric { } filtering with the common filter language
+
+
+M src/stats/stats-metrics.c
+M src/stats/stats-settings.c
+M src/stats/stats-settings.h
+M src/stats/test-client-reader.c
+M src/stats/test-client-writer.c
+M src/stats/test-stats-metrics.c
+
+2020-05-14 15:11:35 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (a58a505d9)
+
+ lib: Change event_filter_parse() filter arg to a single pointer
+
+ Instead of allocating a new filter, fill in a passed in one.
+
+M src/lib-master/master-service-settings.c
+M src/lib-master/master-service.c
+M src/lib/event-filter-parser.c
+M src/lib/event-filter.h
+
+2020-05-14 13:04:10 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (5535938ae)
+
+ lib: Assert that we aren't trying to match using filter framents
+
+
+M src/lib/event-filter.c
+
+2020-05-14 13:03:52 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (fdff11be6)
+
+ lib: Add event_filter_create_fragment()
+
+
+M src/lib/event-filter.c
+M src/lib/event-filter.h
+
+2020-04-21 10:08:46 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (891615285)
+
+ lib: Move event filter query language from lib-master
+
+ This way we can use it elsewhere.
+
+M src/lib-master/master-service-settings.c
+M src/lib-master/master-service-settings.h
+M src/lib-master/master-service.c
+M src/lib/Makefile.am
+A src/lib/event-filter-parser.c
+M src/lib/event-filter.h
+
+2020-04-21 11:05:58 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (f3d6ba1bb)
+
+ stats: openmetrics shouldn't abuse metric { } filter strings
+
+ Once upon a time it was thought that it was a good idea to output labels for
+ openmetrics metrics based on the fields used in the filter { } sub-block.
+ For the most part, this is not useful since the labels are going to be
+ either (1) always the same, or (2) one of several values.
+
+ For example, consider the following metric block:
+
+ metric foo {
+ event_name = something
+ ...
+ filter {
+ abc = BAR
+ def = BAZ*
+ }
+ }
-2020-06-11 12:59:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c64bcd4bf)
+ The value of 'abc' will *always* be 'BAR' for this metric, therefore it is
+ useless to include it.
+
+ The value of 'def' will always start with 'BAZ' for this metric. While it
+ may be tempting to justify this usage, the group_by provides a superset of
+ the functionality. In other words, the following config snipped will
+ provide a superset of the same information.
+
+ metric foo {
+ event_name = something
+ ...
+ filter {
+ abc = BAR
+ def = BAZ*
+ }
+
+ group_by = abc def
+ }
+
+ Therefore, this filter { } sub-block labeling support is redundant and can
+ be safely removed.
+
+M src/stats/stats-service-openmetrics.c
+
+2020-05-11 14:07:11 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (43159ecb2)
+
+ lib: Add a way to merge filter queries with an overridden context
+
+ This allows the consumers to construct a filter without setting the context
+ on each query, and then when merging it with another query "filling in" the
+ context on the fly.
+
+M src/lib/event-filter.c
+M src/lib/event-filter.h
+
+2020-05-11 14:03:52 -0400 Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com> (a21b38c64)
+
+ lib: Better document event filter iteration behavior
+
+
+M src/lib/event-filter.h
+
+2020-05-29 09:53:53 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (225bbb2fa)
+
+ auth: auth-worker-client - Fix whitespace formatting
+
+
+M src/auth/auth-worker-client.c
+
+2020-05-29 09:52:23 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (2bca51fb8)
+
+ auth: auth-worker-client - Remove global auth_worker_client
+
+ All should go through connection list instead.
+
+ Broken in 317cb8aa981f856770057e23aeba98a33afc033a
+
+M src/auth/auth-worker-client.c
+
+2019-01-29 01:08:21 +0100 Stephan Bosch <stephan.bosch@dovecot.fi> (33658141b)
+
+ lib-http: http-client - Fix assert panic occurring for shared clients.
+
+ Occurs as a race condition between connections becoming idle and new
+ connections being set up.
+
+ Panic was:
+
+ Panic: file http-client-queue.c: line 373
+ (http_client_queue_connection_attempt): assertion failed:
+ (http_client_peer_addr_cmp (&(*peer_idx)->shared->addr, addr) != 0)
+
+M src/lib-http/http-client-queue.c
+
+2020-05-26 19:22:52 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (2937287a7)
+
+ dict: Delay uncorking ostream in iteration callback
+
+
+M src/dict/dict-commands.c
+
+2020-06-15 10:33:53 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8a31ae84a)
+
+ lib-storage: istream-mail - Fix assert-crash on handling corrupted mail size
+
+ In some situations the "Cached message size smaller than expected" error
+ handling could have resulted in:
+
+ Panic: file istream.c: line 315 (i_stream_read_memarea): assertion failed:
+ (old_size <= _stream->pos - _stream->skip)
+
+M src/lib-storage/index/istream-mail.c
+
+2020-05-26 19:09:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f5790ecaa)
+
+ dict-client: Fix potential iterator double-free
+
+ client_dict_iterate_free() didn't really work properly, because of:
+
+ ctx->finished = TRUE;
+ client_dict_iter_api_callback(ctx, cmd, extra_args);
+ client_dict_iterate_free(ctx);
+
+ Here finished=TRUE is set first (and it needs to be set first). Afterwards
+ client_dict_iter_api_callback() internally calls
+ client_dict_iterate_deinit(), which can end up freeing the iterator.
+
+M src/lib-dict/dict-client.c
+
+2020-05-26 18:59:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (ed47536cf)
+
+ dict-client: Rename struct dict_connection to dict_client_connection
+
+ dict server already has struct dict_connection. This naming conflict caused
+ problems with gdb debugging.
+
+M src/lib-dict/dict-client.c
+
+2020-05-18 20:34:27 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (66610c9f0)
+
+ dict: Cork the output while writing iteration output
+
+ This reduces system CPU usage by avoiding many tiny write() syscalls.
+
+ Broken by 2ff2da52146609f4459bd0f7fd603e13400cb85e
+
+M src/dict/dict-commands.c
+
+2020-04-28 11:51:16 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c362e6dfd)
+
+ fts: Add fts category
+
+ For now mainly so that the fts drivers' categories can inherit from it.
+
+M src/plugins/fts/fts-api.c
+M src/plugins/fts/fts-api.h
+
+2020-06-11 12:59:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (203b2b709)
imap: Fix assert-crash in COPY/MOVE when storage doesn't return UIDs
@@ -216,7 +5376,7 @@ M configure.ac
M src/imap/cmd-copy.c
-2020-06-09 11:40:53 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7be62107e)
+2020-06-09 11:40:53 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (0fb7f8974)
lib-compression: istream-zstd - Fix infinite loop when istream is
nonblocking
@@ -224,7 +5384,7 @@ M src/imap/cmd-copy.c
M src/lib-compression/istream-zstd.c
-2020-06-04 13:15:11 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (275605ade)
+2020-06-04 13:15:11 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (87f109d40)
lib-oauth2: oauth-jwt - Ensure / and . are escaped in kid
@@ -232,21 +5392,21 @@ M src/lib-compression/istream-zstd.c
M src/lib-oauth2/oauth2-jwt.c
M src/lib-oauth2/test-oauth2-jwt.c
-2020-06-04 10:41:32 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (2a74d2537)
+2020-06-04 10:41:32 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (654ade00c)
dovecot-oauth2.conf.ext: Update to match code
M doc/example-config/dovecot-oauth2.conf.ext
-2020-06-04 10:23:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (01008de74)
+2020-06-04 10:23:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (92684902d)
auth: db-oauth2 - Add more performant defaults for lib-http
M src/auth/db-oauth2.c
-2020-06-03 15:40:40 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e31ba043e)
+2020-06-03 15:40:40 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b196135db)
lib-oauth2: Use azp to find token
@@ -256,7 +5416,7 @@ M src/auth/db-oauth2.c
M src/lib-oauth2/oauth2-jwt.c
M src/lib-oauth2/test-oauth2-jwt.c
-2020-06-03 15:40:04 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (af387d690)
+2020-06-03 15:40:04 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ebe460f7c)
lib-oauth2: Validate signature in jwt body process
@@ -264,7 +5424,7 @@ M src/lib-oauth2/test-oauth2-jwt.c
M src/lib-oauth2/oauth2-jwt.c
-2020-06-03 15:35:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (66cfb35ba)
+2020-06-03 15:35:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (fc708711c)
lib-oauth2: Rename algo to alg
@@ -272,7 +5432,7 @@ M src/lib-oauth2/oauth2-jwt.c
M src/lib-oauth2/oauth2-jwt.c
-2020-06-02 15:59:37 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e3d591f32)
+2020-06-02 15:59:37 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (4b7d89371)
lib-oauth2: Add iss validation support
@@ -282,7 +5442,7 @@ M src/lib-oauth2/oauth2-jwt.c
M src/lib-oauth2/oauth2.h
M src/lib-oauth2/test-oauth2-jwt.c
-2020-06-02 15:52:34 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3aa2365c5)
+2020-06-02 15:52:34 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b4dd39cce)
lib-oauth2: Ensure token algorithm matches with key
@@ -291,42 +5451,61 @@ M src/lib-oauth2/test-oauth2-jwt.c
M src/lib-oauth2/oauth2-jwt.c
M src/lib-oauth2/test-oauth2-jwt.c
-2020-06-02 16:07:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (10288b7a3)
+2020-06-02 16:07:48 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (a93c1dbfd)
lib-oauth2: oauth2-jwt - Always uppercase algorithm
M src/lib-oauth2/oauth2-jwt.c
-2020-05-28 12:49:33 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b38875a48)
+2020-05-27 15:41:22 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b219069e8)
- lib-mail: message-parser - Fix assert-crash if parsing is stopped early
+ lib-dcrypt: dcrypt-openssl - Add helper macro for error_r handling
- Some callers don't want to parse the full message.
+ Avoids missing NULL checks for error_r.
- Fixes: Panic: file message-parser.c: line 793
- (message_parser_deinit_from_parts): assertion failed:
- (ctx->nested_parts_count == 0)
+M src/lib-dcrypt/dcrypt-openssl.c
-M src/lib-mail/message-parser.c
-M src/lib-mail/test-message-parser.c
+2020-05-27 12:16:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dcfd2a917)
+
+ lib-signals: Fix lib_signals_set_expected().
-2020-05-27 11:35:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6b987907d)
+ The function made no sense at all.
- lib-mail: Fix parse_too_many_nested_mime_parts()
+ Problem found by Coverity.
- This was originally correct, until it was "optimized" wrong and got merged.
+M src/lib/lib-signals.c
-M src/lib-mail/message-parser.c
+2020-04-16 07:35:25 +0200 Markus Valentin <markus.valentin@open-xchange.com> (53155cad7)
+
+ lib-sql: driver-cassandra - Handle more Cassandra errors as uncertain
+
+ Treat CASS_ERROR_LIB_WRITE_ERROR as uncertain error.
+
+M src/lib-sql/driver-cassandra.c
+
+2020-04-16 07:32:36 +0200 Markus Valentin <markus.valentin@open-xchange.com> (c3d98cebb)
+
+ lib-sql: driver-cassandra - Extract uncertain ascertainment to function
-2020-05-27 09:09:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (1c944d4a7)
+
+M src/lib-sql/driver-cassandra.c
+
+2020-05-08 03:02:22 +0300 Juha-Petri Tyrkkö <juha-petri.tyrkkoe@open-xchange.com> (ce724fc64)
+
+ lib-fs: Prevent the release of a nonexistent dict.
+
+
+M src/lib-fs/fs-dict.c
+
+2020-05-27 09:09:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (2acca6a60)
auth: db-oauth2 - Remove extra oauth2 prefix from log messages
M src/auth/db-oauth2.c
-2020-05-26 12:46:29 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (3051a5efa)
+2020-05-26 12:46:29 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (139fb234b)
auth, lib-oauth2: Add local introspection mode
@@ -336,14 +5515,14 @@ M src/auth/db-oauth2.c
M src/auth/db-oauth2.c
M src/lib-oauth2/oauth2.h
-2020-05-26 09:53:26 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (48df491c4)
+2020-05-26 09:53:26 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (b2eed05ed)
auth: db-oauth2 - Use common code for lookup and password grant
M src/auth/db-oauth2.c
-2020-05-26 13:38:09 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (997b4a657)
+2020-05-26 13:38:09 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (1cb8ec93c)
auth: db-oauth2 - Clarify how introspect gets called
@@ -355,14 +5534,14 @@ M src/auth/db-oauth2.c
M src/auth/db-oauth2.c
-2020-05-26 12:12:32 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (5176cf1af)
+2020-05-26 12:12:32 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (15c893ea4)
auth: db-oauth2 - Add token parameter to db_oauth2_local_validation
M src/auth/db-oauth2.c
-2020-05-25 21:42:08 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (573f5d7a4)
+2020-05-25 21:42:08 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (db7f5e6e5)
auth: db-oauth2 - Move db_oauth2_local_validation
@@ -370,7 +5549,7 @@ M src/auth/db-oauth2.c
M src/auth/db-oauth2.c
-2020-05-25 21:47:35 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (edd92a83c)
+2020-05-25 21:47:35 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (9e2507637)
auth: db-oauth2 - Move db_oauth2_lookup_continue
@@ -378,7 +5557,7 @@ M src/auth/db-oauth2.c
M src/auth/db-oauth2.c
-2020-05-26 21:24:02 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (05e641572)
+2020-05-26 21:24:02 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (124861cc7)
auth: db-oauth2 - Do not fallback into remote validation anymore
@@ -387,14 +5566,14 @@ M src/auth/db-oauth2.c
M src/auth/db-oauth2.c
-2020-05-25 21:18:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ff3beafab)
+2020-05-25 21:18:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (de757d9e2)
auth: db-oauth2 - Fix whitespace issue
M src/auth/db-oauth2.c
-2020-05-26 21:22:51 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e3c088c25)
+2020-05-26 21:22:51 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (e91e4a64e)
lib-oauth2: Use hash instead of hash2
@@ -402,7 +5581,7 @@ M src/auth/db-oauth2.c
M src/lib-oauth2/oauth2-key-cache.c
-2020-05-25 16:19:14 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (225f7978b)
+2020-05-25 16:19:14 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (bf25eab15)
lib-oauth2: Allow nbf and iat to be 0
@@ -411,159 +5590,214 @@ M src/lib-oauth2/oauth2-key-cache.c
M src/lib-oauth2/oauth2-jwt.c
M src/lib-oauth2/test-oauth2-jwt.c
-2020-04-23 17:09:33 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b0041cda0)
+2020-05-01 17:26:14 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0c10ac753)
- lib-mail: message-parser - Support limiting max number of MIME parts
+ lmtp: Support forwarding passdb's forward_* fields via RCPT TO XRCPTFORWARD
+ parameter.
- The default is to allow 10000 MIME parts. When it's reached, no more MIME
- boundary lines will be recognized, so the rest of the mail belongs to the
- last added MIME part.
-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
+M src/lmtp/lmtp-client.c
+M src/lmtp/lmtp-commands.c
+M src/lmtp/lmtp-common.h
+M src/lmtp/lmtp-local.c
+M src/lmtp/lmtp-proxy.c
+M src/lmtp/lmtp-recipient.h
-2020-04-23 16:59:40 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e2eb98d00)
+2020-05-01 17:26:03 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (82bf15343)
- lib-mail: message-parser - Support limiting max number of nested MIME parts
+ lmtp: lmtp-proxy - Adjust RCPT parameter amendment code for expansion.
- The default is to allow 100 nested MIME parts. When the limit is reached,
- the innermost MIME part's body contains all the rest of the inner bodies
- until a parent MIME part is reached.
-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
+M src/lmtp/lmtp-proxy.c
-2020-04-23 16:50:56 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (21dcfccce)
+2020-05-01 17:25:46 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (8cbb7b131)
- lib-mail, global: message_parser_init*() - Convert flags to settings
- structure
+ lmtp: lmtp-proxy - Wait for client connection login before submitting RCPT
+ command.
+ This allows evaluating the server capabilities while composing the RCPT
+ command.
-M src/doveadm/doveadm-mail-fetch.c
-M src/lib-imap/test-imap-bodystructure.c
-M src/lib-imap/test-imap-envelope.c
-M src/lib-mail/istream-attachment-extractor.c
-M src/lib-mail/istream-binary-converter.c
-M src/lib-mail/message-parser-from-parts.c
-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/message-search.c
-M src/lib-mail/message-snippet.c
-M src/lib-mail/test-message-decoder.c
-M src/lib-mail/test-message-parser.c
-M src/lib-mail/test-message-part.c
-M src/lib-storage/index/index-mail-headers.c
-M src/plugins/fts/fts-build-mail.c
+M src/lmtp/lmtp-proxy.c
-2020-04-23 15:00:57 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b87a98705)
+2020-05-01 17:25:27 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4289df785)
- lib-mail: message-parser - Don't use memory pool for parser
+ lmtp: lmtp-proxy - Make LMTP connection object available in proxy connection
+ struct.
- This reduces memory usage when parsing many MIME parts where boundaries are
- being added and removed constantly.
-M src/lib-mail/message-parser-private.h
-M src/lib-mail/message-parser.c
+M src/lmtp/lmtp-proxy.c
-2020-04-23 14:53:27 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (bfba2a503)
+2020-05-02 00:05:06 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2c9a0e54d)
- lib-mail: message-parser - Add boundary_remove_until() helper function
+ lmtp: lmtp-client - Base client trust on the real remote IP.
+ LMTP uses real_remote_ip for checking the trust. This means:
+ * LMTP proxy checks MTA's IP address
+ * LMTP backend checks LMTP proxy's IP address
+ * If haproxy is used in front of this LMTP server, the haproxy's IP address
+ is
+ checked. This may not be what is always wanted, but in LMTP backend it
+ wouldn't be correct to check the original client IP (= MTA IP) either.
-M src/lib-mail/message-parser.c
+M src/lmtp/lmtp-client.c
-2020-04-23 13:06:02 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (5b8ec27fa)
+2020-04-26 11:02:47 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (5e11257b8)
- lib-mail: message-parser - Optimize boundary lookups when exact boundary is
- found
+ lib-storage: mail-storage-service - Add support for sending forward_fields
+ in userdb lookup.
- When an exact boundary is found, there's no need to continue looking for
- more boundaries.
-M src/lib-mail/message-parser.c
+M src/lib-storage/mail-storage-service.c
+M src/lib-storage/mail-storage-service.h
-2020-04-23 12:53:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (2e60deb68)
+2020-04-26 10:57:57 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (91dfc5231)
- lib-mail: message-parser - Truncate excessively long MIME boundaries
+ lib-auth: auth-master - Add support for sending forward_fields.
- RFC 2046 requires that the boundaries are a maximum of 70 characters
- (excluding the "--" prefix and suffix). We allow 80 characters for a bit of
- extra safety. Anything longer than that is truncated and treated the same as
- if it was just 80 characters.
-M src/lib-mail/message-parser-private.h
-M src/lib-mail/message-parser.c
-M src/lib-mail/test-message-parser.c
+M src/lib-auth/auth-master.c
+M src/lib-auth/auth-master.h
-2020-04-23 12:10:07 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (14633032c)
+2020-04-30 23:57:41 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d2a8e4e2e)
- lib-mail: message-parser - Minor code cleanup to finding the end of boundary
- line
+ lib-smtp: smtp-client-connection - Allow smtp_client_connection_connect() to
+ be called several times.
+ This change allows calling smtp_client_connection_connect() several times
+ with different login callbacks. If the connection is already available, the
+ provided login callback is called almost immediately from the ioloop. This
+ way, several parallel asynchronous activities using the same connection can
+ wait for its availability and don't need to check whether it is available
+ already. This is mostly useful to obtain the capabilities of the server.
-M src/lib-mail/message-parser.c
+M src/lib-smtp/smtp-client-connection.c
+M src/lib-smtp/smtp-client-private.h
-2020-04-23 12:00:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (211345b4a)
+2020-05-01 13:02:57 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (05828ad2c)
- lib-mail: message-parser - Optimize appending new part to linked list
+ lib-smtp: smtp-client-connection - Record login reply.
-M src/lib-mail/message-parser-private.h
-M src/lib-mail/message-parser.c
+M src/lib-smtp/smtp-client-connection.c
+M src/lib-smtp/smtp-client-private.h
-2020-04-23 11:36:48 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (238c80121)
+2020-04-22 02:27:05 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d0fb4283e)
- lib-mail: message-parser - Optimize updating children_count
+ lib-smtp: smtp-params - Add support for xtext-encoding/decoding extra
+ parameters.
-M src/lib-mail/message-parser.c
+M src/lib-smtp/smtp-params.c
+M src/lib-smtp/smtp-params.h
-2020-04-23 11:34:22 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (41de7289f)
+2020-04-22 23:24:21 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dc3de4665)
- lib-mail: message-parser - Change message_part_append() to do all work
- internally
+ lib-smtp: smtp-params - Split off smtp_params_equal() from
+ smtp_params_rcpt_equal().
-M src/lib-mail/message-parser.c
+M src/lib-smtp/smtp-params.c
+M src/lib-smtp/smtp-params.h
-2020-04-23 11:33:31 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (13f93dbe5)
+2020-04-22 23:03:57 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b9797261b)
- lib-mail: message-parser - Add a message_part_finish() helper function
+ lib-smtp: smtp-params - Remove code duplication between
+ smtp_params_*_write().
-M src/lib-mail/message-parser.c
+M src/lib-smtp/smtp-params.c
-2020-04-23 11:47:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (06beaf303)
+2020-04-22 22:55:54 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (8ec6e1101)
- lib-mail: Move message_parser_init_from_parts() handling to its own file
+ lib-smtp: smtp-params - Remove code duplication between
+ smtp_params_*_copy().
- This helps to see what code they have in common.
-M src/lib-mail/Makefile.am
-A src/lib-mail/message-parser-from-parts.c
-A src/lib-mail/message-parser-private.h
-M src/lib-mail/message-parser.c
+M src/lib-smtp/smtp-params.c
+M src/lib-smtp/smtp-params.h
-2020-04-23 11:27:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (084e788bc)
+2020-04-22 22:32:55 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c86fd10a1)
- lib-mail: test-message-parser - Test that children_count is correct
+ lib-smtp: smtp-params - Remove code duplication between
+ smtp_params_*_drop_extra().
-M src/lib-mail/test-message-parser.c
+M src/lib-smtp/smtp-params.c
+M src/lib-smtp/smtp-params.h
-2020-04-23 11:14:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c86612dd8)
+2020-04-22 22:26:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6f68a5d76)
- lib-mail: test-message-parser - Add another test for boundary matching
+ lib-smtp: smtp-params - Remove code duplication between
+ smtp_params_*_add_extra().
-M src/lib-mail/test-message-parser.c
+M src/lib-smtp/smtp-params.c
+M src/lib-smtp/smtp-params.h
+
+2020-04-22 22:15:43 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (583042648)
+
+ lib-smtp: smtp-params - Remove code duplication between
+ smtp_params_*_get_extra().
+
+
+M src/lib-smtp/smtp-params.c
+M src/lib-smtp/smtp-params.h
+
+2020-04-22 21:52:14 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4a2bfa7b9)
+
+ lib-smtp: smtp-syntax - Add smtp_xtext_decode().
+
+
+M src/lib-smtp/smtp-syntax.c
+M src/lib-smtp/smtp-syntax.h
+
+2020-04-27 11:50:13 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2f205f294)
+
+ lib-smtp: smtp-params - Rename smtp_params_rcpt_equals() to
+ smtp_params_rcpt_equal().
+
+
+M src/lib-smtp/smtp-params.c
+M src/lib-smtp/smtp-params.h
+M src/lib-smtp/smtp-server-transaction.c
+
+2020-05-01 17:25:05 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a077472e5)
+
+ lmpt: Reformat lmtp-proxy.c.
+
+
+M src/lmtp/lmtp-proxy.c
+
+2020-05-01 17:24:47 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (11b8a9512)
+
+ lmtp: Reformat lmtp-commands.c.
+
+
+M src/lmtp/lmtp-commands.c
+
+2020-05-04 22:25:47 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (55b083e48)
+
+ lmtp: Reformat lmtp-client.c.
+
+
+M src/lmtp/lmtp-client.c
+
+2020-05-02 02:34:34 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (210e9058f)
+
+ lib-smtp: Reformat smtp-client-connection.h.
+
+
+M src/lib-smtp/smtp-client-connection.h
+
+2020-05-01 17:16:01 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (45689522b)
-2020-05-19 19:11:34 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (df41bcfc5)
+ lib-smtp: Reformat smtp-client-connection.c.
+
+
+M src/lib-smtp/smtp-client-connection.c
+
+2020-05-19 19:11:34 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (2507d5576)
lib-storage: mail_search_args_init() - Expand "*" in SEARCH_SEQSET
@@ -573,7 +5807,7 @@ M src/lib-mail/test-message-parser.c
M src/lib-storage/mail-search.c
M src/lib-storage/mail-search.h
-2020-05-19 18:31:31 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1c06386a9)
+2020-05-19 18:31:31 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6a378e6f5)
imap: imap_search_seqset_iter_next() - Assert-crash if iteration doesn't
progress
@@ -584,14 +5818,14 @@ M src/lib-storage/mail-search.h
M src/imap/imap-search-args.c
-2020-05-19 19:10:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8069b7cc8)
+2020-05-19 19:10:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (947774f89)
lib: Add unit test for seq_range_array_remove_range()
M src/lib/test-seq-range-array.c
-2020-05-18 12:01:44 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (8f5de1339)
+2020-05-18 12:01:44 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3c9a50165)
lib-storage: mail_search_args_init() - Fix converting UIDSET * to SEQSET on
empty mailbox
@@ -608,34 +5842,1400 @@ M src/lib/test-seq-range-array.c
M src/lib-storage/mail-search.c
-2020-05-18 13:08:45 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (98c39fd63)
+2020-04-11 19:19:41 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b8116a9c4)
- auth: test-mech - Add tests for RPA and NTLM bug
+ lib-imap-client: test-imapc-client - Use the new sub-process test API.
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
-M src/auth/test-mech.c
+M src/lib-imap-client/test-imapc-client.c
-2020-05-18 12:33:39 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (1c6405d30)
+2020-04-11 18:54:06 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (e1c5779d8)
- lib-ntlm: Check buffer length on responses
+ lib-imap-client: test-imapc-client - Add server debug messages.
- Add missing check for buffer length.
- If this is not checked, it is possible to send message which causes read
- past buffer bug.
+M src/lib-imap-client/test-imapc-client.c
- Broken in c7480644202e5451fbed448508ea29a25cffc99c
+2020-04-11 13:44:45 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (077e4752d)
-M src/lib-ntlm/ntlm-message.c
+ lib-imap-client: test-imapc-client - Split off test_run_server/client() from
+ test_run_client_server().
-2020-05-06 13:40:36 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (bd9d2fe7d)
- auth: mech-rpa - Fail on zero len buffer
+M src/lib-imap-client/test-imapc-client.c
+2020-04-11 12:28:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7de3f7478)
-M src/auth/mech-rpa.c
+ lib-imap-client: test-imapc-client - Add log prefixes to distinguish client
+ and server debug messages.
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-11 10:02:12 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2a3f08a3f)
+
+ lib-imap-client: test-imapc-client - Make sure the child server process is
+ killed.
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-11 10:05:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1eeb82953)
+
+ lib-imap-client: test-imapc-client - Use getopt() for parsing command line
+ arguments.
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-11 10:00:32 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c93c1cdde)
+
+ lib-imap-client: test-imapc-client - Add structural comments.
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-11 09:30:29 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ad73b51c0)
+
+ lib-imap-client: test-imapc-client - Move client functions.
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-13 18:49:12 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dfe0bdb29)
+
+ lib-imap-client: test-imapc-client - Move server functions.
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-11 09:27:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7af50c6dd)
+
+ lib-imap-client: test-imapc-client - Move test_open_server_fd().
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-11 13:27:58 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c4e2843bb)
+
+ lib-imap-client: Reformat test-imapc-client.c.
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-12 11:51:31 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (cf04833d7)
+
+ lib-imap-client: Remove unnecessary "Authentication failed: disconnected"
+ errors
+
+ If connection failed during login, there were always two log lines logged.
+ The first line is enough.
+
+M src/lib-imap-client/imapc-connection.c
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-12 11:34:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c91b90ccc)
+
+ lib-imap-client: test-imapc-client - Client now sends LOGOUT and server
+ expects it
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-12 11:30:28 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b64215b17)
+
+ lib-imap-client: test-imapc-client - login_hangs: Client stopped too early
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-12 11:29:06 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e00a29ea4)
+
+ lib-imap-client: test-imapc-client - login_hangs: Server checked wrong
+ connection's input
+
+
+M src/lib-imap-client/test-imapc-client.c
+
+2020-04-11 00:47:21 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (e37370c0e)
+
+ master: test-master-login-auth - Use the new sub-process test API.
+
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/master/test-master-login-auth.c
+
+2020-04-11 13:51:49 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4f0b28f3f)
+
+ master: test-master-login-auth - Split off test_run_server/client() from
+ test_run_client_server().
+
+
+M src/master/test-master-login-auth.c
+
+2020-04-11 00:40:19 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d7251f0f6)
+
+ master: test-master-login-auth - Rename test_server_kill() to
+ test_servers_kill_forced().
+
+
+M src/master/test-master-login-auth.c
+
+2020-04-11 00:38:26 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b0692354a)
+
+ master: test-master-login-auth - Move global initialization to
+ main_init/deinit().
+
+
+M src/master/test-master-login-auth.c
+
+2020-04-11 00:32:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (296c8cba3)
+
+ master: test-master-login-auth - Avoid using sleep()/usleep().
+
+
+M src/master/test-master-login-auth.c
+
+2020-04-13 18:41:37 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (5b2effd70)
+
+ master: test-master-login-auth - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/master/test-master-login-auth.c
+
+2020-04-11 00:29:42 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2de5a76c6)
+
+ master: test-master-login-auth - Ignore SIGPIPE.
+
+
+M src/master/test-master-login-auth.c
+
+2020-04-13 18:33:08 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (e8af3c18a)
+
+ master: test-master-login-auth - Don't ignore SIGCHLD.
+
+
+M src/master/test-master-login-auth.c
+
+2020-04-11 00:26:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6aaa25c6a)
+
+ master: test-master-login-auth - Add log prefixes to distinguish client and
+ server debug messages.
+
+
+M src/master/test-master-login-auth.c
+
+2020-04-11 00:18:08 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (de695e729)
+
+ master: test-auth-master - Use the new sub-process test API.
+
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/master/test-auth-master.c
+
+2020-04-11 00:11:09 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a66f5b0fb)
+
+ master: test-auth-master - Split off test_run_server/client() from
+ test_run_client_server().
+
+
+M src/master/test-auth-master.c
+
+2020-04-11 00:04:32 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (af91b2644)
+
+ master: test-auth-master - Rename test_server_kill() to
+ test_servers_kill_forced().
+
+
+M src/master/test-auth-master.c
+
+2020-04-11 00:02:17 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4d1c6c0a6)
+
+ master: test-auth-master - Move global initialization to main_init/deinit().
+
+
+M src/master/test-auth-master.c
+
+2020-04-10 23:56:56 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (3408f3893)
+
+ master: test-auth-master - Avoid using sleep()/usleep().
+
+
+M src/master/test-auth-master.c
+
+2020-04-13 18:39:56 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (62d0a3410)
+
+ master: test-auth-master - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/master/test-auth-master.c
+
+2020-04-10 23:54:29 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (9a80c1fe6)
+
+ master: test-auth-master - Ignore SIGPIPE.
+
+
+M src/master/test-auth-master.c
+
+2020-04-13 18:30:54 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0e4019e25)
+
+ master: test-auth-master - Don't ignore SIGCHLD.
+
+
+M src/master/test-auth-master.c
+
+2020-04-10 23:52:20 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b1e2a6537)
+
+ master: test-auth-master - Add log prefixes to distinguish client and server
+ debug messages.
+
+
+M src/master/test-auth-master.c
+
+2020-04-10 23:43:07 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (bb2da34c4)
+
+ master: test-auth-client - Use the new sub-process test API.
+
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/master/test-auth-client.c
+
+2020-04-10 22:17:05 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1c40aa494)
+
+ master: test-auth-client - Split off test_run_server/client() from
+ test_run_client_server().
+
+
+M src/master/test-auth-client.c
+
+2020-04-10 22:07:48 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (676a4ea66)
+
+ master: test-auth-client - Rename test_server_kill() to
+ test_servers_kill_forced().
+
+
+M src/master/test-auth-client.c
+
+2020-04-10 21:59:47 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dab562f59)
+
+ master: test-auth-client - Move global initialization to main_init/deinit().
+
+
+M src/master/test-auth-client.c
+
+2020-04-10 21:53:06 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (03c5dbbd4)
+
+ master: test-auth-client - Avoid using sleep()/usleep().
+
+
+M src/master/test-auth-client.c
+
+2020-04-13 18:37:55 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (f1c60f48e)
+
+ master: test-auth-client - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/master/test-auth-client.c
+
+2020-04-10 21:50:16 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (581b5c0bc)
+
+ master: test-auth-client - Ignore SIGPIPE.
+
+
+M src/master/test-auth-client.c
+
+2020-04-13 18:28:19 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2819e392b)
+
+ master: test-auth-client - Don't ignore SIGCHLD.
+
+
+M src/master/test-auth-client.c
+
+2020-04-10 21:48:11 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (bd579b102)
+
+ master: test-auth-client - Add log prefixes to distinguish client and server
+ debug messages.
+
+
+M src/master/test-auth-client.c
+
+2020-04-11 12:58:10 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (205f5cbf7)
+
+ master: Reformat test-master-login-auth.c.
+
+
+M src/master/test-master-login-auth.c
+
+2020-04-11 12:53:40 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b4ee4d3cd)
+
+ master: Reformat test-auth-master.c.
+
+
+M src/master/test-auth-master.c
+
+2020-04-11 12:42:58 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6e4d82c68)
+
+ master: Reformat test-auth-client.c.
+
+
+M src/master/test-auth-client.c
+
+2020-05-14 16:05:00 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0890ee488)
+
+ lib-smtp: test-smtp-submit - Use the new sub-process test API.
+
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-09 16:47:45 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (aba5f64ee)
+
+ lib-smtp: test-smtp-submit - Split off test_run_server/client() from
+ test_run_client_server().
+
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-09 11:05:10 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (990e82006)
+
+ lib-smtp: test-smtp-submit - Rename test_servers_kill_all() to
+ test_servers_kill_forced().
+
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-09 10:53:40 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7c9599e3d)
+
+ lib-smtp: test-smtp-submit - Move global initialization to
+ main_init/deinit().
+
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-09 10:56:07 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1dc769d5b)
+
+ lib-smtp: test-smtp-submit - Avoid using sleep().
+
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-13 17:52:09 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (96f1ef150)
+
+ lib-smtp: test-smtp-submit - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-09 10:40:23 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a1669c00a)
+
+ lib-smtp: test-smtp-submit - Ignore SIGPIPE.
+
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-13 17:45:55 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (9cb98b69c)
+
+ lib-smtp: test-smtp-submit - Don't ignore SIGCHLD.
+
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-09 10:37:28 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (945ce4e15)
+
+ lib-smtp: test-smtp-submit - Add log prefixes to distinguish client and
+ server debug messages.
+
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-09 00:57:15 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (856440da7)
+
+ lib-smtp: test-smtp-server-errors - Use the new sub-process test API.
+
+ This makes an effort to terminate client processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-09 00:30:11 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (99f3dc5ae)
+
+ lib-smtp: test-smtp-server-errors - Split off test_run_client/server() from
+ test_run_client_server().
+
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-09 00:23:46 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (f37980b70)
+
+ lib-smtp: test-smtp-server-errors - Rename test_clients_kill_all() to
+ test_clients_kill_forced().
+
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-09 10:50:03 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (eb954e32b)
+
+ lib-smtp: test-smtp-server-errors - Move global initialization to
+ main_init/deinit().
+
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-09 00:18:32 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (fe2c2c6b4)
+
+ lib-smtp: test-smtp-server-errors - Fix name of client_connection_deinit().
+
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-13 15:40:23 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7afecadf1)
+
+ lib-smtp: test-smtp-server-errors - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-09 00:16:54 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ecf3cca0f)
+
+ lib-smtp: test-smtp-server-errors - Ignore SIGPIPE.
+
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-13 15:15:34 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6b5e76662)
+
+ lib-smtp: test-smtp-server-errors - Remove useless child signal handler.
+
+ Restructure code to better match equivalent unit tests.
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-09 00:15:24 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (cf5d484a5)
+
+ lib-smtp: test-smtp-server-errors - Adjust log prefix code to match other
+ similar unit tests.
+
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-08 23:49:31 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6e29b5829)
+
+ lib-smtp: test-smtp-client-errors - Use the new sub-process test API.
+
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-08 22:37:59 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (fc19d780f)
+
+ lib-smtp: test-smtp-client-errors - Split off test_run_server/dns/client()
+ from test_run_client_server().
+
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-08 22:27:46 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ac4ce94d6)
+
+ lib-smtp: test-smtp-client-errors - Rename test_servers_kill_all() to
+ test_servers_kill_forced().
+
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-08 22:24:47 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (74afe6d2a)
+
+ lib-smtp: test-smtp-client-errors - Move global initialization to
+ main_init/deinit().
+
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-08 21:10:08 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d82f9ec0b)
+
+ lib-smtp: test-smtp-client-errors - Avoid using sleep().
+
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-13 14:18:05 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a9c1ea5fa)
+
+ lib-smtp: test-smtp-client-errors - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-08 21:04:32 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (462d42a28)
+
+ lib-smtp: test-smtp-client-errors - Generally ignore SIGPIPE.
+
+ Remove per-process code that achieves the same.
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-13 14:12:25 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (950da3273)
+
+ lib-smtp: test-smtp-client-errors - Don't ignore SIGCHLD.
+
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-13 14:44:31 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (74c1251a6)
+
+ lib-smtp: test-smtp-client-errors - Turn server-side payload read error into
+ a debug message.
+
+ This can readily occur during tests and must not issue a real error message.
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-08 21:02:18 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (735b90a5e)
+
+ lib-smtp: test-smtp-client-errors - Add log prefixes to distinguish client
+ and server debug messages.
+
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-05 02:40:33 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (3343d5e11)
+
+ lib-smtp: test-smtp-payload - Use the new sub-process test API.
+
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-08 00:04:05 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (08fefcfff)
+
+ lib-smtp: test-smtp-payload - Split off test_run_client/server() from
+ test_run_client_server().
+
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-07 23:48:44 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (3f02f6ea9)
+
+ lib-smtp: test-smtp-payload - Adjust log prefix code to match other similar
+ unit tests.
+
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-05 02:34:29 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (81be5e7e6)
+
+ lib-smtp: test-smtp-payload - Rename test_server_kill() to
+ test_server_kill_forced().
+
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-05 02:32:48 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (671854cfc)
+
+ lib-smtp: test-smtp-payload - Move global initialization to
+ main_init/deinit().
+
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-05 02:25:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0fa20bd85)
+
+ lib-smtp: test-smtp-payload - Call test_files_init/deinit() in
+ test_run_client_server().
+
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-13 13:28:51 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (75305000a)
+
+ lib-smtp: test-smtp-payload - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-13 13:26:04 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (04097a659)
+
+ lib-smtp: test-smtp-payload - Properly exit child process.
+
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-13 13:23:15 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (13d7680f2)
+
+ lib-smtp: test-smtp-payload - Don't ignore SIGCHLD.
+
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-04-10 17:30:51 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (eebbe6f4b)
+
+ lib-master: master-service - Add master_service_deinit_forked().
+
+
+M src/lib-master/master-service.c
+M src/lib-master/master-service.h
+
+2020-05-25 17:16:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7fa64eb16)
+
+ lib-smtp: test-smtp-server-errors - Fix "many bad commands" test.
+
+ It didn't properly handle the two parallel connections. Removed a useless
+ context struct definition. Modified debug message for easier debugging.
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-09 01:33:22 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (3c00c3590)
+
+ lib-smtp: Reformat test-smtp-submit.c.
+
+
+M src/lib-smtp/test-smtp-submit.c
+
+2020-04-09 00:07:36 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (f22c6c300)
+
+ lib-smtp: Reformat test-smtp-server-errors.c.
+
+
+M src/lib-smtp/test-smtp-server-errors.c
+
+2020-04-08 22:05:57 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (10667b6a9)
+
+ lib-smtp: Reformat test-smtp-client-errors.c.
+
+
+M src/lib-smtp/test-smtp-client-errors.c
+
+2020-04-05 02:22:50 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c8e707ebe)
+
+ lib-smtp: Reformat test-smtp-payload.c.
+
+
+M src/lib-smtp/test-smtp-payload.c
+
+2020-05-23 00:36:48 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (647188820)
+
+ lib-program-client: test-program-client-local - Add test for running client
+ without I/O or timeouts.
+
+
+M src/lib-program-client/test-program-client-local.c
+
+2019-02-21 02:37:41 +0100 Stephan Bosch <stephan.bosch@dovecot.fi> (be38004f7)
+
+ lib: child-wait - Mark the SIGCHLD handler as expected when waiting for
+ child.
+
+ This alows waiting for a child to be the only activity on the ioloop.
+
+M src/lib/child-wait.c
+
+2019-02-21 02:34:54 +0100 Stephan Bosch <stephan.bosch@dovecot.fi> (d39b532db)
+
+ lib: lib-signals - Implement lib_signals_set_expected().
+
+ This is a promise that the indicated delayed signal will occur eventually,
+ so that the associated ioloop will eventually terminate. This allows the
+ lib-signal io to be alone on the ioloop.
+
+M src/lib/lib-signals.c
+M src/lib/lib-signals.h
+
+2019-02-21 02:40:36 +0100 Stephan Bosch <stephan.bosch@dovecot.fi> (349029952)
+
+ lib-program-client: program-client-local - Restructure
+ program_client_local_disconnect().
+
+ Simplify the handling of the program timeout and improve the debug messages.
+
+M src/lib-program-client/program-client-local.c
+
+2020-05-13 15:04:45 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (9bab1a7ef)
+
+ login-proxy: Add proxy_host_immediate_failure_after=<time> passdb extra
+ field
+
+ If host has only seen connect failures for this long, stop attempting to
+ connect there (except with one connection) and instead return immediate
+ failure. This used to be hardcoded to 30 seconds, which can now be changed.
+ Most importantly 0 means that this functionality is disabled entirely.
+
+M src/login-common/client-common-auth.c
+M src/login-common/client-common.h
+M src/login-common/login-proxy.c
+M src/login-common/login-proxy.h
+
+2020-05-07 12:19:39 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (29e0ae6d4)
+
+ pop3-proxy: Add [SYS/TEMP] prefix to temporary login failures
+
+
+M src/pop3-login/pop3-proxy.c
+
+2020-05-06 20:05:02 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (4a35f8047)
+
+ login-proxy: Support retrying reconnection on temporary authentication
+ failures
+
+
+M src/imap-login/imap-proxy.c
+M src/login-common/client-common-auth.c
+M src/login-common/login-proxy.c
+M src/login-common/login-proxy.h
+M src/pop3-login/pop3-proxy.c
+M src/submission-login/submission-proxy.c
+
+2020-05-07 12:58:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b4bfd8ab6)
+
+ submission-proxy: Add asserts to clarify pending_auth's lifetime
+
+
+M src/submission-login/submission-proxy.c
+
+2020-05-06 21:31:43 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (0c2374054)
+
+ submission-proxy: Fix internal authentication failure response code
+
+
+M src/submission-login/submission-proxy.c
+
+2020-05-06 20:21:15 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a1acd71cf)
+
+ *-login: Change proxy_error() API to proxy_failed() API
+
+ The protocol-specific code is now able to control better what kind of a
+ reply is sent to client on proxying failure.
+
+M src/imap-login/imap-login-client.c
+M src/imap-login/imap-proxy.c
+M src/imap-login/imap-proxy.h
+M src/login-common/client-common-auth.c
+M src/login-common/client-common.h
+M src/login-common/login-proxy.h
+M src/pop3-login/client.c
+M src/pop3-login/pop3-proxy.c
+M src/pop3-login/pop3-proxy.h
+M src/submission-login/client.c
+M src/submission-login/submission-proxy.c
+M src/submission-login/submission-proxy.h
+
+2020-05-03 22:28:15 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (d6887ccf3)
+
+ login-proxy: client_proxy_failed() - Move line sending to caller
+
+
+M src/login-common/client-common-auth.c
+
+2020-05-03 22:24:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e31342895)
+
+ login-proxy: Support reconnecting on most types of failures
+
+
+M src/login-common/client-common-auth.c
+M src/login-common/login-proxy.c
+M src/login-common/login-proxy.h
+
+2020-05-06 16:26:34 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3e251ae84)
+
+ *-login: Remove redundant/early freeing of proxy_password
+
+ The login-common code already does this after the proxying has failed or
+ succeeded. Having these duplicate frees immediately after sending the
+ password isn't all that useful, and most importantly they make it impossible
+ to reconnect after the password has been sent.
+
+M src/imap-login/imap-proxy.c
+M src/pop3-login/pop3-proxy.c
+M src/submission-login/submission-proxy.c
+
+2020-05-06 16:52:24 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e7880953d)
+
+ imap-login: Don't use proxy_password for checking if authentication is still
+ needed
+
+ Required for the next commit.
+
+M src/imap-login/imap-proxy.c
+
+2020-05-06 16:13:43 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (29abe35e3)
+
+ login-proxy: Don't reconnect anymore when timeout is too close
+
+
+M src/login-common/login-proxy.c
+
+2020-05-03 22:05:39 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (025a8c836)
+
+ login-proxy: Log auth failures centrally in login_proxy_failed()
+
+
+M src/imap-login/imap-proxy.c
+M src/login-common/login-proxy.c
+M src/pop3-login/pop3-proxy.c
+M src/submission-login/submission-proxy.c
+
+2020-04-29 12:51:52 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f61c5da81)
+
+ login-proxy: Support reconnecting also when connect() immediately fails
+
+ This can happen when connecting to localhost.
+
+M src/login-common/login-proxy.c
+
+2020-04-29 15:23:05 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6398fb241)
+
+ login-proxy: Change client_proxy_failed() to be static
+
+ The other client_proxy_*_failed() should be used instead.
+
+M src/login-common/client-common-auth.c
+M src/login-common/client-common.h
+
+2020-04-30 12:23:11 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (583a4d846)
+
+ login-proxy: Don't call input_callback on destroy
+
+ All the failure code paths now call failure_callback instead.
+
+M src/login-common/client-common-auth.c
+M src/login-common/login-proxy.c
+
+2020-05-03 18:41:58 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (9940fda5d)
+
+ login-proxy: login_proxy_new() - Call login_proxy_failed() also when
+ returning -1
+
+ This also changes login_proxy_new() to internally send the failure message
+ to client, so caller doesn't have to do it.
+
+M src/login-common/client-common-auth.c
+M src/login-common/login-proxy.c
+
+2020-05-03 18:35:57 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (e3aa7687d)
+
+ login-proxy: Replace e_error()+client_proxy_failed() calls with
+ login_proxy_failed()
+
+ The event parameter for login_proxy_failed() allows creating named events
+ using passthrough events, but for now there aren't any named events.
+
+M src/imap-login/imap-proxy.c
+M src/login-common/client-common-auth.c
+M src/login-common/login-proxy.c
+M src/pop3-login/pop3-proxy.c
+M src/submission-login/submission-proxy.c
+
+2020-04-29 13:40:17 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (a32a10cf6)
+
+ login-proxy: Handle auth failures with login_proxy_failed()
+
+
+M src/imap-login/imap-proxy.c
+M src/login-common/client-common-auth.c
+M src/pop3-login/pop3-proxy.c
+M src/submission-login/submission-proxy.c
+
+2020-04-30 12:20:15 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (da9528170)
+
+ login-proxy: login_proxy_connect() - Call login_proxy_free() internally
+
+
+M src/login-common/login-proxy.c
+
+2020-05-03 17:42:29 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1091b6f06)
+
+ login-proxy: login_proxy_new() - Add failure callback
+
+
+M src/login-common/client-common-auth.c
+M src/login-common/login-proxy.c
+M src/login-common/login-proxy.h
+
+2020-05-03 17:30:23 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (28e0b86d0)
+
+ login-proxy: Rename proxy_callback_t to login_proxy_input_callback_t
+
+
+M src/login-common/login-proxy.c
+M src/login-common/login-proxy.h
+
+2020-05-03 17:08:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3a699c24e)
+
+ login-proxy: proxy_log_connect_error() - Move the actual logging to callers
+
+
+M src/login-common/login-proxy.c
+
+2020-04-29 15:18:55 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7df003190)
+
+ login-proxy: login_proxy_starttls() - destroy proxy internally on failure
+
+
+M src/imap-login/imap-proxy.c
+M src/login-common/login-proxy.c
+M src/pop3-login/pop3-proxy.c
+M src/submission-login/submission-proxy.c
+
+2020-04-29 16:14:06 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (42878bf25)
+
+ submission-login: proxy - Change impossible code path to assert
+
+
+M src/submission-login/submission-proxy.c
+
+2020-04-29 13:55:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (517e8bac3)
+
+ pop3-login: Move client_proxy_failed() calls next to error logging
+
+
+M src/pop3-login/pop3-proxy.c
+
+2020-04-29 13:55:42 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1e69b9825)
+
+ submission-login: proxy - Some code paths were missing client_proxy_failed()
+ calls
+
+ Move client_proxy_failed() calls right next to the error logging so it's
+ clearer where they are needed.
+
+M src/submission-login/submission-proxy.c
+
+2020-04-29 13:51:03 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (f763dc363)
+
+ imap-login: proxy - Some code paths were missing client_proxy_failed() calls
+
+ Move client_proxy_failed() calls right next to the error logging so it's
+ clearer where they are needed.
+
+M src/imap-login/imap-proxy.c
+
+2020-04-29 12:52:38 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (3ab5798b5)
+
+ login-proxy: Improve logging for successful logins
+
+ Include how long it took to do the login and how many reconnects.
+
+M src/login-common/client-common-auth.c
+M src/login-common/login-proxy.c
+M src/login-common/login-proxy.h
+
+2020-04-30 18:10:44 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6b864fb28)
+
+ login-proxy: Connect timeout error handling should be the same as elsewhere
+
+
+M src/login-common/login-proxy.c
+
+2020-04-29 12:14:57 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (95d70b58f)
+
+ login-proxy: Split off proxy_connect_failed()
+
+ The bool return value will be used in a later commit.
+
+M src/login-common/login-proxy.c
+
+2020-04-29 11:49:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7244aab52)
+
+ login-proxy: Log a debug message whenever reconnecting after connect failure
+
+
+M src/login-common/login-proxy.c
+
+2020-04-24 15:34:43 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (77f66dbb3)
+
+ login-proxy: Parse proxy_timeout passdb extra field as milliseconds string
+
+ If it's a number, it's still parsed as number of seconds for backwards
+ compatibility. Otherwise it supports parsing given time unit, including
+ milliseconds.
+
+M src/login-common/client-common-auth.c
+
+2020-05-06 16:18:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (c729f548d)
+
+ login-proxy: Add login_proxy_max_reconnects setting
+
+
+M src/login-common/login-proxy.c
+M src/login-common/login-settings.c
+M src/login-common/login-settings.h
+
+2020-04-24 15:17:06 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (0764acda6)
+
+ login-proxy: Add login_proxy_timeout setting
+
+ This can be used to overwrite the default 30 seconds. It's still possible to
+ overwrite this from "proxy_timeout" passdb extra field.
+
+M src/login-common/client-common-auth.c
+M src/login-common/login-settings.c
+M src/login-common/login-settings.h
+
+2020-04-29 15:15:27 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (be74825ab)
+
+ login-proxy: client_proxy_failed() - minor code cleanup
+
+ The comment wasn't true anymore.
+
+M src/login-common/client-common-auth.c
+
+2020-05-03 17:16:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (5a6af33a8)
+
+ login-proxy: proxy_fail_connect() - Add assert
+
+
+M src/login-common/login-proxy.c
+
+2020-05-03 17:02:34 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6ae17002c)
+
+ login-proxy: Fix crash when proxy TTL reaches zero
+
+ The event was being unreferenced too many times.
+
+M src/login-common/login-proxy.c
+
+2020-04-06 22:28:49 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (111c26a97)
+
+ lib-http: test-http-server-errors - Use the new sub-process test API.
+
+ This makes an effort to terminate client processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/lib-http/test-http-server-errors.c
+
+2020-04-07 00:49:23 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (32a8154df)
+
+ lib-http: test-http-server-errors - Split off test_run_client/server() from
+ test_run_client_server().
+
+
+M src/lib-http/test-http-server-errors.c
+
+2020-04-06 21:59:55 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (69eb607fe)
+
+ lib-http: test-http-server-errors - Rename test_clients_kill_all() to
+ test_clients_kill_forced().
+
+
+M src/lib-http/test-http-server-errors.c
+
+2020-04-06 21:57:50 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1efda32fa)
+
+ lib-http: test-http-server-errors - Move global initialization to
+ main_init/deinit().
+
+
+M src/lib-http/test-http-server-errors.c
+
+2020-04-13 12:55:57 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d4a966463)
+
+ lib-http: test-http-server-errors - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/lib-http/test-http-server-errors.c
+
+2020-04-13 12:45:34 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (5849b2258)
+
+ lib-http: test-http-server-errors - Don't ignore SIGCHLD.
+
+
+M src/lib-http/test-http-server-errors.c
+
+2019-11-11 23:37:01 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (9572e7781)
+
+ lib-http: test-http-server-errors - Adjust log prefix code to match other
+ similar unit tests.
+
+
+M src/lib-http/test-http-server-errors.c
+
+2020-04-07 00:14:40 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a043064ba)
+
+ lib-http: test-http-client-errors - Use the new sub-process test API.
+
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-07 00:55:36 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (26145848e)
+
+ lib-http: test-http-client-errors - Split off test_run_server/dns/client()
+ from test_run_client_server().
+
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-06 23:34:10 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (9dffb2839)
+
+ lib-http: test-http-client-errors - Rename test_servers_kill_all() to
+ test_servers_kill_forced().
+
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-06 23:33:02 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (27ec48ad1)
+
+ lib-http: test-http-client-errors - Move global initialization to
+ main_init/deinit().
+
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-07 00:22:13 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d61314a1b)
+
+ lib-http: test-http-client-errors - Avoid using sleep().
+
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-13 12:21:00 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4a17eb040)
+
+ lib-http: test-http-client-errors - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-07 00:18:43 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (8c5d727da)
+
+ lib-http: test-http-client-errors - Ignore SIGPIPE.
+
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-13 12:01:28 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (3963cb66c)
+
+ lib-http: test-http-client-errors - Don't ignore SIGCHLD.
+
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-07 00:17:59 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7fd859769)
+
+ lib-http: test-http-client-errors - Add log prefixes to distinguish client
+ and server debug messages.
+
+
+M src/lib-http/test-http-client-errors.c
+
+2020-04-03 21:14:48 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a0b510c86)
+
+ lib-http: test-http-payload - Use the new sub-process test API.
+
+ This makes an effort to terminate server processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/lib-http/test-http-payload.c
+
+2020-04-07 03:07:58 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (afe749a69)
+
+ lib-http: test-http-payload - Split off test_run_client/server() from
+ test_run_client_server().
+
+
+M src/lib-http/test-http-payload.c
+
+2020-04-07 03:18:33 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (37d14476b)
+
+ lib-http: test-http-payload - Adjust log prefix code to match other similar
+ unit tests.
+
+
+M src/lib-http/test-http-payload.c
+
+2020-04-04 12:42:03 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6017da187)
+
+ lib-http: test-http-payload - Rename test_server_kill() to
+ test_server_kill_forced().
+
+
+M src/lib-http/test-http-payload.c
+
+2020-04-04 12:40:26 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a9d9ed3f9)
+
+ lib-http: test-http-payload - Move global initialization to
+ main_init/deinit().
+
+
+M src/lib-http/test-http-payload.c
+
+2020-04-03 21:46:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (962380803)
+
+ lib-http: test-http-payload - Call test_files_init/deinit() in
+ test_run_client_server().
+
+
+M src/lib-http/test-http-payload.c
+
+2020-04-12 18:12:16 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (9bc8856ce)
+
+ lib-http: test-http-payload - Use lib-signals API.
+
+ Using signal() is not portable for installing a signal handler.
+
+M src/lib-http/test-http-payload.c
+
+2020-04-12 19:16:14 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a54fcb564)
+
+ lib-http: test-http-payload - Properly exit child process.
+
+
+M src/lib-http/test-http-payload.c
+
+2020-04-12 19:13:48 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (47e3a7bed)
+
+ lib-http: test-http-payload - Don't ignore SIGCHLD.
+
+
+M src/lib-http/test-http-payload.c
+
+2020-05-04 10:20:40 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1777c3712)
+
+ lib-test: Implement test API for running sub-processes.
+
+ This makes an effort to terminate sub-processes gracefully. Killing them
+ bluntly hampers test coverage measurement and valgrind testing.
+
+M src/lib-test/Makefile.am
+A src/lib-test/test-subprocess.c
+A src/lib-test/test-subprocess.h
+
+2020-04-10 17:32:16 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7d2a15680)
+
+ lib-test: test-common - Add test_forked_end().
+
+
+M src/lib-test/test-common.c
+M src/lib-test/test-common.h
+
+2020-04-10 17:57:54 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (409989980)
+
+ m4: dovecot.m4 - Run valgrind with --error-exitcode=213 parameter in
+ generated run-test.sh.
+
+ This way, test child processes will indicate valgrind failure with exit code
+ 1000, making unit tests properly fail even though the actual test performed
+ by the child process succeeded.
+
+M m4/dovecot.m4
+
+2020-04-04 11:37:55 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a137d5a56)
+
+ Add Valgrind suppression for external problem exposed by
+ src/lib-http/test-http-payload.
+
+ There is a memory problem in OpenSSL somewhere.
+
+ Valgrind output:
+
+ ==9380== Invalid read of size 8
+ ==9380== at 0x48635A5: check_free (dlerror.c:188)
+ ==9380== by 0x4863AB1: free_key_mem (dlerror.c:221)
+ ==9380== by 0x4863AB1: __dlerror_main_freeres (dlerror.c:239)
+ ==9380== by 0x49DEB71: __libc_freeres (in
+ /lib/x86_64-linux-gnu/libc-2.28.so)
+ ==9380== by 0x482D19E: _vgnU_freeres (in
+ /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_core-amd64-linux.so)
+ ==9380== by 0x15C528: test_exit (test-common.c:389)
+ ==9380== by 0x12D522: test_run_client_server.constprop.11
+ (test-http-payload.c:1435)
+ ==9380== by 0x12D904: test_run_sequential (test-http-payload.c:1488)
+ ==9380== by 0x12E5A6: test_download_server_nonblocking
+ (test-http-payload.c:1579)
+ ==9380== by 0x15B98D: test_run_funcs (test-common.c:282)
+ ==9380== by 0x15C2D0: test_run (test-common.c:353)
+ ==9380== by 0x12C647: main (test-http-payload.c:2075)
+ ==9380== Address 0x4de7988 is 12 bytes after a block of size 12 alloc'd
+ ==9380== at 0x483577F: malloc (in
+ /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
+ ==9380== by 0x4C5C328: CRYPTO_zalloc (mem.c:230)
+ ==9380== by 0x4C5856D: ossl_init_get_thread_local (init.c:66)
+ ==9380== by 0x4C5856D: ossl_init_get_thread_local (init.c:59)
+ ==9380== by 0x4C5856D: ossl_init_thread_start (init.c:465)
+ ==9380== by 0x4C81CB9: RAND_DRBG_get0_public (drbg_lib.c:1118)
+ ==9380== by 0x4C81CEF: drbg_bytes (drbg_lib.c:963)
+ ==9380== by 0x486EDF2: ssl_iostream_openssl_init (iostream-openssl.c:928)
+ ==9380== by 0x12C56A: main_init (test-http-payload.c:2031)
+ ==9380== by 0x12C56A: main (test-http-payload.c:2058)
+ ==9380==
+
+M run-test-valgrind.supp
+
+2020-04-11 19:19:16 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2de186aff)
+
+ lib: lib-signals - Add lib_signals_clear_handlers().
+
+
+M src/lib/lib-signals.c
+M src/lib/lib-signals.h
+
+2020-04-12 17:25:37 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (91b27682b)
+
+ lib: lib-signals - Restore default system signal handler once all handlers
+ are removed.
+
+
+M src/lib/lib-signals.c
+
+2020-04-11 15:11:32 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c2821ac8b)
+
+ lib: lib-signals - Fix assert panic occurring at ioloop switch without
+ delayed handlers.
+
+ Panic was:
+
+ Panic: file ioloop.c: line 86 (io_add_to): assertion failed: (fd >= 0)
+
+M src/lib/lib-signals.c
+
+2020-04-12 16:40:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dffa391c7)
+
+ lib: Reformat lib-signals.h.
+
+
+M src/lib/lib-signals.h
+
+2020-04-12 16:40:13 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0d5587e4d)
+
+ lib: Reformat lib-signals.c.
+
+
+M src/lib/lib-signals.c
+
+2020-04-09 15:55:59 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1e842aaf1)
+
+ lib: Reverse comment about io_loop_stop() being safe to call in signal
+ handlers
+
+ It is not safe. First there's the issue that ioloop.running is a bitmask,
+ but secondly there's a race condition between io_loop_stop() and the arrival
+ of the last timeout and/or IO event. It can end up running epoll_wait() with
+ only a stale IO and no timeouts, which hangs indefinitely.
+
+M src/lib/ioloop.h
+
+2020-05-21 13:44:21 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (cab34492c)
+
+ lib-smtp: smtp_xtext_parse() - Remove unnecessary NULL check
+
+
+M src/lib-smtp/smtp-syntax.c
-2020-05-11 19:00:25 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (dc542c1e4)
+2020-05-11 19:00:25 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6d18044e1)
pop3: Use separate search queries for expunging and setting \Seen flags
@@ -645,14 +7245,14 @@ M src/auth/mech-rpa.c
M src/pop3/pop3-commands.c
-2020-05-11 19:00:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (5daa181d6)
+2020-05-11 19:00:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (babf16919)
pop3: Split off pop3_search_build_seqset()
M src/pop3/pop3-commands.c
-2020-05-11 18:50:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (6aae508da)
+2020-05-11 18:50:18 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (74e4a36df)
pop3: Minor optimization to unexpected client disconnections
diff --git a/Makefile.in b/Makefile.in
index cac5588..960d33e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -134,15 +134,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_checktype2.m4 \
$(top_srcdir)/m4/want_mysql.m4 $(top_srcdir)/m4/want_pam.m4 \
$(top_srcdir)/m4/want_passwd.m4 $(top_srcdir)/m4/want_pgsql.m4 \
$(top_srcdir)/m4/want_prefetch.m4 \
- $(top_srcdir)/m4/want_shadow.m4 $(top_srcdir)/m4/want_sia.m4 \
+ $(top_srcdir)/m4/want_shadow.m4 \
$(top_srcdir)/m4/want_sodium.m4 $(top_srcdir)/m4/want_solr.m4 \
$(top_srcdir)/m4/want_sqlite.m4 \
$(top_srcdir)/m4/want_stemmer.m4 \
$(top_srcdir)/m4/want_textcat.m4 \
- $(top_srcdir)/m4/want_unwind.m4 \
- $(top_srcdir)/m4/want_vpopmail.m4 \
- $(top_srcdir)/m4/want_zlib.m4 $(top_srcdir)/m4/want_zstd.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/want_unwind.m4 $(top_srcdir)/m4/want_zlib.m4 \
+ $(top_srcdir)/m4/want_zstd.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
@@ -304,6 +302,7 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BINARY_CFLAGS = @BINARY_CFLAGS@
BINARY_LDFLAGS = @BINARY_LDFLAGS@
+BISON = @BISON@
CASSANDRA_CFLAGS = @CASSANDRA_CFLAGS@
CASSANDRA_LIBS = @CASSANDRA_LIBS@
CC = @CC@
@@ -334,6 +333,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FLEX = @FLEX@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
diff --git a/NEWS b/NEWS
index 13e0f61..9249b42 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,139 @@
+v2.3.13 2021-01-04 Aki Tuomi <aki.tuomi@open-xchange.com>
+
+ * CVE-2020-24386: Specially crafted command can cause IMAP hibernate to
+ allow logged in user to access other people's emails and filesystem
+ information.
+ * Metric filter and global event filter variable syntax changed to a
+ SQL-like format. See https://doc.dovecot.org/configuration_manual/event_filter/
+ * auth: Added new aliases for %{variables}. Usage of the old ones is
+ possible, but discouraged.
+ * auth: Removed RPA auth mechanism, SKEY auth mechanism, NTLM auth
+ mechanism and related password schemes.
+ * auth: Removed passdb-sia, passdb-vpopmail and userdb-vpopmail.
+ * auth: Removed postfix postmap socket
+ + auth: Added new fields for auth server events. These fields are now
+ also available for all auth events. See
+ https://doc.dovecot.org/admin_manual/list_of_events/#authentication-server
+ for details.
+ + imap-hibernate: Added imap_client_hibernated, imap_client_unhibernated
+ and imap_client_unhibernate_retried events. See
+ https://doc.dovecot.org/admin_manual/list_of_events/ for details.
+ + lib-index: Added new mail_index_recreated event. See
+ https://doc.dovecot.org/admin_manual/list_of_events/#mail-index-recreated
+ + lib-sql: Support TLS options for cassandra driver. This requires
+ cpp-driver v2.15 (or later) to work reliably.
+ + lib-storage: Missing $HasAttachment / $HasNoAttachment flags are now
+ added to existing mails if mail_attachment_detection_option=add-flags
+ and it can be done inexpensively.
+ + login proxy: Added login_proxy_max_reconnects setting (default 3) to
+ control how many reconnections are attempted.
+ + login proxy: imap/pop3/submission/managesieve proxying now supports
+ reconnection retrying on more than just connect() failure. Any error
+ except a non-temporary authentication failure will result in reconnect
+ attempts.
+ - auth: Lua passdb/userdb leaks stack elements per call, eventually
+ causing the stack to become too deep and crashing the auth or
+ auth-worker process.
+ - auth: SASL authentication PLAIN mechanism could be used to trigger
+ read buffer overflow. However, this doesn't seem to be exploitable in
+ any way.
+ - auth: v2.3.11 regression: GSSAPI authentication fails because dovecot
+ disallows NUL bytes for it.
+ - dict: Process used too much CPU when iterating keys, because each key
+ used a separate write() syscall.
+ - doveadm-server: Crash could occur if logging was done outside command
+ handling. For example http-client could have done debug logging
+ afterwards, resulting in either segfault or
+ Panic: file http-client.c: line 642 (http_client_context_close):
+ assertion failed: (cctx->clients_list == NULL).
+ - doveadm-server: v2.3.11 regression: Trying to connect to doveadm server
+ process via starttls assert-crashed if there were no ssl=yes listeners:
+ Panic: file master-service-ssl.c: line 22 (master_service_ssl_init):
+ assertion failed: (service->ssl_ctx_initialized).
+ - fts-solr: HTTP requests may have assert-crashed:
+ Panic: file http-client-request.c: line 1232 (http_client_request_send_more):
+ assertion failed: (req->payload_input != NULL)
+ - imap: IMAP NOTIFY could crash with a segmentation fault due to a bad
+ configuration that causes errors. Sending the error responses to the
+ client can cause the segmentation fault. This can for example happen
+ when several namespaces use the same mail storage location.
+ - imap: IMAP NOTIFY used on a shared namespace that doesn't actually
+ exist (e.g. public namespace for a nonexistent user) can crash with a panic:
+ Panic: Leaked view for index /tmp/home/asdf/mdbox/dovecot.list.index: Opened in (null):0
+ - imap: IMAP session can crash with QRESYNC extension if many changes
+ are done before asking for expunged mails since last sync.
+ - imap: Process might hang indefinitely if client disconnects after
+ sending some long-running commands pipelined, for example FETCH+LOGOUT.
+ - lib-compress: Mitigate crashes when configuring a not compiled in
+ compression. Errors with compression configuration now distinguish
+ between not supported and unknown.
+ - lib-compression: Using xz/lzma compression in v2.3.11 could have
+ written truncated output in some situations. This would result in
+ "Broken pipe" read errors when trying to read it back.
+ - lib-compression: zstd compression could have crashed in some situations:
+ Panic: file ostream.c: line 287 (o_stream_sendv_int): assertion failed: (!stream->blocking)
+ - lib-dict: dict client could have crashed in some rare situations when
+ iterating keys.
+ - lib-http: Fix several assert-crashes in HTTP client.
+ - lib-index: v2.3.11 regression: When mails were expunged at the same
+ time as lots of new content was being saved to the cache (e.g. cache
+ file was lost and is being re-filled) a deadlock could occur with
+ dovecot.index.cache / dovecot.index.log.
+ - lib-index: v2.3.11 regression: dovecot.index.cache file was being
+ purged (rewritten) too often when it had a field that hadn't been
+ accessed for over 1 month, but less than 2 months. Every cache file
+ change caused a purging in this situation.
+ - lib-mail: MIME parts were not returned correctly by Dovecot MIME parser.
+ Regression caused by fixing CVE-2020-12100.
+ - lib-mail: When max nested MIME parts were reached, IMAP BODYSTRUCTURE
+ was written in a way that may have caused confusion for both IMAP
+ clients and Dovecot itself when parsing it. The truncated part is now
+ written out using application/octet-stream MIME type.
+ - lib-mail: v2.3.11 regression: Mail delivery / parsing crashed when the
+ 10000th MIME part was message/rfc822 (or if parent was multipart/digest):
+ Panic: file message-parser.c: line 167 (message_part_append):
+ assertion failed: (ctx->total_parts_count <= ctx->max_total_mime_parts).
+ - lib-oauth2: Dovecot incorrectly required oauth2 server introspection
+ reply to contain username with invalid token.
+ - lib-ssl-iostream, lib-dcrypt: Fix building with OpenSSL that has
+ deprecated APIs disabled.
+ - lib-storage: When mail's size is different from the cached one (in
+ dovecot.index.cache or Maildir S=size in the filename), this is
+ handled by logging "Cached message size smaller/larger than expected"
+ error. However, in some situations this also ended up crashing with:
+ Panic: file istream.c: line 315 (i_stream_read_memarea):
+ assertion failed: (old_size <= _stream->pos - _stream->skip).
+ - lib-storage: v2.3 regression: Copying/moving mails was taking much more
+ memory than before. This was mainly visible when copying/moving
+ thousands of mails in a single transaction.
+ - lib-storage: v2.3.11 regression: Searching messages assert-crashed
+ (without FTS): Panic: file message-parser.c: line 174 (message_part_finish):
+ assertion failed: (ctx->nested_parts_count > 0).
+ - lib: Dovecot v2.3 moved signal handlers around in ioloops,
+ causing more CPU usage than in v2.2.
+ - lib: Fixed JSON parsing: '\' escape sequence may have wrongly resulted
+ in error if it happened to be at read boundary. Any NUL characters and
+ '\u0000' will now result in parsing error instead of silently
+ truncating the data.
+ - lmtp, submission: Server may hang if SSL client connection disconnects
+ during the delivery. If this happened repeated, it could have ended
+ up reaching process_limit and preventing any further lmtp/submission
+ deliveries.
+ - lmtp: Proxy does not always properly log TLS connection problems as
+ errors; in some cases, only a debug message is logged if enabled.
+ - lmtp: The LMTP service can hang when commands are pipelined. This can
+ particularly occur when one command in the middle of the pipeline fails.
+ One example of this occurs for proxied LMTP transactions in which the
+ final DATA or BDAT command is pipelined after a failing RCPT command.
+ - login-proxy: The login_source_ips setting has no effect, and therefore
+ the proxy source IPs are not cycled through as they should be.
+ - master: Process was using 100% CPU in some situations when a broken
+ service was being throttled.
+ - pop3-login: POP3 login would fail with "Input buffer full" if the
+ initial response for SASL was too long.
+ - stats: Crash would occur when generating openmetrics data for metrics
+ using aggregating functions.
+
v2.3.11.3 2020-07-29 Aki Tuomi <aki.tuomi@open-xchange.com>
- pop3-login: Login didn't handle commands in multiple IP packets properly.
diff --git a/aclocal.m4 b/aclocal.m4
index 9d0bfb4..58d9aa2 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -2930,13 +2930,11 @@ m4_include([m4/want_passwd.m4])
m4_include([m4/want_pgsql.m4])
m4_include([m4/want_prefetch.m4])
m4_include([m4/want_shadow.m4])
-m4_include([m4/want_sia.m4])
m4_include([m4/want_sodium.m4])
m4_include([m4/want_solr.m4])
m4_include([m4/want_sqlite.m4])
m4_include([m4/want_stemmer.m4])
m4_include([m4/want_textcat.m4])
m4_include([m4/want_unwind.m4])
-m4_include([m4/want_vpopmail.m4])
m4_include([m4/want_zlib.m4])
m4_include([m4/want_zstd.m4])
diff --git a/config.h.in b/config.h.in
index 3f1b82c..883e830 100644
--- a/config.h.in
+++ b/config.h.in
@@ -96,6 +96,9 @@
/* Cassandra supports speculative execution policy */
#undef HAVE_CASSANDRA_SPECULATIVE_POLICY
+/* Build with cass_cluster_set_use_hostname_resolution() support */
+#undef HAVE_CASS_CLUSTER_SET_USE_HOSTNAME_RESOLUTION
+
/* Define to 1 if you have the `clearenv' function. */
#undef HAVE_CLEARENV
@@ -105,10 +108,18 @@
/* Define to 1 if you have the <crypt.h> header file. */
#undef HAVE_CRYPT_H
+/* Define to 1 if you have the declaration of
+ `CASS_SSL_VERIFY_PEER_IDENTITY_DNS', and to 0 if you don't. */
+#undef HAVE_DECL_CASS_SSL_VERIFY_PEER_IDENTITY_DNS
+
/* Define to 1 if you have the declaration of `getrandom', and to 0 if you
don't. */
#undef HAVE_DECL_GETRANDOM
+/* Define to 1 if you have the declaration of
+ `ZSTD_error_parameter_unsupported', and to 0 if you don't. */
+#undef HAVE_DECL_ZSTD_ERROR_PARAMETER_UNSUPPORTED
+
/* Define if you have struct dirent->d_type */
#undef HAVE_DIRENT_D_TYPE
@@ -151,9 +162,27 @@
/* Define to 1 if you have the `flock' function. */
#undef HAVE_FLOCK
+/* Define if your compiler has -fno-sanitize=nonnull-attribute */
+#undef HAVE_FNO_SANITIZE_NONNULL_ATTRIBUTE
+
/* Define if you have FreeBSD-compatible sendfile() */
#undef HAVE_FREEBSD_SENDFILE
+/* Define if your compiler has -fsanitize=implicit-integer-truncation */
+#undef HAVE_FSANITIZE_IMPLICIT_INTEGER_TRUNCATION
+
+/* Define if your compiler has -fsanitize=integer */
+#undef HAVE_FSANITIZE_INTEGER
+
+/* Define if your compiler has -fsanitize=local-bounds */
+#undef HAVE_FSANITIZE_LOCAL_BOUNDS
+
+/* Define if your compiler has -fsanitize=nullability */
+#undef HAVE_FSANITIZE_NULLABILITY
+
+/* Define if your compiler has -fsanitize=undefined */
+#undef HAVE_FSANITIZE_UNDEFINED
+
/* Define if you want exttextcat support for FTS */
#undef HAVE_FTS_EXTTEXTCAT
@@ -622,6 +651,9 @@
/* Define to 1 if you have the `uname' function. */
#undef HAVE_UNAME
+/* Define if your compiler supports undefined sanitizers */
+#undef HAVE_UNDEFINED_SANITIZER
+
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
@@ -649,6 +681,9 @@
/* Define if you have ZSTD library */
#undef HAVE_ZSTD
+/* Whether zstd has ZSTD_getErrorCode */
+#undef HAVE_ZSTD_GETERRORCODE
+
/* Define to 1 if the system has the type `_Bool'. */
#undef HAVE__BOOL
@@ -745,15 +780,9 @@
/* Build with shadow support */
#undef PASSDB_SHADOW
-/* Build with Tru64 SIA support */
-#undef PASSDB_SIA
-
/* Build with SQL support */
#undef PASSDB_SQL
-/* Build with vpopmail support */
-#undef PASSDB_VPOPMAIL
-
/* Define if pread/pwrite implementation is broken */
#undef PREAD_BROKEN
@@ -844,9 +873,6 @@
/* Build with SQL support */
#undef USERDB_SQL
-/* Build with vpopmail support */
-#undef USERDB_VPOPMAIL
-
/* A 'va_copy' style function */
#undef VA_COPY
diff --git a/configure b/configure
index 18ee86d..84c99d9 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Dovecot 2.3.11.3.
+# Generated by GNU Autoconf 2.69 for Dovecot 2.3.13.
#
# Report bugs to <dovecot@dovecot.org>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Dovecot'
PACKAGE_TARNAME='dovecot'
-PACKAGE_VERSION='2.3.11.3'
-PACKAGE_STRING='Dovecot 2.3.11.3'
+PACKAGE_VERSION='2.3.13'
+PACKAGE_STRING='Dovecot 2.3.13'
PACKAGE_BUGREPORT='dovecot@dovecot.org'
PACKAGE_URL=''
@@ -798,6 +798,8 @@ build
LIBTOOL
EGREP
GREP
+BISON
+FLEX
am__fastdepCXX_FALSE
am__fastdepCXX_TRUE
CXXDEPMODE
@@ -925,10 +927,8 @@ with_shadow
with_pam
with_bsdauth
with_gssapi
-with_sia
with_ldap
with_libunwind
-with_vpopmail
with_cdb
with_sql
with_pgsql
@@ -968,6 +968,7 @@ enable_rpath
with_libiconv_prefix
enable_hardening
with_retpoline
+enable_ubsan
with_libbsd
enable_largefile
with_random_source
@@ -1560,7 +1561,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Dovecot 2.3.11.3 to adapt to many kinds of systems.
+\`configure' configures Dovecot 2.3.13 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1631,7 +1632,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Dovecot 2.3.11.3:";;
+ short | recursive ) echo "Configuration of Dovecot 2.3.13:";;
esac
cat <<\_ACEOF
@@ -1659,6 +1660,7 @@ Optional Features:
--disable-libtool-lock avoid locking (might break parallel builds)
--disable-rpath do not hardcode runtime library paths
--enable-hardening=yes Enable various hardenings (default: yes)
+ --enable-ubsan Enable undefined behaviour sanitizes (default=no)
--disable-largefile omit support for large files
Optional Packages:
@@ -1679,10 +1681,8 @@ Optional Packages:
--with-bsdauth Build with BSD authentication support (auto)
--with-gssapi=yes|plugin Build with GSSAPI authentication support
- --with-sia Build with Tru64 SIA support
--with-ldap=yes|plugin Build with LDAP support
--with-libunwind Build with libunwind support (auto)
- --with-vpopmail Build with vpopmail support (auto)
--with-cdb Build with CDB support
--with-sql=yes|plugin Build with generic SQL support
--with-pgsql Build with PostgreSQL driver support
@@ -1850,7 +1850,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Dovecot configure 2.3.11.3
+Dovecot configure 2.3.13
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2623,7 +2623,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Dovecot $as_me 2.3.11.3, which was
+It was created by Dovecot $as_me 2.3.13, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2973,7 +2973,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
cat >>confdefs.h <<_ACEOF
-#define DOVECOT_ABI_VERSION "2.3.ABIv11($PACKAGE_VERSION)"
+#define DOVECOT_ABI_VERSION "2.3.ABIv13($PACKAGE_VERSION)"
_ACEOF
@@ -3495,7 +3495,7 @@ fi
# Define the identity of the package.
PACKAGE='dovecot'
- VERSION='2.3.11.3'
+ VERSION='2.3.13'
cat >>confdefs.h <<_ACEOF
@@ -3937,31 +3937,6 @@ fi
-# Check whether --with-sia was given.
-if test "${with_sia+set}" = set; then :
- withval=$with_sia;
- want=want_`echo sia|sed s/-/_/g`
- if test $withval = yes || test $withval = no || test $withval = auto; then
- eval $want=$withval
- elif test $withval = plugin; then
- if test "" = plugin; then
- eval $want=plugin
- else
- as_fn_error $? "--with-sia=plugin not supported" "$LINENO" 5
- fi
- elif `echo $withval|grep '^/' >/dev/null`; then
- as_fn_error $? "--with-sia=path not supported. You may want to use instead:
-CPPFLAGS=-I$withval/include LDFLAGS=-L$withval/lib ./configure --with-sia" "$LINENO" 5
- else
- as_fn_error $? "--with-sia: Unknown value: $withval" "$LINENO" 5
- fi
-
-else
- want_sia=no
-fi
-
-
-
# Check whether --with-ldap was given.
if test "${with_ldap+set}" = set; then :
withval=$with_ldap;
@@ -4011,27 +3986,6 @@ else
fi
-
-# Check whether --with-vpopmail was given.
-if test "${with_vpopmail+set}" = set; then :
- withval=$with_vpopmail; if test x$withval = xno; then
- want_vpopmail=no
- else
- if test x$withval = xyes || test x$withval = xauto; then
- vpopmail_home="`echo ~vpopmail`"
- want_vpopmail=$withval
- else
- vpopmail_home="$withval"
- want_vpopmail=yes
- fi
- fi
-else
-
- want_vpopmail=no
-
-fi
-
-
# Berkeley DB support is more or less broken. Disabled for now.
#AC_ARG_WITH(db,
#AS_HELP_STRING([--with-db], [Build with Berkeley DB support]),
@@ -6977,6 +6931,198 @@ else
fi
# lucene plugin needs this
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}flex", so it can be a program name with args.
+set dummy ${ac_tool_prefix}flex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_FLEX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$FLEX"; then
+ ac_cv_prog_FLEX="$FLEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_FLEX="${ac_tool_prefix}flex"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+FLEX=$ac_cv_prog_FLEX
+if test -n "$FLEX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX" >&5
+$as_echo "$FLEX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_FLEX"; then
+ ac_ct_FLEX=$FLEX
+ # Extract the first word of "flex", so it can be a program name with args.
+set dummy flex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_FLEX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_FLEX"; then
+ ac_cv_prog_ac_ct_FLEX="$ac_ct_FLEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_FLEX="flex"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_FLEX=$ac_cv_prog_ac_ct_FLEX
+if test -n "$ac_ct_FLEX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FLEX" >&5
+$as_echo "$ac_ct_FLEX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_FLEX" = x; then
+ FLEX=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ FLEX=$ac_ct_FLEX
+ fi
+else
+ FLEX="$ac_cv_prog_FLEX"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}bison", so it can be a program name with args.
+set dummy ${ac_tool_prefix}bison; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_BISON+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$BISON"; then
+ ac_cv_prog_BISON="$BISON" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_BISON="${ac_tool_prefix}bison"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+BISON=$ac_cv_prog_BISON
+if test -n "$BISON"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5
+$as_echo "$BISON" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_BISON"; then
+ ac_ct_BISON=$BISON
+ # Extract the first word of "bison", so it can be a program name with args.
+set dummy bison; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_BISON+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_BISON"; then
+ ac_cv_prog_ac_ct_BISON="$ac_ct_BISON" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_BISON="bison"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_BISON=$ac_cv_prog_ac_ct_BISON
+if test -n "$ac_ct_BISON"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_BISON" >&5
+$as_echo "$ac_ct_BISON" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_BISON" = x; then
+ BISON=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ BISON=$ac_ct_BISON
+ fi
+else
+ BISON="$ac_cv_prog_BISON"
+fi
+
+if test "$BISON" = ":" && test ! -e src/lib/event-filter-parser.h; then :
+ as_fn_error $? "Bison is required when building from git" "$LINENO" 5
+]
+fi
+if test "$FLEX" = ":" && test ! -e src/lib/event-filter-lexer.c; then :
+ as_fn_error $? "flex is required when building from git" "$LINENO" 5
+]
+fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
@@ -19819,6 +19965,277 @@ fi
+ # Check whether --enable-ubsan was given.
+if test "${enable_ubsan+set}" = set; then :
+ enableval=$enable_ubsan; want_ubsan=yes
+else
+ want_ubsan=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we want undefined behaviour sanitizer" >&5
+$as_echo_n "checking whether we want undefined behaviour sanitizer... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $want_ubsan" >&5
+$as_echo "$want_ubsan" >&6; }
+ if test x$want_ubsan = xyes; then :
+
+ san_flags=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fsanitize=undefined" >&5
+$as_echo_n "checking whether C compiler handles -fsanitize=undefined... " >&6; }
+if ${gl_cv_warn_c__fsanitize_undefined+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -fsanitize=undefined"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_c__fsanitize_undefined=yes
+else
+ gl_cv_warn_c__fsanitize_undefined=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fsanitize_undefined" >&5
+$as_echo "$gl_cv_warn_c__fsanitize_undefined" >&6; }
+if test "x$gl_cv_warn_c__fsanitize_undefined" = xyes; then :
+
+ san_flags="$san_flags -fsanitize=undefined"
+
+$as_echo "#define HAVE_FSANITIZE_UNDEFINED 1" >>confdefs.h
+
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fno-sanitize=nonnull-attribute" >&5
+$as_echo_n "checking whether C compiler handles -fno-sanitize=nonnull-attribute... " >&6; }
+if ${gl_cv_warn_c__fno_sanitize_nonnull_attribute+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -fno-sanitize=nonnull-attribute"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_c__fno_sanitize_nonnull_attribute=yes
+else
+ gl_cv_warn_c__fno_sanitize_nonnull_attribute=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fno_sanitize_nonnull_attribute" >&5
+$as_echo "$gl_cv_warn_c__fno_sanitize_nonnull_attribute" >&6; }
+if test "x$gl_cv_warn_c__fno_sanitize_nonnull_attribute" = xyes; then :
+
+ san_flags="$san_flags -fno-sanitize=nonnull-attribute"
+
+$as_echo "#define HAVE_FNO_SANITIZE_NONNULL_ATTRIBUTE 1" >>confdefs.h
+
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fsanitize=implicit-integer-truncation" >&5
+$as_echo_n "checking whether C compiler handles -fsanitize=implicit-integer-truncation... " >&6; }
+if ${gl_cv_warn_c__fsanitize_implicit_integer_truncation+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -fsanitize=implicit-integer-truncation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_c__fsanitize_implicit_integer_truncation=yes
+else
+ gl_cv_warn_c__fsanitize_implicit_integer_truncation=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fsanitize_implicit_integer_truncation" >&5
+$as_echo "$gl_cv_warn_c__fsanitize_implicit_integer_truncation" >&6; }
+if test "x$gl_cv_warn_c__fsanitize_implicit_integer_truncation" = xyes; then :
+
+ san_flags="$san_flags -fsanitize=implicit-integer-truncation"
+
+$as_echo "#define HAVE_FSANITIZE_IMPLICIT_INTEGER_TRUNCATION 1" >>confdefs.h
+
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fsanitize=local-bounds" >&5
+$as_echo_n "checking whether C compiler handles -fsanitize=local-bounds... " >&6; }
+if ${gl_cv_warn_c__fsanitize_local_bounds+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -fsanitize=local-bounds"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_c__fsanitize_local_bounds=yes
+else
+ gl_cv_warn_c__fsanitize_local_bounds=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fsanitize_local_bounds" >&5
+$as_echo "$gl_cv_warn_c__fsanitize_local_bounds" >&6; }
+if test "x$gl_cv_warn_c__fsanitize_local_bounds" = xyes; then :
+
+ san_flags="$san_flags -fsanitize=local-bounds"
+
+$as_echo "#define HAVE_FSANITIZE_LOCAL_BOUNDS 1" >>confdefs.h
+
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fsanitize=integer" >&5
+$as_echo_n "checking whether C compiler handles -fsanitize=integer... " >&6; }
+if ${gl_cv_warn_c__fsanitize_integer+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -fsanitize=integer"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_c__fsanitize_integer=yes
+else
+ gl_cv_warn_c__fsanitize_integer=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fsanitize_integer" >&5
+$as_echo "$gl_cv_warn_c__fsanitize_integer" >&6; }
+if test "x$gl_cv_warn_c__fsanitize_integer" = xyes; then :
+
+ san_flags="$san_flags -fsanitize=integer"
+
+$as_echo "#define HAVE_FSANITIZE_INTEGER 1" >>confdefs.h
+
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fsanitize=nullability" >&5
+$as_echo_n "checking whether C compiler handles -fsanitize=nullability... " >&6; }
+if ${gl_cv_warn_c__fsanitize_nullability+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -fsanitize=nullability"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_c__fsanitize_nullability=yes
+else
+ gl_cv_warn_c__fsanitize_nullability=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fsanitize_nullability" >&5
+$as_echo "$gl_cv_warn_c__fsanitize_nullability" >&6; }
+if test "x$gl_cv_warn_c__fsanitize_nullability" = xyes; then :
+
+ san_flags="$san_flags -fsanitize=nullability"
+
+$as_echo "#define HAVE_FSANITIZE_NULLABILITY 1" >>confdefs.h
+
+
+fi
+
+ if test "$san_flags" != "" ; then :
+
+ EXTRA_CFLAGS="$EXTRA_CFLAGS $san_flags -U_FORTIFY_SOURCE -g -ggdb3 -O0 -fno-omit-frame-pointer"
+
+$as_echo "#define HAVE_UNDEFINED_SANITIZER 1" >>confdefs.h
+
+
+else
+
+ as_fn_error $? "No undefined sanitizer support in your compiler" "$LINENO" 5
+
+fi
+ san_flags=""
+
+fi
+
+
if test "x$ac_cv_c_compiler_gnu" = "xyes"; then :
@@ -19905,15 +20322,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
- if test "$have_clang" = "yes"; then :
-
- if test "$want_devel_checks" = "yes"; then :
-
- :
-
-fi
-
-fi
@@ -26323,34 +26731,6 @@ fi
- have_sia=no
- if test $want_sia != no; then
- ac_fn_c_check_func "$LINENO" "sia_validate_user" "ac_cv_func_sia_validate_user"
-if test "x$ac_cv_func_sia_validate_user" = xyes; then :
-
-
-$as_echo "#define PASSDB_SIA /**/" >>confdefs.h
-
- AUTH_LIBS="$AUTH_LIBS -depth_ring_search"
- have_sia=yes
-
-else
-
- if test $want_sia = yes; then
- as_fn_error $? "Can't build with SIA support: sia_validate_user() not found" "$LINENO" 5
- fi
-
-fi
-
- fi
-
- if test $have_sia = no; then
- not_passdb="$not_passdb sia"
- else
- passdb="$passdb sia"
- fi
-
-
have_ldap=no
if test $want_ldap != no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldap_init in -lldap" >&5
@@ -27400,7 +27780,8 @@ fi
fi
- if test $want_cassandra != no; then
+ if test "$want_cassandra" != no; then :
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cass_session_new in -lcassandra" >&5
$as_echo_n "checking for cass_session_new in -lcassandra... " >&6; }
if ${ac_cv_lib_cassandra_cass_session_new+:} false; then :
@@ -27444,7 +27825,6 @@ if test "x$ac_cv_header_cassandra_h" = xyes; then :
CASSANDRA_LIBS="$CASSANDRA_LIBS -lcassandra"
-
$as_echo "#define HAVE_CASSANDRA /**/" >>confdefs.h
found_sql_drivers="$found_sql_drivers cassandra"
@@ -27454,7 +27834,7 @@ if ${ac_cv_lib_cassandra_cass_cluster_set_constant_speculative_execution_policy+
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcassandra $LIBS"
+LIBS="-lcassandra $CASSANDRA_LIBS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -27492,68 +27872,86 @@ $as_echo "#define HAVE_CASSANDRA_SPECULATIVE_POLICY 1" >>confdefs.h
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cass_cluster_set_use_hostname_resolution in -lcassandra" >&5
+$as_echo_n "checking for cass_cluster_set_use_hostname_resolution in -lcassandra... " >&6; }
+if ${ac_cv_lib_cassandra_cass_cluster_set_use_hostname_resolution+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcassandra $CASSANDRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cass_cluster_set_use_hostname_resolution ();
+int
+main ()
+{
+return cass_cluster_set_use_hostname_resolution ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_cassandra_cass_cluster_set_use_hostname_resolution=yes
else
+ ac_cv_lib_cassandra_cass_cluster_set_use_hostname_resolution=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cassandra_cass_cluster_set_use_hostname_resolution" >&5
+$as_echo "$ac_cv_lib_cassandra_cass_cluster_set_use_hostname_resolution" >&6; }
+if test "x$ac_cv_lib_cassandra_cass_cluster_set_use_hostname_resolution" = xyes; then :
+
+
+$as_echo "#define HAVE_CASS_CLUSTER_SET_USE_HOSTNAME_RESOLUTION /**/" >>confdefs.h
- if test $want_cassandra = yes; then
- as_fn_error $? "Can't build with Cassandra support: cassandra.h not found" "$LINENO" 5
- fi
fi
+ ac_fn_c_check_decl "$LINENO" "CASS_SSL_VERIFY_PEER_IDENTITY_DNS" "ac_cv_have_decl_CASS_SSL_VERIFY_PEER_IDENTITY_DNS" "#include <cassandra.h>
+"
+if test "x$ac_cv_have_decl_CASS_SSL_VERIFY_PEER_IDENTITY_DNS" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CASS_SSL_VERIFY_PEER_IDENTITY_DNS $ac_have_decl
+_ACEOF
else
- if test $want_cassandra = yes; then
- as_fn_error $? "Can't build with Cassandra support: libcassandra not found" "$LINENO" 5
- fi
+ if test "$want_cassandra" = yes; then :
+
+ as_fn_error $? "Can't build with Cassandra support: cassandra.h not found" "$LINENO" 5
fi
- fi
+fi
- have_vpopmail=no
- if test $want_vpopmail != no; then
- vpop_etc="$vpopmail_home/etc"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vpopmail configuration at $vpop_etc/lib_deps" >&5
-$as_echo_n "checking for vpopmail configuration at $vpop_etc/lib_deps... " >&6; }
- if ! test -f $vpop_etc/lib_deps; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
- vpop_etc="$vpopmail_home"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vpopmail configuration at $vpop_etc/lib_deps" >&5
-$as_echo_n "checking for vpopmail configuration at $vpop_etc/lib_deps... " >&6; }
- fi
- if test -f $vpop_etc/lib_deps; then
- AUTH_CFLAGS="$AUTH_CFLAGS `cat $vpop_etc/inc_deps` $CFLAGS"
- AUTH_LIBS="$AUTH_LIBS `cat $vpop_etc/lib_deps`"
-$as_echo "#define USERDB_VPOPMAIL /**/" >>confdefs.h
+else
+ if test "$want_cassandra" = yes; then :
+ as_fn_error $? "Can't build with Cassandra support: libcassandra not found" "$LINENO" 5
-$as_echo "#define PASSDB_VPOPMAIL /**/" >>confdefs.h
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
-$as_echo "found" >&6; }
- have_vpopmail=yes
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
- if test $want_vpopmail = yes; then
- as_fn_error $? "Can't build with vpopmail support: $vpop_etc/lib_deps not found" "$LINENO" 5
- fi
- fi
- fi
+fi
- if test $have_vpopmail = no; then
- not_passdb="$not_passdb vpopmail"
- not_userdb="$not_userdb vpopmail"
- else
- userdb="$userdb vpopmail"
- passdb="$passdb vpopmail"
- fi
+
+fi
@@ -28529,6 +28927,62 @@ fi
$as_echo "#define HAVE_ZSTD /**/" >>confdefs.h
+ ac_fn_c_check_decl "$LINENO" "ZSTD_error_parameter_unsupported" "ac_cv_have_decl_ZSTD_error_parameter_unsupported" "#include <zstd_errors.h>
+"
+if test "x$ac_cv_have_decl_ZSTD_error_parameter_unsupported" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ZSTD_ERROR_PARAMETER_UNSUPPORTED $ac_have_decl
+_ACEOF
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZSTD_getErrorCode in -lzstd" >&5
+$as_echo_n "checking for ZSTD_getErrorCode in -lzstd... " >&6; }
+if ${ac_cv_lib_zstd_ZSTD_getErrorCode+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lzstd $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ZSTD_getErrorCode ();
+int
+main ()
+{
+return ZSTD_getErrorCode ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_zstd_ZSTD_getErrorCode=yes
+else
+ ac_cv_lib_zstd_ZSTD_getErrorCode=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zstd_ZSTD_getErrorCode" >&5
+$as_echo "$ac_cv_lib_zstd_ZSTD_getErrorCode" >&6; }
+if test "x$ac_cv_lib_zstd_ZSTD_getErrorCode" = xyes; then :
+
+
+$as_echo "#define HAVE_ZSTD_GETERRORCODE 1" >>confdefs.h
+
+
+fi
+
fi
@@ -29623,9 +30077,9 @@ else
trap "rm -f \$test_out" 0 1 2 3 15
supp_path="\$top_srcdir/run-test-valgrind.supp"
if test -r "\$supp_path"; then
- valgrind -q \$trace_children --leak-check=full --gen-suppressions=all --suppressions="\$supp_path" --log-file=\$test_out \$noundef \$*
+ valgrind -q \$trace_children --error-exitcode=213 --leak-check=full --gen-suppressions=all --suppressions="\$supp_path" --log-file=\$test_out \$noundef \$*
else
- valgrind -q \$trace_children --leak-check=full --gen-suppressions=all --log-file=\$test_out \$noundef \$*
+ valgrind -q \$trace_children --error-exitcode=213 --leak-check=full --gen-suppressions=all --log-file=\$test_out \$noundef \$*
fi
ret=\$?
if test -s \$test_out; then
@@ -29651,7 +30105,7 @@ fi
ac_config_headers="$ac_config_headers config.h"
-ac_config_files="$ac_config_files Makefile doc/Makefile doc/man/Makefile doc/wiki/Makefile doc/example-config/Makefile doc/example-config/conf.d/Makefile src/Makefile src/lib/Makefile src/lib-sql/Makefile src/lib-auth/Makefile src/lib-charset/Makefile src/lib-compression/Makefile src/lib-dcrypt/Makefile src/lib-dict/Makefile src/lib-dict-backend/Makefile src/lib-dict-extra/Makefile src/lib-dns/Makefile src/lib-fs/Makefile src/lib-fts/Makefile src/lib-http/Makefile src/lib-oauth2/Makefile src/lib-imap/Makefile src/lib-imap-storage/Makefile src/lib-imap-client/Makefile src/lib-imap-urlauth/Makefile src/lib-index/Makefile src/lib-lda/Makefile src/lib-ldap/Makefile src/lib-lua/Makefile src/lib-mail/Makefile src/lib-master/Makefile src/lib-ntlm/Makefile src/lib-program-client/Makefile src/lib-otp/Makefile src/lib-dovecot/Makefile src/lib-sasl/Makefile src/lib-settings/Makefile src/lib-smtp/Makefile src/lib-ssl-iostream/Makefile src/lib-old-stats/Makefile src/lib-test/Makefile src/lib-storage/Makefile src/lib-storage/list/Makefile src/lib-storage/index/Makefile src/lib-storage/index/imapc/Makefile src/lib-storage/index/pop3c/Makefile src/lib-storage/index/maildir/Makefile src/lib-storage/index/mbox/Makefile src/lib-storage/index/dbox-common/Makefile src/lib-storage/index/dbox-multi/Makefile src/lib-storage/index/dbox-single/Makefile src/lib-storage/index/cydir/Makefile src/lib-storage/index/raw/Makefile src/lib-storage/index/shared/Makefile src/anvil/Makefile src/auth/Makefile src/config/Makefile src/doveadm/Makefile src/doveadm/dsync/Makefile src/lda/Makefile src/log/Makefile src/lmtp/Makefile src/dict/Makefile src/director/Makefile src/dns/Makefile src/indexer/Makefile src/ipc/Makefile src/imap/Makefile src/imap-hibernate/Makefile src/imap-login/Makefile src/imap-urlauth/Makefile src/login-common/Makefile src/master/Makefile src/pop3/Makefile src/pop3-login/Makefile src/submission/Makefile src/submission-login/Makefile src/replication/Makefile src/replication/aggregator/Makefile src/replication/replicator/Makefile src/stats/Makefile src/old-stats/Makefile src/util/Makefile src/plugins/Makefile src/plugins/acl/Makefile src/plugins/imap-acl/Makefile src/plugins/autocreate/Makefile src/plugins/expire/Makefile src/plugins/fs-compress/Makefile src/plugins/fts/Makefile src/plugins/fts-lucene/Makefile src/plugins/fts-solr/Makefile src/plugins/fts-squat/Makefile src/plugins/last-login/Makefile src/plugins/lazy-expunge/Makefile src/plugins/listescape/Makefile src/plugins/mail-filter/Makefile src/plugins/mail-log/Makefile src/plugins/mail-lua/Makefile src/plugins/mailbox-alias/Makefile src/plugins/notify/Makefile src/plugins/notify-status/Makefile src/plugins/push-notification/Makefile src/plugins/pop3-migration/Makefile src/plugins/quota/Makefile src/plugins/quota-clone/Makefile src/plugins/imap-quota/Makefile src/plugins/replication/Makefile src/plugins/snarf/Makefile src/plugins/old-stats/Makefile src/plugins/imap-old-stats/Makefile src/plugins/trash/Makefile src/plugins/virtual/Makefile src/plugins/welcome/Makefile src/plugins/zlib/Makefile src/plugins/imap-zlib/Makefile src/plugins/mail-crypt/Makefile src/plugins/var-expand-crypt/Makefile src/plugins/apparmor/Makefile src/plugins/charset-alias/Makefile stamp.h dovecot-config.in"
+ac_config_files="$ac_config_files Makefile doc/Makefile doc/man/Makefile doc/wiki/Makefile doc/example-config/Makefile doc/example-config/conf.d/Makefile src/Makefile src/lib/Makefile src/lib-sql/Makefile src/lib-auth/Makefile src/lib-charset/Makefile src/lib-compression/Makefile src/lib-dcrypt/Makefile src/lib-dict/Makefile src/lib-dict-backend/Makefile src/lib-dict-extra/Makefile src/lib-dns/Makefile src/lib-fs/Makefile src/lib-fts/Makefile src/lib-http/Makefile src/lib-oauth2/Makefile src/lib-imap/Makefile src/lib-imap-storage/Makefile src/lib-imap-client/Makefile src/lib-imap-urlauth/Makefile src/lib-index/Makefile src/lib-lda/Makefile src/lib-ldap/Makefile src/lib-lua/Makefile src/lib-mail/Makefile src/lib-master/Makefile src/lib-program-client/Makefile src/lib-otp/Makefile src/lib-dovecot/Makefile src/lib-sasl/Makefile src/lib-settings/Makefile src/lib-smtp/Makefile src/lib-ssl-iostream/Makefile src/lib-old-stats/Makefile src/lib-test/Makefile src/lib-storage/Makefile src/lib-storage/list/Makefile src/lib-storage/index/Makefile src/lib-storage/index/imapc/Makefile src/lib-storage/index/pop3c/Makefile src/lib-storage/index/maildir/Makefile src/lib-storage/index/mbox/Makefile src/lib-storage/index/dbox-common/Makefile src/lib-storage/index/dbox-multi/Makefile src/lib-storage/index/dbox-single/Makefile src/lib-storage/index/cydir/Makefile src/lib-storage/index/raw/Makefile src/lib-storage/index/shared/Makefile src/anvil/Makefile src/auth/Makefile src/config/Makefile src/doveadm/Makefile src/doveadm/dsync/Makefile src/lda/Makefile src/log/Makefile src/lmtp/Makefile src/dict/Makefile src/director/Makefile src/dns/Makefile src/indexer/Makefile src/ipc/Makefile src/imap/Makefile src/imap-hibernate/Makefile src/imap-login/Makefile src/imap-urlauth/Makefile src/login-common/Makefile src/master/Makefile src/pop3/Makefile src/pop3-login/Makefile src/submission/Makefile src/submission-login/Makefile src/replication/Makefile src/replication/aggregator/Makefile src/replication/replicator/Makefile src/stats/Makefile src/old-stats/Makefile src/util/Makefile src/plugins/Makefile src/plugins/acl/Makefile src/plugins/imap-acl/Makefile src/plugins/autocreate/Makefile src/plugins/expire/Makefile src/plugins/fs-compress/Makefile src/plugins/fts/Makefile src/plugins/fts-lucene/Makefile src/plugins/fts-solr/Makefile src/plugins/fts-squat/Makefile src/plugins/last-login/Makefile src/plugins/lazy-expunge/Makefile src/plugins/listescape/Makefile src/plugins/mail-filter/Makefile src/plugins/mail-log/Makefile src/plugins/mail-lua/Makefile src/plugins/mailbox-alias/Makefile src/plugins/notify/Makefile src/plugins/notify-status/Makefile src/plugins/push-notification/Makefile src/plugins/pop3-migration/Makefile src/plugins/quota/Makefile src/plugins/quota-clone/Makefile src/plugins/imap-quota/Makefile src/plugins/replication/Makefile src/plugins/snarf/Makefile src/plugins/old-stats/Makefile src/plugins/imap-old-stats/Makefile src/plugins/trash/Makefile src/plugins/virtual/Makefile src/plugins/welcome/Makefile src/plugins/zlib/Makefile src/plugins/imap-zlib/Makefile src/plugins/mail-crypt/Makefile src/plugins/var-expand-crypt/Makefile src/plugins/apparmor/Makefile src/plugins/charset-alias/Makefile stamp.h dovecot-config.in"
cat >confcache <<\_ACEOF
@@ -30317,7 +30771,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Dovecot $as_me 2.3.11.3, which was
+This file was extended by Dovecot $as_me 2.3.13, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -30383,7 +30837,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-Dovecot config.status 2.3.11.3
+Dovecot config.status 2.3.13
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -30927,7 +31381,6 @@ do
"src/lib-lua/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib-lua/Makefile" ;;
"src/lib-mail/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib-mail/Makefile" ;;
"src/lib-master/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib-master/Makefile" ;;
- "src/lib-ntlm/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib-ntlm/Makefile" ;;
"src/lib-program-client/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib-program-client/Makefile" ;;
"src/lib-otp/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib-otp/Makefile" ;;
"src/lib-dovecot/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib-dovecot/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index 04143eb..0d4d89f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,8 +2,8 @@ AC_PREREQ([2.59])
# Be sure to update ABI version also if anything changes that might require
# recompiling plugins. Most importantly that means if any structs are changed.
-AC_INIT([Dovecot],[2.3.11.3],[dovecot@dovecot.org])
-AC_DEFINE_UNQUOTED([DOVECOT_ABI_VERSION], "2.3.ABIv11($PACKAGE_VERSION)", [Dovecot ABI version])
+AC_INIT([Dovecot],[2.3.13],[dovecot@dovecot.org])
+AC_DEFINE_UNQUOTED([DOVECOT_ABI_VERSION], "2.3.ABIv13($PACKAGE_VERSION)", [Dovecot ABI version])
AC_CONFIG_SRCDIR([src])
AC_CONFIG_MACRO_DIR([m4])
@@ -81,11 +81,6 @@ AS_HELP_STRING([--with-gssapi=yes|plugin Build with GSSAPI authentication suppor
TEST_WITH(gssapi, $withval, plugin),
want_gssapi=no)
-AC_ARG_WITH(sia,
-AS_HELP_STRING([--with-sia], [Build with Tru64 SIA support]),
- TEST_WITH(sia, $withval),
- want_sia=no)
-
AC_ARG_WITH(ldap,
AS_HELP_STRING([--with-ldap=yes|plugin], [Build with LDAP support]),
TEST_WITH(ldap, $withval, plugin),
@@ -96,22 +91,6 @@ AS_HELP_STRING([--with-libunwind], [Build with libunwind support (auto)]),
TEST_WITH(libunwind, $withval),
want_libunwind=auto)
-AC_ARG_WITH(vpopmail,
-AS_HELP_STRING([--with-vpopmail], [Build with vpopmail support (auto)]),
- if test x$withval = xno; then
- want_vpopmail=no
- else
- if test x$withval = xyes || test x$withval = xauto; then
- vpopmail_home="`echo ~vpopmail`"
- want_vpopmail=$withval
- else
- vpopmail_home="$withval"
- want_vpopmail=yes
- fi
- fi, [
- want_vpopmail=no
- ])
-
# Berkeley DB support is more or less broken. Disabled for now.
#AC_ARG_WITH(db,
#AS_HELP_STRING([--with-db], [Build with Berkeley DB support]),
@@ -297,6 +276,14 @@ AC_ISC_POSIX
AC_PROG_CC
AC_PROG_CPP
AC_PROG_CXX # lucene plugin needs this
+AC_CHECK_TOOL([FLEX],[flex],[:])
+AC_CHECK_TOOL([BISON],[bison],[:])
+AS_IF([test "$BISON" = ":" && test ! -e src/lib/event-filter-parser.h],
+ AC_MSG_ERROR([Bison is required when building from git])
+])
+AS_IF([test "$FLEX" = ":" && test ! -e src/lib/event-filter-lexer.c],
+ AC_MSG_ERROR([flex is required when building from git])
+])
AC_HEADER_STDC
AC_C_INLINE
AC_PROG_LIBTOOL
@@ -553,7 +540,6 @@ DOVECOT_WANT_PAM
DOVECOT_WANT_CHECKPASSWORD
DOVECOT_WANT_BSDAUTH
DOVECOT_WANT_GSSAPI
-DOVECOT_WANT_SIA
DOVECOT_WANT_LDAP
DOVECOT_WANT_DB
DOVECOT_WANT_CDB
@@ -562,7 +548,6 @@ DOVECOT_WANT_MYSQL
DOVECOT_WANT_SODIUM
DOVECOT_WANT_SQLITE
DOVECOT_WANT_CASSANDRA
-DOVECOT_WANT_VPOPMAIL
DOVECOT_SQL
@@ -850,7 +835,6 @@ src/lib-ldap/Makefile
src/lib-lua/Makefile
src/lib-mail/Makefile
src/lib-master/Makefile
-src/lib-ntlm/Makefile
src/lib-program-client/Makefile
src/lib-otp/Makefile
src/lib-dovecot/Makefile
diff --git a/doc/Makefile.in b/doc/Makefile.in
index c30db0e..ee62cab 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -132,15 +132,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_checktype2.m4 \
$(top_srcdir)/m4/want_mysql.m4 $(top_srcdir)/m4/want_pam.m4 \
$(top_srcdir)/m4/want_passwd.m4 $(top_srcdir)/m4/want_pgsql.m4 \
$(top_srcdir)/m4/want_prefetch.m4 \
- $(top_srcdir)/m4/want_shadow.m4 $(top_srcdir)/m4/want_sia.m4 \
+ $(top_srcdir)/m4/want_shadow.m4 \
$(top_srcdir)/m4/want_sodium.m4 $(top_srcdir)/m4/want_solr.m4 \
$(top_srcdir)/m4/want_sqlite.m4 \
$(top_srcdir)/m4/want_stemmer.m4 \
$(top_srcdir)/m4/want_textcat.m4 \
- $(top_srcdir)/m4/want_unwind.m4 \
- $(top_srcdir)/m4/want_vpopmail.m4 \
- $(top_srcdir)/m4/want_zlib.m4 $(top_srcdir)/m4/want_zstd.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/want_unwind.m4 $(top_srcdir)/m4/want_zlib.m4 \
+ $(top_srcdir)/m4/want_zstd.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -273,6 +271,7 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BINARY_CFLAGS = @BINARY_CFLAGS@
BINARY_LDFLAGS = @BINARY_LDFLAGS@
+BISON = @BISON@
CASSANDRA_CFLAGS = @CASSANDRA_CFLAGS@
CASSANDRA_LIBS = @CASSANDRA_LIBS@
CC = @CC@
@@ -303,6 +302,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FLEX = @FLEX@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
diff --git a/doc/example-config/Makefile.am b/doc/example-config/Makefile.am
index 5a2dd8b..331d6e9 100644
--- a/doc/example-config/Makefile.am
+++ b/doc/example-config/Makefile.am
@@ -15,6 +15,7 @@ example_DATA = \
dovecot-dict-auth.conf.ext \
dovecot-dict-sql.conf.ext \
dovecot-ldap.conf.ext \
+ dovecot-oauth2.conf.ext \
dovecot-sql.conf.ext
EXTRA_DIST = \
diff --git a/doc/example-config/Makefile.in b/doc/example-config/Makefile.in
index 24d3ba3..6062db0 100644
--- a/doc/example-config/Makefile.in
+++ b/doc/example-config/Makefile.in
@@ -132,15 +132,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_checktype2.m4 \
$(top_srcdir)/m4/want_mysql.m4 $(top_srcdir)/m4/want_pam.m4 \
$(top_srcdir)/m4/want_passwd.m4 $(top_srcdir)/m4/want_pgsql.m4 \
$(top_srcdir)/m4/want_prefetch.m4 \
- $(top_srcdir)/m4/want_shadow.m4 $(top_srcdir)/m4/want_sia.m4 \
+ $(top_srcdir)/m4/want_shadow.m4 \
$(top_srcdir)/m4/want_sodium.m4 $(top_srcdir)/m4/want_solr.m4 \
$(top_srcdir)/m4/want_sqlite.m4 \
$(top_srcdir)/m4/want_stemmer.m4 \
$(top_srcdir)/m4/want_textcat.m4 \
- $(top_srcdir)/m4/want_unwind.m4 \
- $(top_srcdir)/m4/want_vpopmail.m4 \
- $(top_srcdir)/m4/want_zlib.m4 $(top_srcdir)/m4/want_zstd.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/want_unwind.m4 $(top_srcdir)/m4/want_zlib.m4 \
+ $(top_srcdir)/m4/want_zstd.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -274,6 +272,7 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BINARY_CFLAGS = @BINARY_CFLAGS@
BINARY_LDFLAGS = @BINARY_LDFLAGS@
+BISON = @BISON@
CASSANDRA_CFLAGS = @CASSANDRA_CFLAGS@
CASSANDRA_LIBS = @CASSANDRA_LIBS@
CC = @CC@
@@ -304,6 +303,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FLEX = @FLEX@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -478,6 +478,7 @@ example_DATA = \
dovecot-dict-auth.conf.ext \
dovecot-dict-sql.conf.ext \
dovecot-ldap.conf.ext \
+ dovecot-oauth2.conf.ext \
dovecot-sql.conf.ext
EXTRA_DIST = \
diff --git a/doc/example-config/conf.d/10-auth.conf b/doc/example-config/conf.d/10-auth.conf
index 1c59eb4..3e9c4e4 100644
--- a/doc/example-config/conf.d/10-auth.conf
+++ b/doc/example-config/conf.d/10-auth.conf
@@ -10,7 +10,7 @@
#disable_plaintext_auth = yes
# Authentication cache size (e.g. 10M). 0 means it's disabled. Note that
-# bsdauth, PAM and vpopmail require cache_key to be set for caching to be used.
+# bsdauth and PAM require cache_key to be set for caching to be used.
#auth_cache_size = 0
# Time to live for cached data. After TTL expires the cached record is no
# longer used, *except* if the main database lookup returns internal failure.
@@ -94,7 +94,7 @@
#auth_ssl_username_from_cert = no
# Space separated list of wanted authentication mechanisms:
-# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
+# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp
# gss-spnego
# NOTE: See also disable_plaintext_auth setting.
auth_mechanisms = plain
@@ -124,5 +124,4 @@ auth_mechanisms = plain
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
-#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
diff --git a/doc/example-config/conf.d/10-mail.conf b/doc/example-config/conf.d/10-mail.conf
index 41b4a5e..de48f92 100644
--- a/doc/example-config/conf.d/10-mail.conf
+++ b/doc/example-config/conf.d/10-mail.conf
@@ -406,7 +406,8 @@ protocol !indexer-worker {
# Settings to control adding $HasAttachment or $HasNoAttachment keywords.
# By default, all MIME parts with Content-Disposition=attachment, or inlines
# with filename parameter are consired attachments.
-# add-flags-on-save - Add the keywords when saving new mails.
+# add-flags - Add the keywords when saving new mails or when fetching can
+# do it efficiently.
# content-type=type or !type - Include/exclude content type. Excluding will
# never consider the matched MIME part as attachment. Including will only
# negate an exclusion (e.g. content-type=!foo/* content-type=foo/bar).
diff --git a/doc/example-config/conf.d/Makefile.am b/doc/example-config/conf.d/Makefile.am
index 35ff25a..d5d509d 100644
--- a/doc/example-config/conf.d/Makefile.am
+++ b/doc/example-config/conf.d/Makefile.am
@@ -11,7 +11,6 @@ example_DATA = \
auth-sql.conf.ext \
auth-static.conf.ext \
auth-system.conf.ext \
- auth-vpopmail.conf.ext \
10-auth.conf \
10-director.conf \
10-logging.conf \
diff --git a/doc/example-config/conf.d/Makefile.in b/doc/example-config/conf.d/Makefile.in
index 994566c..ab22ad5 100644
--- a/doc/example-config/conf.d/Makefile.in
+++ b/doc/example-config/conf.d/Makefile.in
@@ -132,15 +132,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_checktype2.m4 \
$(top_srcdir)/m4/want_mysql.m4 $(top_srcdir)/m4/want_pam.m4 \
$(top_srcdir)/m4/want_passwd.m4 $(top_srcdir)/m4/want_pgsql.m4 \
$(top_srcdir)/m4/want_prefetch.m4 \
- $(top_srcdir)/m4/want_shadow.m4 $(top_srcdir)/m4/want_sia.m4 \
+ $(top_srcdir)/m4/want_shadow.m4 \
$(top_srcdir)/m4/want_sodium.m4 $(top_srcdir)/m4/want_solr.m4 \
$(top_srcdir)/m4/want_sqlite.m4 \
$(top_srcdir)/m4/want_stemmer.m4 \
$(top_srcdir)/m4/want_textcat.m4 \
- $(top_srcdir)/m4/want_unwind.m4 \
- $(top_srcdir)/m4/want_vpopmail.m4 \
- $(top_srcdir)/m4/want_zlib.m4 $(top_srcdir)/m4/want_zstd.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/want_unwind.m4 $(top_srcdir)/m4/want_zlib.m4 \
+ $(top_srcdir)/m4/want_zstd.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -213,6 +211,7 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BINARY_CFLAGS = @BINARY_CFLAGS@
BINARY_LDFLAGS = @BINARY_LDFLAGS@
+BISON = @BISON@
CASSANDRA_CFLAGS = @CASSANDRA_CFLAGS@
CASSANDRA_LIBS = @CASSANDRA_LIBS@
CC = @CC@
@@ -243,6 +242,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FLEX = @FLEX@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -420,7 +420,6 @@ example_DATA = \
auth-sql.conf.ext \
auth-static.conf.ext \
auth-system.conf.ext \
- auth-vpopmail.conf.ext \
10-auth.conf \
10-director.conf \
10-logging.conf \
diff --git a/doc/example-config/conf.d/auth-vpopmail.conf.ext b/doc/example-config/conf.d/auth-vpopmail.conf.ext
deleted file mode 100644
index f2da976..0000000
--- a/doc/example-config/conf.d/auth-vpopmail.conf.ext
+++ /dev/null
@@ -1,17 +0,0 @@
-# Authentication for vpopmail users. Included from 10-auth.conf.
-#
-# <doc/wiki/AuthDatabase.VPopMail.txt>
-
-passdb {
- driver = vpopmail
-
- # [cache_key=<key>] [webmail=<ip>]
- args =
-}
-
-userdb {
- driver = vpopmail
-
- # [quota_template=<template>] - %q expands to Maildir++ quota
- args = quota_template=quota_rule=*:backend=%q
-}
diff --git a/doc/example-config/dovecot-oauth2.conf.ext b/doc/example-config/dovecot-oauth2.conf.ext
new file mode 100644
index 0000000..2ac31a0
--- /dev/null
+++ b/doc/example-config/dovecot-oauth2.conf.ext
@@ -0,0 +1,66 @@
+### OAuth2 password database configuration
+
+## url for verifying token validity. Token is appended to the URL
+# tokeninfo_url = http://endpoint/oauth/tokeninfo?access_token=
+
+## introspection endpoint, used to gather extra fields and other information.
+# introspection_url = http://endpoint/oauth/me
+
+## How introspection is made, valid values are
+## auth = GET request with Bearer authentication
+## get = GET request with token appended to URL
+## post = POST request with token=bearer_token as content
+## local = perform local validation only
+# introspection_mode = auth
+
+## Force introspection even if tokeninfo contains wanted fields
+## Set this to yes if you are using active_attribute
+# force_introspection = no
+
+## Validation key dictionary (e.g. fs:posix:prefix=/etc/dovecot/keys/)
+## Lookup key is /shared/<azp:default>/<alg>/<kid:default>
+# local_validation_key_dict =
+
+## A single wanted scope of validity (optional)
+# scope = something
+
+## username attribute in response (default: email)
+# username_attribute = email
+
+## username normalization format (default: %Lu)
+# username_format = %Lu
+
+## Attribute name for checking whether account is disabled (optional)
+# active_attribute =
+
+## Expected value in active_attribute (empty = require present, but anything goes)
+# active_value =
+
+## Expected issuer(s) for the token (space separated list)
+# issuers =
+
+## Extra fields to set in passdb response (in passdb static style)
+# pass_attrs =
+
+## Timeout in milliseconds
+# timeout_msecs = 0
+
+## Enable debug logging
+# debug = no
+
+## Max parallel connections (how many simultaneous connections to open)
+# max_parallel_connections = 10
+
+## Max pipelined requests (how many requests to send per connection, requires server-side support)
+# max_pipelined_requests = 1
+
+## HTTP request raw log directory
+# rawlog_dir = /tmp/oauth2
+
+## TLS settings
+# tls_ca_cert_file = /path/to/ca-certificates.txt
+# tls_ca_cert_dir = /path/to/certs/
+# tls_cert_file = /path/to/client/cert
+# tls_key_file = /path/to/client/key
+# tls_cipher_suite = HIGH:!SSLv2
+# tls_allow_invalid_cert = FALSE
diff --git a/doc/man/Makefile.in b/doc/man/Makefile.in
index 86a3d73..7f19210 100644
--- a/doc/man/Makefile.in
+++ b/doc/man/Makefile.in
@@ -131,15 +131,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_checktype2.m4 \
$(top_srcdir)/m4/want_mysql.m4 $(top_srcdir)/m4/want_pam.m4 \
$(top_srcdir)/m4/want_passwd.m4 $(top_srcdir)/m4/want_pgsql.m4 \
$(top_srcdir)/m4/want_prefetch.m4 \
- $(top_srcdir)/m4/want_shadow.m4 $(top_srcdir)/m4/want_sia.m4 \
+ $(top_srcdir)/m4/want_shadow.m4 \
$(top_srcdir)/m4/want_sodium.m4 $(top_srcdir)/m4/want_solr.m4 \
$(top_srcdir)/m4/want_sqlite.m4 \
$(top_srcdir)/m4/want_stemmer.m4 \
$(top_srcdir)/m4/want_textcat.m4 \
- $(top_srcdir)/m4/want_unwind.m4 \
- $(top_srcdir)/m4/want_vpopmail.m4 \
- $(top_srcdir)/m4/want_zlib.m4 $(top_srcdir)/m4/want_zstd.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/want_unwind.m4 $(top_srcdir)/m4/want_zlib.m4 \
+ $(top_srcdir)/m4/want_zstd.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -216,6 +214,7 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BINARY_CFLAGS = @BINARY_CFLAGS@
BINARY_LDFLAGS = @BINARY_LDFLAGS@
+BISON = @BISON@
CASSANDRA_CFLAGS = @CASSANDRA_CFLAGS@
CASSANDRA_LIBS = @CASSANDRA_LIBS@
CC = @CC@
@@ -246,6 +245,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FLEX = @FLEX@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
diff --git a/doc/man/doveadm-auth.1.in b/doc/man/doveadm-auth.1.in
index 3442d1b..f70bfda 100644
--- a/doc/man/doveadm-auth.1.in
+++ b/doc/man/doveadm-auth.1.in
@@ -36,7 +36,8 @@ For multiple conditions the
.B \-x
option could be supplied multiple times.
.br
-Possible names for the
+All the given fields are forwarded to the auth process without checking for
+their validity. The important names for the
.I auth_info
are:
.RS
@@ -60,6 +61,31 @@ The local port, e.g. 143
.TP
.B rport
The remote port, e.g. 24567
+.TP
+.B real_lip
+The "real" local IP address (server) for the test. This is intended to be the
+local server\(aqs IP, while "lip" contains the connecting proxy server\(aqs
+local IP.
+.TP
+.B real_rip
+The "real" remote IP address (client) for the test. This is intended to be the
+connecting proxy server\(aqs IP address, while "rip" contains the original
+client\(aqs IP.
+.TP
+.B real_lport
+The "real" local port for proxied connections.
+.TP
+.B real_rport
+The "real" remote port for proxied connections.
+.TP
+.B local_name
+Provide the client TLS connection\(aqs SNI name.
+.TP
+.B client_id
+IMAP client ID string.
+.TP
+.B session
+Session ID string, mainly for logging purposes.
.RE
.\"------------------------------------------------------------------------
.SH ARGUMENTS
diff --git a/doc/man/doveadm-proxy.1.in b/doc/man/doveadm-proxy.1.in
index 14b0903..53b1bb3 100644
--- a/doc/man/doveadm-proxy.1.in
+++ b/doc/man/doveadm-proxy.1.in
@@ -58,10 +58,14 @@ wildcards (e.g. *@example.org).
.SS proxy kick
.B doveadm proxy kick
[\fB\-a\fP \fIipc_socket_path\fP]
-.I user
+[\fB\-f\fP \fIpassdb_field\fP]
+[\fB\-h\fP \fIhost_list\fP | \fIuser\fP]
+\" .I user
.PP
Kick all the connections being proxied for the given
.IR user .
+or for the given backend
+.IR hosts_list .
.\"-------------------------------------
.SS proxy list
.B doveadm proxy list
diff --git a/doc/man/doveadm-search-query.7 b/doc/man/doveadm-search-query.7
index 07d8326..1f65bba 100644
--- a/doc/man/doveadm-search-query.7
+++ b/doc/man/doveadm-search-query.7
@@ -266,7 +266,7 @@ in the SUBJECT field of the message\(aqs IMAP envelope structure.
.BI TEXT\ string
Matches messages, which contain
.I string
-in the message body.
+in the message headers or body.
.\"-----------------
.TP
.BI TO\ string
diff --git a/doc/wiki/Makefile.in b/doc/wiki/Makefile.in
index 69315b9..806ee7e 100644
--- a/doc/wiki/Makefile.in
+++ b/doc/wiki/Makefile.in
@@ -132,15 +132,13 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_checktype2.m4 \
$(top_srcdir)/m4/want_mysql.m4 $(top_srcdir)/m4/want_pam.m4 \
$(top_srcdir)/m4/want_passwd.m4 $(top_srcdir)/m4/want_pgsql.m4 \
$(top_srcdir)/m4/want_prefetch.m4 \
- $(top_srcdir)/m4/want_shadow.m4 $(top_srcdir)/m4/want_sia.m4 \
+ $(top_srcdir)/m4/want_shadow.m4 \
$(top_srcdir)/m4/want_sodium.m4 $(top_srcdir)/m4/want_solr.m4 \
$(top_srcdir)/m4/want_sqlite.m4 \
$(top_srcdir)/m4/want_stemmer.m4 \
$(top_srcdir)/m4/want_textcat.m4 \
- $(top_srcdir)/m4/want_unwind.m4 \
- $(top_srcdir)/m4/want_vpopmail.m4 \
- $(top_srcdir)/m4/want_zlib.m4 $(top_srcdir)/m4/want_zstd.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/want_unwind.m4 $(top_srcdir)/m4/want_zlib.m4 \
+ $(top_srcdir)/m4/want_zstd.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -213,6 +211,7 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BINARY_CFLAGS = @BINARY_CFLAGS@
BINARY_LDFLAGS = @BINARY_LDFLAGS@
+BISON = @BISON@
CASSANDRA_CFLAGS = @CASSANDRA_CFLAGS@
CASSANDRA_LIBS = @CASSANDRA_LIBS@
CC = @CC@
@@ -243,6 +242,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FLEX = @FLEX@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
diff --git a/dovecot-version.h b/dovecot-version.h
index 2e357b0..2e15592 100644
--- a/dovecot-version.h
+++ b/dovecot-version.h
@@ -1,7 +1,7 @@
#ifndef DOVECOT_VERSION_H
#define DOVECOT_VERSION_H
-#define DOVECOT_REVISION "502c39af9"
+#define DOVECOT_REVISION "89f716dc2"
#define DOVECOT_VERSION_FULL VERSION" ("DOVECOT_REVISION")"
#define DOVECOT_BUILD_INFO DOVECOT_VERSION_FULL
diff --git a/m4/dovecot.m4 b/m4/dovecot.m4
index 190efb2..2b5d895 100644
--- a/m4/dovecot.m4
+++ b/m4/dovecot.m4
@@ -6,7 +6,7 @@ dnl This file is free software; the authors give
dnl unlimited permission to copy and/or distribute it, with or without
dnl modifications, as long as this notice is preserved.
-# serial 31
+# serial 32
dnl
dnl Check for support for D_FORTIFY_SOURCE=2
@@ -69,14 +69,6 @@ AC_DEFUN([DC_DOVECOT_CFLAGS],[
])
])
- AS_IF([test "$have_clang" = "yes"], [
- dnl clang specific options
- AS_IF([test "$want_devel_checks" = "yes"], [
- dnl FIXME: enable once md[45], sha[12] can be compiled without
- dnl CFLAGS="$CFLAGS -fsanitize=integer,undefined -ftrapv"
- :
- ])
- ])
])
AC_DEFUN([AC_LD_WHOLE_ARCHIVE], [
@@ -299,9 +291,9 @@ else
trap "rm -f \$test_out" 0 1 2 3 15
supp_path="\$top_srcdir/run-test-valgrind.supp"
if test -r "\$supp_path"; then
- valgrind -q \$trace_children --leak-check=full --gen-suppressions=all --suppressions="\$supp_path" --log-file=\$test_out \$noundef \$[*]
+ valgrind -q \$trace_children --error-exitcode=213 --leak-check=full --gen-suppressions=all --suppressions="\$supp_path" --log-file=\$test_out \$noundef \$[*]
else
- valgrind -q \$trace_children --leak-check=full --gen-suppressions=all --log-file=\$test_out \$noundef \$[*]
+ valgrind -q \$trace_children --error-exitcode=213 --leak-check=full --gen-suppressions=all --log-file=\$test_out \$noundef \$[*]
fi
ret=\$?
if test -s \$test_out; then
@@ -340,6 +332,7 @@ AC_DEFUN([DC_DOVECOT_HARDENING],[
AC_CC_D_FORTIFY_SOURCE
AC_CC_RETPOLINE
AC_LD_RELRO
+ DOVECOT_WANT_UBSAN
])
AC_DEFUN([DC_DOVECOT],[
@@ -549,3 +542,45 @@ AC_DEFUN([CC_CLANG],[
])
AC_MSG_RESULT([$have_clang])
])
+
+AC_DEFUN([DOVECOT_WANT_UBSAN], [
+ AC_ARG_ENABLE(ubsan,
+ AS_HELP_STRING([--enable-ubsan], [Enable undefined behaviour sanitizes (default=no)]),
+ [want_ubsan=yes], [want_ubsan=no])
+ AC_MSG_CHECKING([whether we want undefined behaviour sanitizer])
+ AC_MSG_RESULT([$want_ubsan])
+ AS_IF([test x$want_ubsan = xyes], [
+ san_flags=""
+ gl_COMPILER_OPTION_IF([-fsanitize=undefined], [
+ san_flags="$san_flags -fsanitize=undefined"
+ AC_DEFINE([HAVE_FSANITIZE_UNDEFINED], [1], [Define if your compiler has -fsanitize=undefined])
+ ])
+ gl_COMPILER_OPTION_IF([-fno-sanitize=nonnull-attribute], [
+ san_flags="$san_flags -fno-sanitize=nonnull-attribute"
+ AC_DEFINE([HAVE_FNO_SANITIZE_NONNULL_ATTRIBUTE], [1], [Define if your compiler has -fno-sanitize=nonnull-attribute])
+ ])
+ gl_COMPILER_OPTION_IF([-fsanitize=implicit-integer-truncation], [
+ san_flags="$san_flags -fsanitize=implicit-integer-truncation"
+ AC_DEFINE([HAVE_FSANITIZE_IMPLICIT_INTEGER_TRUNCATION], [1], [Define if your compiler has -fsanitize=implicit-integer-truncation])
+ ])
+ gl_COMPILER_OPTION_IF([-fsanitize=local-bounds], [
+ san_flags="$san_flags -fsanitize=local-bounds"
+ AC_DEFINE([HAVE_FSANITIZE_LOCAL_BOUNDS], [1], [Define if your compiler has -fsanitize=local-bounds])
+ ])
+ gl_COMPILER_OPTION_IF([-fsanitize=integer], [
+ san_flags="$san_flags -fsanitize=integer"
+ AC_DEFINE([HAVE_FSANITIZE_INTEGER], [1], [Define if your compiler has -fsanitize=integer])
+ ])
+ gl_COMPILER_OPTION_IF([-fsanitize=nullability], [
+ san_flags="$san_flags -fsanitize=nullability"
+ AC_DEFINE([HAVE_FSANITIZE_NULLABILITY], [1], [Define if your compiler has -fsanitize=nullability])
+ ])
+ AS_IF([test "$san_flags" != "" ], [
+ EXTRA_CFLAGS="$EXTRA_CFLAGS $san_flags -U_FORTIFY_SOURCE -g -ggdb3 -O0 -fno-omit-frame-pointer"
+ AC_DEFINE([HAVE_UNDEFINED_SANITIZER], [1], [Define if your compiler supports undefined sanitizers])
+ ], [
+ AC_MSG_ERROR([No undefined sanitizer support in your compiler])
+ ])
+ san_flags=""
+ ])
+])
diff --git a/m4/want_cassandra.m4 b/m4/want_cassandra.m4
index 0648d52..1cf3e58 100644
--- a/m4/want_cassandra.m4
+++ b/m4/want_cassandra.m4
@@ -1,23 +1,25 @@
-AC_DEFUN([DOVECOT_WANT_CASSANDRA], [
- if test $want_cassandra != no; then
- AC_CHECK_LIB(cassandra, cass_session_new, [
- AC_CHECK_HEADER(cassandra.h, [
+ AC_DEFUN([DOVECOT_WANT_CASSANDRA], [
+ AS_IF([test "$want_cassandra" != no], [
+ AC_CHECK_LIB([cassandra], [cass_session_new], [
+ AC_CHECK_HEADER([cassandra.h], [
CASSANDRA_LIBS="$CASSANDRA_LIBS -lcassandra"
-
AC_DEFINE(HAVE_CASSANDRA,, [Build with Cassandra support])
found_sql_drivers="$found_sql_drivers cassandra"
AC_CHECK_LIB(cassandra, cass_cluster_set_constant_speculative_execution_policy, [
AC_DEFINE(HAVE_CASSANDRA_SPECULATIVE_POLICY, 1, [Cassandra supports speculative execution policy])
- ])
+ ],, $CASSANDRA_LIBS)
+ AC_CHECK_LIB(cassandra, cass_cluster_set_use_hostname_resolution, [
+ AC_DEFINE(HAVE_CASS_CLUSTER_SET_USE_HOSTNAME_RESOLUTION,, [Build with cass_cluster_set_use_hostname_resolution() support])
+ ],, $CASSANDRA_LIBS)
+ AC_CHECK_DECLS([CASS_SSL_VERIFY_PEER_IDENTITY_DNS], [], [], [[#include <cassandra.h>]])
], [
- if test $want_cassandra = yes; then
+ AS_IF([test "$want_cassandra" = yes], [
AC_ERROR([Can't build with Cassandra support: cassandra.h not found])
- fi
+ ])
])
- ], [
- if test $want_cassandra = yes; then
+ ], [AS_IF([test "$want_cassandra" = yes], [
AC_ERROR([Can't build with Cassandra support: libcassandra not found])
- fi
])
- fi
+ ])
+ ])
])
diff --git a/m4/want_sia.m4 b/m4/want_sia.m4
deleted file mode 100644
index 2edaeb9..0000000
--- a/m4/want_sia.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-AC_DEFUN([DOVECOT_WANT_SIA], [
- have_sia=no
- if test $want_sia != no; then
- AC_CHECK_FUNC(sia_validate_user, [
- AC_DEFINE(PASSDB_SIA,, [Build with Tru64 SIA support])
- AUTH_LIBS="$AUTH_LIBS -depth_ring_search"
- have_sia=yes
- ], [
- if test $want_sia = yes; then
- AC_ERROR([Can't build with SIA support: sia_validate_user() not found])
- fi
- ])
- fi
-
- if test $have_sia = no; then
- not_passdb="$not_passdb sia"
- else
- passdb="$passdb sia"
- fi
-])
diff --git a/m4/want_vpopmail.m4 b/m4/want_vpopmail.m4
deleted file mode 100644
index fd8ff6a..0000000
--- a/m4/want_vpopmail.m4
+++ /dev/null
@@ -1,33 +0,0 @@
-AC_DEFUN([DOVECOT_WANT_VPOPMAIL], [
- have_vpopmail=no
- if test $want_vpopmail != no; then
- vpop_etc="$vpopmail_home/etc"
- AC_MSG_CHECKING([for vpopmail configuration at $vpop_etc/lib_deps])
- if ! test -f $vpop_etc/lib_deps; then
- AC_MSG_RESULT(not found)
- vpop_etc="$vpopmail_home"
- AC_MSG_CHECKING([for vpopmail configuration at $vpop_etc/lib_deps])
- fi
- if test -f $vpop_etc/lib_deps; then
- AUTH_CFLAGS="$AUTH_CFLAGS `cat $vpop_etc/inc_deps` $CFLAGS"
- AUTH_LIBS="$AUTH_LIBS `cat $vpop_etc/lib_deps`"
- AC_DEFINE(USERDB_VPOPMAIL,, [Build with vpopmail support])
- AC_DEFINE(PASSDB_VPOPMAIL,, [Build with vpopmail support])
- AC_MSG_RESULT(found)
- have_vpopmail=yes
- else
- AC_MSG_RESULT(not found)
- if test $want_vpopmail = yes; then
- AC_ERROR([Can't build with vpopmail support: $vpop_etc/lib_deps not found])
- fi
- fi
- fi
-
- if test $have_vpopmail = no; then
- not_passdb="$not_passdb vpopmail"
- not_userdb="$not_userdb vpopmail"
- else
- userdb="$userdb vpopmail"
- passdb="$passdb vpopmail"
- fi
-])
diff --git a/m4/want_zstd.m4 b/m4/want_zstd.m4
index 4ed262c..b85a812 100644
--- a/m4/want_zstd.m4
+++ b/m4/want_zstd.m4
@@ -12,6 +12,10 @@ AC_DEFUN([DOVECOT_WANT_ZSTD], [
have_compress_lib=yes
COMPRESS_LIBS="$COMPRESS_LIBS $ZSTD_LIBS"
AC_DEFINE([HAVE_ZSTD], [], [Define if you have ZSTD library])
+ AC_CHECK_DECLS([ZSTD_error_parameter_unsupported], [], [], [[#include <zstd_errors.h>]])
+ AC_CHECK_LIB([zstd], [ZSTD_getErrorCode], [
+ AC_DEFINE([HAVE_ZSTD_GETERRORCODE], [1], [Whether zstd has ZSTD_getErrorCode])
+ ], [])
])
AM_CONDITIONAL([BUILD_ZSTD], test "$have_zstd" = "yes")
diff --git a/pigeonhole/ChangeLog b/pigeonhole/ChangeLog
index fce9a63..9cbd600 100644
--- a/pigeonhole/ChangeLog
+++ b/pigeonhole/ChangeLog
@@ -1,18 +1,252 @@
-2020-06-30 11:53:28 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (6c69c917)
+2020-12-12 19:47:56 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (cdd19fe3)
- NEWS: Add news for 0.5.11
+ NEWS: Add news for 0.5.13
M NEWS
-2020-06-30 11:51:26 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (ebadd718)
+2020-11-05 16:03:26 +0200 Aki Tuomi <aki.tuomi@open-xchange.com> (f148e171)
- configure.ac: Update version
+ configure: Update version to 0.5.13
M configure.ac
-2020-05-19 15:40:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (cb631066)
+2020-06-18 00:28:02 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (a1c1ca78)
+
+ lib-sieve: plugins: editheader: Fix infinite loop occurring when header
+ setting is invalid.
+
+
+M src/lib-sieve/plugins/editheader/ext-editheader-common.c
+M tests/extensions/editheader/protected.svtest
+
+2020-03-25 20:36:15 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (4187a868)
+
+ lib-sieve: plugins: editheader: Reformat ext-editheader-common.h.
+
+
+M src/lib-sieve/plugins/editheader/ext-editheader-common.h
+
+2020-03-25 20:33:38 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (879d2121)
+
+ lib-sieve: plugins: editheader: Reformat ext-editheader-common.c.
+
+
+M src/lib-sieve/plugins/editheader/ext-editheader-common.c
+
+2020-06-11 20:53:26 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (fc605f10)
+
+ testsuite: cmd-test-mailbox - Check mailbox name validity.
+
+ Fixes assert failure occurring either at compiletime or at runtime
+ (depending on whether the value originates from variable).
+
+M src/testsuite/cmd-test-mailbox.c
+
+2020-06-11 20:53:24 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (5c0c25fd)
+
+ lib-sieve: plugins: special-use: tst-specialuse-exists - Check mailbox name
+ validity.
+
+ Fixes assert failure occurring either at compiletime or at runtime
+ (depending on whether the value originates from variable).
+
+M src/lib-sieve/plugins/special-use/tst-specialuse-exists.c
+M tests/extensions/special-use/errors.svtest
+A tests/extensions/special-use/errors/specialuse_exists-bad-utf8.sieve
+M tests/extensions/special-use/errors/syntax.sieve
+
+2020-06-11 20:53:23 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c65f1c4c)
+
+ lib-sieve: plugins: mailbox: tst-mailboxexists - Check mailbox name validity
+ at runtime.
+
+ Fixes assert failure occurring at runtime (when value originates from
+ variable).
+
+M src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
+M tests/extensions/mailbox/errors.svtest
+A tests/extensions/mailbox/errors/mailboxexists-bad-utf8.sieve
+
+2020-06-11 20:53:23 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0659935e)
+
+ lib-sieve: ext-fileinto - Consistently use sieve_mailbox_check_name().
+
+
+M src/lib-sieve/ext-fileinto.c
+
+2020-06-11 22:33:36 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (dcb93b58)
+
+ tests: extensions: metadata: Add tests for bad UTF-8 in mailbox names.
+
+
+M tests/extensions/metadata/errors.svtest
+A tests/extensions/metadata/errors/metadata-bad-utf8.sieve
+A tests/extensions/metadata/errors/metadataexists-bad-utf8.sieve
+M tests/extensions/metadata/errors/syntax.sieve
+
+2020-06-11 21:56:44 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (f87ddf2b)
+
+ tests: extensions: mailbox: Add tests for syntax errors.
+
+
+M Makefile.am
+A tests/extensions/mailbox/errors.svtest
+A tests/extensions/mailbox/errors/syntax.sieve
+
+2020-06-11 21:35:47 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b62d83a2)
+
+ tests: execute: Add tests for fileinto command executed with bad UTF-8 in
+ folder name.
+
+ Compile error is avoided by putting the mailbox name in a variable, which is
+ (currently) only evaluated at runtime.
+
+M tests/execute/errors.svtest
+A tests/execute/errors/fileinto-bad-utf8.sieve
+
+2020-06-11 21:26:56 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (cb916cca)
+
+ tests: compile: Add tests for fileinto command compile errors.
+
+
+M tests/compile/errors.svtest
+A tests/compile/errors/fileinto.sieve
+
+2020-06-11 20:53:22 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (01b3eaa3)
+
+ lib-sieve: sieve-actions - Fix error message in sieve_mailbox_check_name().
+
+
+M src/lib-sieve/sieve-actions.c
+
+2020-06-11 20:53:22 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2085ed3d)
+
+ lib-sieve: plugins: metadata: tst-metadataexists - Fix warning message
+ prefix in tst_metadataexists_operation_execute().
+
+
+M src/lib-sieve/plugins/metadata/tst-metadataexists.c
+
+2020-06-11 20:53:22 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ac91b1fa)
+
+ testsuite: cmd-test-mailbox - Move runtime execution to separate functions.
+
+ Reduces code indent.
+
+M src/testsuite/cmd-test-mailbox.c
+
+2020-06-11 20:53:21 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2ada0123)
+
+ lib-sieve: plugins: special-use: tst-specialuse-exists - Restructure
+ tst_specialuse_exists_operation_execute().
+
+ Reduces indent.
+
+M src/lib-sieve/plugins/special-use/tst-specialuse-exists.c
+
+2020-06-11 20:53:21 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ceb4a50b)
+
+ lib-sieve: plugins: special-use: tst-specialuse-exists - Split off
+ tst_specialuse_exists_check_flag().
+
+ Reduces code indent.
+
+M src/lib-sieve/plugins/special-use/tst-specialuse-exists.c
+
+2020-06-11 20:53:20 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (3bf389e2)
+
+ lib-sieve: plugins: metadata: tst-metadataexists - Split off
+ tst_metadataexists_check_annotation().
+
+ Reduces code indent.
+
+M src/lib-sieve/plugins/metadata/tst-metadataexists.c
+
+2020-06-11 20:53:20 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d58ba0b3)
+
+ lib-sieve: plugins: mailbox: tst-mailboxexists - Restructure
+ tst_mailboxexists_operation_execute().
+
+ Reduces code indent.
+
+M src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
+
+2020-06-11 20:53:20 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d27a2ca2)
+
+ lib-sieve: plugins: mailbox: tst-mailboxexists - Split off
+ tst_mailboxexists_test_mailbox().
+
+ Reduces code indent.
+
+M src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
+
+2020-06-11 20:53:19 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (06034e01)
+
+ lib-sieve: ext-fileinto - Improve error message for invalid folder name.
+
+
+M src/lib-sieve/ext-fileinto.c
+
+2020-06-11 20:53:19 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (3a8094f0)
+
+ lib-sieve: ext-fileinto - Always check validity of folder name at runtime.
+
+
+M src/lib-sieve/ext-fileinto.c
+
+2020-06-11 20:53:19 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d09d71a8)
+
+ testsuite: cmd-test-mailbox - Fix comment in
+ cmd_test_mailbox_operation_execute().
+
+
+M src/testsuite/cmd-test-mailbox.c
+
+2020-06-11 20:53:18 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (aed6f90c)
+
+ lib-sieve: plugins: special-use: Reformat tst-specialuse-exists.c.
+
+
+M src/lib-sieve/plugins/special-use/tst-specialuse-exists.c
+
+2020-06-11 20:53:18 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (7793c0dc)
+
+ lib-sieve: plugins: metadata: Reformat tst-metadataexists.c.
+
+
+M src/lib-sieve/plugins/metadata/tst-metadataexists.c
+
+2020-06-11 20:53:17 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (22e3c512)
+
+ lib-sieve: plugins: metadata: Reformat tst-metadata.c.
+
+
+M src/lib-sieve/plugins/metadata/tst-metadata.c
+
+2020-06-11 20:53:15 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (64ec8a73)
+
+ lib-sieve: plugins: mailbox: Reformat tst-mailboxexists.c.
+
+
+M src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
+
+2020-06-11 20:53:08 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c80f315d)
+
+ lib-sieve: Reformat ext-fileinto.c.
+
+
+M src/lib-sieve/ext-fileinto.c
+
+2020-08-13 20:25:11 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (529fc691)
+
+ testsuite: cmd-test-fail - Remove unused _get_generator_context().
+
+
+M src/testsuite/cmd-test-fail.c
+
+2020-05-19 15:40:04 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (33c8d372)
lib-sieve: Adjust to message_parser_init() API change
@@ -20,6 +254,394 @@ M configure.ac
M src/lib-sieve/plugins/notify/ext-notify-common.c
M src/lib-sieve/sieve-message.c
+2020-06-30 11:53:28 +0300 Aki Tuomi <aki.tuomi@open-xchange.com> (cf9062c7)
+
+ NEWS: Add news for 0.5.11
+
+
+M NEWS
+
+2020-07-09 02:45:26 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d8bd2c73)
+
+ lib-sieve: plugins: duplicate: Only save duplicate entry when the last
+ script executed successfully.
+
+ This prevents prematurely marking duplicates when errors occur during result
+ execution. Before, the pending duplicate database changes were committed
+ after each script executed in the sequence. If a later script failed,
+ duplicate tests would mark duplicate messages prematurely.
+
+ Disadvantage is that actions in earlier scripts that are shielded by a
+ duplicate test can be executed twice erroneously when errors occurred in
+ later scripts in the previous delivery. Still, unexpected duplicate action
+ execution is better than losing mail due to erroneous duplicate detections.
+
+ Fixing this properly requires extensively restructuring result execution.
+
+M src/lib-sieve/plugins/duplicate/ext-duplicate-common.c
+
+2020-07-27 22:27:09 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (caca3091)
+
+ lib-sieve: sieve - Explicitly finish the result in
+ sieve_multiscript_finish().
+
+
+M src/lib-sieve/sieve.c
+
+2020-07-27 22:26:39 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ab3bb29b)
+
+ lib-sieve: sieve-result - Add sieve_result_finish().
+
+
+M src/lib-sieve/sieve-result.c
+M src/lib-sieve/sieve-result.h
+
+2019-10-01 21:49:33 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b3899bd5)
+
+ lib-sieve: sieve-actions - Add "last" parameter to action finish method.
+
+ This indicates whether the last script in the sequence is being executed.
+
+M src/lib-sieve/plugins/duplicate/ext-duplicate-common.c
+M src/lib-sieve/sieve-actions.h
+M src/lib-sieve/sieve-result.c
+M src/lib-sieve/sieve-result.h
+M src/lib-sieve/sieve.c
+M src/testsuite/testsuite-result.c
+
+2020-07-09 02:42:29 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (58d81c59)
+
+ lib-sieve: plugins: duplicate: ext-duplicate-common - Restructure
+ act_duplicate_mark_finish().
+
+
+M src/lib-sieve/plugins/duplicate/ext-duplicate-common.c
+
+2020-06-08 19:26:58 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (d71045c1)
+
+ testsuite: Reliably terminate tests upon failure.
+
+ Before, it would only terminate the test when it failed explicitly using the
+ test_fail command.
+
+M Makefile.am
+M src/testsuite/cmd-test-config.c
+M src/testsuite/cmd-test-fail.c
+M src/testsuite/cmd-test-mailbox.c
+M src/testsuite/cmd-test-message.c
+M src/testsuite/cmd-test.c
+M src/testsuite/testsuite-common.c
+M src/testsuite/testsuite-common.h
+A tests/failures/fuzz1.svtest
+A tests/failures/fuzz2.svtest
+
+2020-06-10 12:27:08 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6359033b)
+
+ testsuite: testsuite-mailstore - Preserve all allocated mails until result
+ is reset.
+
+ The actions contained in the result may keep references to the overriden
+ mail struct, so these need to be preserved.
+
+M src/testsuite/testsuite-mailstore.c
+M src/testsuite/testsuite-mailstore.h
+M src/testsuite/testsuite-result.c
+
+2020-06-08 19:26:50 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2f20547d)
+
+ testsuite: testsuite-message - Preserve all allocated mails until result is
+ reset.
+
+ The actions contained in the result may keep references to the overriden
+ mail struct, so these need to be preserved.
+
+M src/testsuite/cmd-test-result.c
+M src/testsuite/testsuite-message.c
+M src/testsuite/testsuite-message.h
+M src/testsuite/testsuite-result.c
+M src/testsuite/testsuite.c
+
+2020-06-08 19:26:47 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (c3fca0a1)
+
+ testsuite: Drop needless result reference in testsuite_run().
+
+ This holds a reference to the initial result, causing it to linger after
+ test_result_reset, thereby also holding a reference to the message context,
+ preventing it from being cleared. This in turn, can keep references to
+ modified message versions that cause the main message object to remain
+ referenced. This causes a panic in specific cases upon test_result_reset:
+
+ Panic: Input stream data unexpectedly has references
+
+M src/testsuite/testsuite.c
+M tests/extensions/editheader/execute.svtest
+
+2020-06-08 19:26:45 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (4635acae)
+
+ testsuite: Properly check address value parsed from message.
+
+ Caused a panic when input was not valid. This is only relevant to the test
+ suite and doesn't occur anywhere else (apart from the previous similar
+ commit for lib-sieve-tool).
+
+ Panic was:
+
+ Panic in file smtp-address.c: line 684 (smtp_address_write): assertion
+ failed: (smtp_char_is_qpair(*p))`
+
+M src/testsuite/testsuite-message.c
+M tests/extensions/vacation/smtp.svtest
+
+2020-06-10 13:02:10 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (39e9b39e)
+
+ lib-sieve-tool: sieve-tool - Properly check address value parsed from
+ message.
+
+
+M src/lib-sieve-tool/sieve-tool.c
+
+2020-06-08 19:26:42 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (89ddd79d)
+
+ lib-sieve-tool: Add sieve_tool_get_mail_raw_user().
+
+
+M src/lib-sieve-tool/sieve-tool.c
+M src/lib-sieve-tool/sieve-tool.h
+
+2020-06-08 19:26:40 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (571964e9)
+
+ lib-sieve: sieve-interpreter - Add sieve_interpreter_program_jump_to().
+
+
+M src/lib-sieve/sieve-interpreter.c
+M src/lib-sieve/sieve-interpreter.h
+
+2020-06-08 19:26:38 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (b5ccedae)
+
+ lib-sieve: sieve-interpreter - Split off
+ sieve_interpreter_do_program_jump().
+
+
+M src/lib-sieve/sieve-interpreter.c
+
+2020-06-08 19:26:35 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (3e0a599e)
+
+ lib-sieve: sieve-interpreter - Split off
+ sieve_interpreter_check_program_jump().
+
+
+M src/lib-sieve/sieve-interpreter.c
+
+2020-06-08 19:26:33 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ad7bb544)
+
+ lib-sieve: sieve-interpreter - Restructure sieve_interpreter_program_jump().
+
+
+M src/lib-sieve/sieve-interpreter.c
+
+2020-06-08 19:26:30 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (cba117cc)
+
+ lib-sieve: sieve-interpreter - Drop needless result reference in
+ sieve_interpreter_run().
+
+ It is immediately referenced in sieve_interpreter_continue(), called from
+ there.
+
+M src/lib-sieve/sieve-interpreter.c
+
+2020-06-08 19:26:19 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (de09a841)
+
+ lib-sieve: sieve-address - Require error_r parameters to not be NULL.
+
+ The error string is currently always used and it must be, so there is no
+ need to allow for the error_r paramerter to be NULL and unused.
+
+M src/lib-sieve/sieve-address.c
+
+2020-07-30 23:33:04 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2028ada8)
+
+ testsuite: Add support for test cases with expected failure.
+
+
+M src/testsuite/testsuite-common.c
+M src/testsuite/testsuite-common.h
+M src/testsuite/testsuite.c
+
+2020-06-09 12:43:16 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2f645637)
+
+ testsuite: Reformat cmd-test.c.
+
+
+M src/testsuite/cmd-test.c
+
+2020-06-09 12:37:48 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ecc4a3ac)
+
+ testsuite: Reformat cmd-test-result.c.
+
+
+M src/testsuite/cmd-test-result.c
+
+2020-06-09 12:32:42 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6d250020)
+
+ testsuite: Reformat cmd-test-message.c.
+
+
+M src/testsuite/cmd-test-message.c
+
+2020-06-09 12:15:54 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (2dbd2890)
+
+ testsuite: Reformat cmd-test-mailbox.c.
+
+
+M src/testsuite/cmd-test-mailbox.c
+
+2020-06-09 12:08:22 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (89dd012a)
+
+ testsuite: Reformat cmd-test-fail.c.
+
+
+M src/testsuite/cmd-test-fail.c
+
+2020-06-09 12:00:28 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (bc26d8b6)
+
+ testsuite: Reformat testsuite-mailstore.h.
+
+
+M src/testsuite/testsuite-mailstore.h
+
+2020-06-09 12:00:13 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (ad35af9c)
+
+ testsuite: Reformat testsuite-mailstore.c.
+
+
+M src/testsuite/testsuite-mailstore.c
+
+2020-06-09 02:36:54 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0324c6dd)
+
+ testsuite: Reformat testsuite-common.c.
+
+
+M src/testsuite/testsuite-common.c
+
+2020-06-09 02:30:42 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (f5a7bbb0)
+
+ testsuite: Reformat testsuite-common.h.
+
+
+M src/testsuite/testsuite-common.h
+
+2020-06-09 11:51:38 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (6dc7b477)
+
+ lib-sieve-tool: Reformat sieve-tool.h.
+
+
+M src/lib-sieve-tool/sieve-tool.h
+
+2020-06-09 11:51:09 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (76d6da31)
+
+ lib-sieve-tool: Reformat sieve-tool.c.
+
+
+M src/lib-sieve-tool/sieve-tool.c
+
+2020-03-09 10:50:07 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (fc8940b1)
+
+ lib-sieve: Reformat sieve-address.h.
+
+
+M src/lib-sieve/sieve-address.h
+
+2020-03-09 10:49:57 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (f8effd5c)
+
+ lib-sieve: Reformat sieve-address.c.
+
+
+M src/lib-sieve/sieve-address.c
+
+2020-06-11 14:49:24 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0cf888a0)
+
+ lib-sieve: plugins: relational: Fix segfault occurring in
+ mcht_relational_validate().
+
+ The segfault happens when this match type is the last argument of the test
+ command. This situation is not possible in a valid script; positional
+ arguments are normally present after that, which would prevent the segfault.
+ A variant of this bug occurs when the match type also has no argument of its
+ own. In either case the segfault is caused by referring to absent tag
+ arguments, which causes a NULL dereference.
+
+M src/lib-sieve/plugins/relational/ext-relational-common.c
+M tests/extensions/relational/errors.svtest
+A tests/extensions/relational/errors/syntax.sieve
+
+2020-06-17 23:54:17 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (0b96fb53)
+
+ lib-sieve: plugins: relational: Reformat ext-relational-common.h.
+
+
+M src/lib-sieve/plugins/relational/ext-relational-common.h
+
+2020-06-17 23:53:56 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (81083e3e)
+
+ lib-sieve: plugins: relational: Reformat ext-relational-common.c.
+
+
+M src/lib-sieve/plugins/relational/ext-relational-common.c
+
+2020-05-20 02:03:17 +0200 Stephan Bosch <stephan.bosch@open-xchange.com> (1b9b5ce2)
+
+ tests: plugins: extprograms: pipe/errors.svtest - Fix "Timeout" test.
+
+
+M tests/plugins/extprograms/pipe/errors.svtest
+
+2020-05-07 14:44:12 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (1a8be20e)
+
+ managesieve-login: proxy - Forward remote AUTHENTICATE TRYLATER failures
+
+
+M src/managesieve-login/managesieve-proxy.c
+
+2020-05-06 20:37:03 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (bb5c14a1)
+
+ managesieve-login: proxy: Reconnect on temporary authentication failures
+
+
+M src/managesieve-login/managesieve-proxy.c
+
+2020-05-07 15:01:43 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (613eb103)
+
+ managesieve-login: proxy - Parse AUTHENTICATE reply more correctly
+
+ It's still not fully correct, but we don't have existing code that supports
+ parsing it.
+
+M src/managesieve-login/managesieve-proxy.c
+
+2020-05-06 20:40:14 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (b817b261)
+
+ managesieve-login: Adjust to proxy_error() -> proxy_failed() API change
+
+
+M src/managesieve-login/client.c
+M src/managesieve-login/managesieve-proxy.c
+M src/managesieve-login/managesieve-proxy.h
+
+2020-05-06 18:10:30 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (27bb1903)
+
+ managesieve-login: Replace e_error()+client_proxy_failed() calls with
+ login_proxy_failed()
+
+
+M src/managesieve-login/managesieve-proxy.c
+
+2020-05-06 16:54:15 +0300 Timo Sirainen <timo.sirainen@open-xchange.com> (7a6cc989)
+
+ managesieve-login: Remove redundant/early freeing of proxy_password
+
+
+M src/managesieve-login/managesieve-proxy.c
+
2020-02-18 23:27:03 +0100 Stephan Bosch <stephan.bosch@open-xchange.com> (038274fe)
global: Properly parse Message-ID header.
diff --git a/pigeonhole/Makefile.am b/pigeonhole/Makefile.am
index 3d1ff92..d3e3ddd 100644
--- a/pigeonhole/Makefile.am
+++ b/pigeonhole/Makefile.am
@@ -138,6 +138,7 @@ test_cases = \
tests/extensions/enotify/mailto.svtest \
tests/extensions/environment/basic.svtest \
tests/extensions/environment/rfc.svtest \
+ tests/extensions/mailbox/errors.svtest \
tests/extensions/mailbox/execute.svtest \
tests/extensions/date/basic.svtest \
tests/extensions/date/date-parts.svtest \
@@ -191,6 +192,13 @@ test_cases = \
$(test_cases):
@$(TEST_BIN) $(top_srcdir)/$@
+failure_test_cases = \
+ tests/failures/fuzz1.svtest \
+ tests/failures/fuzz2.svtest
+
+$(failure_test_cases):
+ @$(TEST_BIN) -F $(top_srcdir)/$@
+
TEST_EXTPROGRAMS_BIN = $(TEST_BIN) \
-P src/plugins/sieve-extprograms/.libs/sieve_extprograms
@@ -209,8 +217,8 @@ extprograms_test_cases = \
$(extprograms_test_cases):
@$(TEST_EXTPROGRAMS_BIN) $(top_srcdir)/$@
-.PHONY: test test-plugins $(test_cases) $(extprograms_test_cases)
-test: all-am $(test_cases)
+.PHONY: test test-plugins $(test_cases) $(failure_test_cases) $(extprograms_test_cases)
+test: all-am $(test_cases) $(failure_test_cases)
test-plugins: all-am $(extprograms_test_cases)
check: check-am test
diff --git a/pigeonhole/Makefile.in b/pigeonhole/Makefile.in
index 2be8fe4..5acd818 100644
--- a/pigeonhole/Makefile.in
+++ b/pigeonhole/Makefile.in
@@ -540,6 +540,7 @@ test_cases = \
tests/extensions/enotify/mailto.svtest \
tests/extensions/environment/basic.svtest \
tests/extensions/environment/rfc.svtest \
+ tests/extensions/mailbox/errors.svtest \
tests/extensions/mailbox/execute.svtest \
tests/extensions/date/basic.svtest \
tests/extensions/date/date-parts.svtest \
@@ -590,6 +591,10 @@ test_cases = \
tests/deprecated/imapflags/errors.svtest \
$(test_unfinished)
+failure_test_cases = \
+ tests/failures/fuzz1.svtest \
+ tests/failures/fuzz2.svtest
+
TEST_EXTPROGRAMS_BIN = $(TEST_BIN) \
-P src/plugins/sieve-extprograms/.libs/sieve_extprograms
@@ -1192,11 +1197,14 @@ noop:
$(test_cases):
@$(TEST_BIN) $(top_srcdir)/$@
+$(failure_test_cases):
+ @$(TEST_BIN) -F $(top_srcdir)/$@
+
$(extprograms_test_cases):
@$(TEST_EXTPROGRAMS_BIN) $(top_srcdir)/$@
-.PHONY: test test-plugins $(test_cases) $(extprograms_test_cases)
-test: all-am $(test_cases)
+.PHONY: test test-plugins $(test_cases) $(failure_test_cases) $(extprograms_test_cases)
+test: all-am $(test_cases) $(failure_test_cases)
test-plugins: all-am $(extprograms_test_cases)
check: check-am test
diff --git a/pigeonhole/NEWS b/pigeonhole/NEWS
index 92c8d7d..5b504c9 100644
--- a/pigeonhole/NEWS
+++ b/pigeonhole/NEWS
@@ -1,3 +1,34 @@
+v0.5.13 2021-01-04 Aki Tuomi <aki.tuomi@open-xchange.com>
+
+ - duplicate: The test was handled badly in a multiscript (sieve_before,
+ sieve_after) scenario in which an earlier script in the sequence with
+ a duplicate test succeeded, while a later script caused a runtime
+ failure. In that case, the message is recorded for duplicate tracking,
+ while the message may not actually have been delivered in the end.
+ - editheader: Sieve interpreter entered infinite loop at startup when
+ the "editheader" configuration listed an invalid header name. This
+ problem can only be triggered by the administrator.
+ - relational: The Sieve relational extension can cause a segfault at
+ compile time. This is triggered by invalid script syntax. The segfault
+ happens when this match type is the last argument of the test command.
+ This situation is not possible in a valid script; positional arguments
+ are normally present after that, which would prevent the segfault.
+ - sieve: For some Sieve commands the provided mailbox name is not
+ properly checked for UTF-8 validity, which can cause assert crashes at
+ runtime when an invalid mailbox name is encountered. This can be
+ caused by the user by writing a bad Sieve script involving the
+ affected commands ("mailboxexists", "specialuse_exists").
+ This can be triggered by the remote sender only when the user has
+ written a Sieve script that passes message content to one of the
+ affected commands.
+ - sieve: Large sequences of 8-bit octets passed to certain Sieve
+ commands that create or modify message headers that allow UTF-8 text
+ (vacation, notify and addheader) can cause the delivery or IMAP
+ process (when IMAPSieve is used) to enter a memory-consuming
+ semi-infinite loop that ends when the process exceeds its memory
+ limits. Logged in users can cause these hangs only for their own
+ processes.
+
v0.5.11 2020-08-12 Aki Tuomi <aki.tuomi@open-xchange.com>
* managesieve: managesieve_max_line_length setting is now a "size" type
diff --git a/pigeonhole/configure b/pigeonhole/configure
index 1142d23..99c4c0d 100755
--- a/pigeonhole/configure
+++ b/pigeonhole/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Pigeonhole 0.5.11.
+# Generated by GNU Autoconf 2.69 for Pigeonhole 0.5.13.
#
# Report bugs to <dovecot@dovecot.org>.
#
@@ -589,9 +589,9 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Pigeonhole'
-PACKAGE_TARNAME='dovecot-2.3.11-pigeonhole'
-PACKAGE_VERSION='0.5.11'
-PACKAGE_STRING='Pigeonhole 0.5.11'
+PACKAGE_TARNAME='dovecot-2.3-pigeonhole'
+PACKAGE_VERSION='0.5.13'
+PACKAGE_STRING='Pigeonhole 0.5.13'
PACKAGE_BUGREPORT='dovecot@dovecot.org'
PACKAGE_URL=''
@@ -1415,7 +1415,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Pigeonhole 0.5.11 to adapt to many kinds of systems.
+\`configure' configures Pigeonhole 0.5.13 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1465,7 +1465,7 @@ Fine tuning of the installation directories:
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root
- [DATAROOTDIR/doc/dovecot-2.3.11-pigeonhole]
+ [DATAROOTDIR/doc/dovecot-2.3-pigeonhole]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1487,7 +1487,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Pigeonhole 0.5.11:";;
+ short | recursive ) echo "Configuration of Pigeonhole 0.5.13:";;
esac
cat <<\_ACEOF
@@ -1614,7 +1614,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Pigeonhole configure 0.5.11
+Pigeonhole configure 0.5.13
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1983,7 +1983,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Pigeonhole $as_me 0.5.11, which was
+It was created by Pigeonhole $as_me 0.5.13, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2333,7 +2333,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
cat >>confdefs.h <<_ACEOF
-#define PIGEONHOLE_ABI_VERSION "0.5.ABIv11($PACKAGE_VERSION)"
+#define PIGEONHOLE_ABI_VERSION "0.5.ABIv13($PACKAGE_VERSION)"
_ACEOF
@@ -2872,8 +2872,8 @@ fi
# Define the identity of the package.
- PACKAGE='dovecot-2.3.11-pigeonhole'
- VERSION='0.5.11'
+ PACKAGE='dovecot-2.3-pigeonhole'
+ VERSION='0.5.13'
# Some tools Automake needs.
@@ -13968,7 +13968,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Pigeonhole $as_me 0.5.11, which was
+This file was extended by Pigeonhole $as_me 0.5.13, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14034,7 +14034,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-Pigeonhole config.status 0.5.11
+Pigeonhole config.status 0.5.13
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/pigeonhole/configure.ac b/pigeonhole/configure.ac
index 237281a..d7b96f5 100644
--- a/pigeonhole/configure.ac
+++ b/pigeonhole/configure.ac
@@ -2,8 +2,8 @@ AC_PREREQ([2.59])
# Be sure to update ABI version also if anything changes that might require
# recompiling plugins. Most importantly that means if any structs are changed.
-AC_INIT([Pigeonhole], [0.5.11], [dovecot@dovecot.org], [dovecot-2.3.11-pigeonhole])
-AC_DEFINE_UNQUOTED([PIGEONHOLE_ABI_VERSION], "0.5.ABIv11($PACKAGE_VERSION)", [Pigeonhole ABI version])
+AC_INIT([Pigeonhole], [0.5.13], [dovecot@dovecot.org], [dovecot-2.3-pigeonhole])
+AC_DEFINE_UNQUOTED([PIGEONHOLE_ABI_VERSION], "0.5.ABIv13($PACKAGE_VERSION)", [Pigeonhole ABI version])
AC_CONFIG_AUX_DIR([.])
AC_CONFIG_SRCDIR([src])
diff --git a/pigeonhole/pigeonhole-version.h b/pigeonhole/pigeonhole-version.h
index c6c7e15..43a7ef3 100644
--- a/pigeonhole/pigeonhole-version.h
+++ b/pigeonhole/pigeonhole-version.h
@@ -1,6 +1,6 @@
#ifndef PIGEONHOLE_VERSION_H
#define PIGEONHOLE_VERSION_H
-#define PIGEONHOLE_VERSION_FULL PIGEONHOLE_VERSION" (6c69c917)"
+#define PIGEONHOLE_VERSION_FULL PIGEONHOLE_VERSION" (cdd19fe3)"
#endif /* PIGEONHOLE_VERSION_H */
diff --git a/pigeonhole/src/lib-sieve-tool/sieve-tool.c b/pigeonhole/src/lib-sieve-tool/sieve-tool.c
index 0536f18..dc41ab0 100644
--- a/pigeonhole/src/lib-sieve-tool/sieve-tool.c
+++ b/pigeonhole/src/lib-sieve-tool/sieve-tool.c
@@ -68,22 +68,23 @@ struct sieve_tool *sieve_tool;
* Settings management
*/
-static const char *sieve_tool_sieve_get_setting
-(void *context, const char *identifier)
+static const char *
+sieve_tool_sieve_get_setting(void *context, const char *identifier)
{
struct sieve_tool *tool = (struct sieve_tool *) context;
- if ( tool->setting_callback != NULL )
- return tool->setting_callback(tool->setting_callback_context, identifier);
+ if (tool->setting_callback != NULL) {
+ return tool->setting_callback(tool->setting_callback_context,
+ identifier);
+ }
- if ( tool->mail_user_dovecot == NULL )
+ if (tool->mail_user_dovecot == NULL)
return NULL;
return mail_user_plugin_getenv(tool->mail_user_dovecot, identifier);
}
-static const char *sieve_tool_sieve_get_homedir
-(void *context)
+static const char *sieve_tool_sieve_get_homedir(void *context)
{
struct sieve_tool *tool = (struct sieve_tool *) context;
@@ -99,8 +100,8 @@ const struct sieve_callbacks sieve_tool_callbacks = {
* Initialization
*/
-static void sieve_tool_get_user_data
-(const char **username_r, const char **homedir_r)
+static void
+sieve_tool_get_user_data(const char **username_r, const char **homedir_r)
{
uid_t process_euid = geteuid();
struct passwd *pw;
@@ -109,17 +110,15 @@ static void sieve_tool_get_user_data
user = getenv("USER");
home = getenv("HOME");
- if ( user == NULL || *user == '\0' ||
- home == NULL || *home == '\0' ) {
-
+ if (user == NULL || *user == '\0' || home == NULL || *home == '\0') {
if ((pw = getpwuid(process_euid)) != NULL) {
user = pw->pw_name;
home = pw->pw_dir;
}
}
- if ( username_r != NULL ) {
- if ( user == NULL || *user == '\0' ) {
+ if (username_r != NULL) {
+ if (user == NULL || *user == '\0') {
i_fatal("couldn't lookup our username (uid=%s)",
dec2str(process_euid));
}
@@ -127,14 +126,13 @@ static void sieve_tool_get_user_data
*username_r = t_strdup(user);
}
- if ( homedir_r != NULL )
+ if (homedir_r != NULL)
*homedir_r = t_strdup(home);
}
-
-struct sieve_tool *sieve_tool_init
-(const char *name, int *argc, char **argv[], const char *getopt_str,
- bool no_config)
+struct sieve_tool *
+sieve_tool_init(const char *name, int *argc, char **argv[],
+ const char *getopt_str, bool no_config)
{
struct sieve_tool *tool;
enum master_service_flags service_flags =
@@ -142,11 +140,11 @@ struct sieve_tool *sieve_tool_init
MASTER_SERVICE_FLAG_DONT_SEND_STATS |
MASTER_SERVICE_FLAG_NO_INIT_DATASTACK_FRAME;
- if ( no_config )
+ if (no_config)
service_flags |= MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS;
- master_service = master_service_init
- (name, service_flags, argc, argv, getopt_str);
+ master_service = master_service_init(name, service_flags,
+ argc, argv, getopt_str);
tool = i_new(struct sieve_tool, 1);
tool->name = i_strdup(name);
@@ -161,19 +159,20 @@ int sieve_tool_getopt(struct sieve_tool *tool)
{
int c;
- while ( (c = master_getopt(master_service)) > 0 ) {
- switch ( c ) {
+ while ((c = master_getopt(master_service)) > 0) {
+ switch (c) {
case 'x':
/* extensions */
- if ( tool->sieve_extensions != NULL ) {
- i_fatal_status(EX_USAGE,
- "duplicate -x option specified, but only one allowed.");
+ if (tool->sieve_extensions != NULL) {
+ i_fatal_status(
+ EX_USAGE,
+ "duplicate -x option specified, "
+ "but only one allowed.");
}
-
tool->sieve_extensions = i_strdup(optarg);
break;
case 'u':
- if ( tool->username == NULL )
+ if (tool->username == NULL)
tool->username = i_strdup(optarg);
break;
case 'P':
@@ -196,17 +195,16 @@ int sieve_tool_getopt(struct sieve_tool *tool)
return c;
}
-static void sieve_tool_load_plugins
-(struct sieve_tool *tool)
+static void sieve_tool_load_plugins(struct sieve_tool *tool)
{
unsigned int i, count;
const char * const *plugins;
plugins = array_get(&tool->sieve_plugins, &count);
- for ( i = 0; i < count; i++ ) {
+ for (i = 0; i < count; i++) {
const char *path, *file = strrchr(plugins[i], '/');
- if ( file != NULL ) {
+ if (file != NULL) {
path = t_strdup_until(plugins[i], file);
file = file+1;
} else {
@@ -218,8 +216,9 @@ static void sieve_tool_load_plugins
}
}
-struct sieve_instance *sieve_tool_init_finish
-(struct sieve_tool *tool, bool init_mailstore, bool preserve_root)
+struct sieve_instance *
+sieve_tool_init_finish(struct sieve_tool *tool, bool init_mailstore,
+ bool preserve_root)
{
enum mail_storage_service_flags storage_service_flags =
MAIL_STORAGE_SERVICE_FLAG_NO_CHDIR |
@@ -233,16 +232,16 @@ struct sieve_instance *sieve_tool_init_finish
master_service_init_finish(master_service);
- if ( username == NULL ) {
+ if (username == NULL) {
sieve_tool_get_user_data(&username, &homedir);
username = tool->username = i_strdup(username);
- if ( tool->homedir != NULL )
+ if (tool->homedir != NULL)
i_free(tool->homedir);
tool->homedir = i_strdup(homedir);
- if ( preserve_root ) {
+ if (preserve_root) {
storage_service_flags |=
MAIL_STORAGE_SERVICE_FLAG_NO_RESTRICT_ACCESS;
}
@@ -251,7 +250,7 @@ struct sieve_instance *sieve_tool_init_finish
MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
}
- if ( !init_mailstore )
+ if (!init_mailstore)
storage_service_flags |=
MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES;
@@ -260,15 +259,15 @@ struct sieve_instance *sieve_tool_init_finish
service_input.service = tool->name;
service_input.username = username;
- tool->storage_service = mail_storage_service_init
- (master_service, NULL, storage_service_flags);
- if (mail_storage_service_lookup_next
- (tool->storage_service, &service_input, &tool->service_user,
- &tool->mail_user_dovecot, &errstr) <= 0)
+ tool->storage_service = mail_storage_service_init(
+ master_service, NULL, storage_service_flags);
+ if (mail_storage_service_lookup_next(
+ tool->storage_service, &service_input, &tool->service_user,
+ &tool->mail_user_dovecot, &errstr) <= 0)
i_fatal("%s", errstr);
- if ( master_service_set
- (master_service, "mail_full_filesystem_access=yes") < 0 )
+ if (master_service_set(master_service,
+ "mail_full_filesystem_access=yes") < 0)
i_unreached();
memset((void *)&svenv, 0, sizeof(svenv));
@@ -281,19 +280,18 @@ struct sieve_instance *sieve_tool_init_finish
svenv.delivery_phase = SIEVE_DELIVERY_PHASE_POST;
/* Initialize Sieve Engine */
- if ( (tool->svinst=sieve_init
- (&svenv, &sieve_tool_callbacks, tool, tool->debug)) == NULL )
+ if ((tool->svinst = sieve_init(&svenv, &sieve_tool_callbacks,
+ tool, tool->debug)) == NULL)
i_fatal("failed to initialize sieve implementation");
/* Load Sieve plugins */
- if ( array_count(&tool->sieve_plugins) > 0 ) {
+ if (array_count(&tool->sieve_plugins) > 0)
sieve_tool_load_plugins(tool);
- }
/* Set active Sieve extensions */
- if ( tool->sieve_extensions != NULL ) {
+ if (tool->sieve_extensions != NULL) {
sieve_set_extensions(tool->svinst, tool->sieve_extensions);
- } else if ( tool->no_config ) {
+ } else if (tool->no_config) {
sieve_set_extensions(tool->svinst, NULL);
}
@@ -311,28 +309,28 @@ void sieve_tool_deinit(struct sieve_tool **_tool)
/* Free options */
- if ( tool->username != NULL )
+ if (tool->username != NULL)
i_free(tool->username);
- if ( tool->homedir != NULL )
+ if (tool->homedir != NULL)
i_free(tool->homedir);
- if ( tool->sieve_extensions != NULL )
+ if (tool->sieve_extensions != NULL)
i_free(tool->sieve_extensions);
array_free(&tool->sieve_plugins);
/* Free raw mail */
- if ( tool->mail_raw != NULL )
+ if (tool->mail_raw != NULL)
mail_raw_close(&tool->mail_raw);
- if ( tool->mail_raw_user != NULL )
+ if (tool->mail_raw_user != NULL)
mail_user_unref(&tool->mail_raw_user);
/* Free mail service */
- if ( tool->mail_user != NULL )
+ if (tool->mail_user != NULL)
mail_user_unref(&tool->mail_user);
- if ( tool->mail_user_dovecot != NULL )
+ if (tool->mail_user_dovecot != NULL)
mail_user_unref(&tool->mail_user_dovecot);
mail_storage_service_user_unref(&tool->service_user);
@@ -351,40 +349,46 @@ void sieve_tool_deinit(struct sieve_tool **_tool)
* Mail environment
*/
-void sieve_tool_init_mail_user
-(struct sieve_tool *tool, const char *mail_location)
+void sieve_tool_init_mail_user(struct sieve_tool *tool,
+ const char *mail_location)
{
struct mail_user *mail_user_dovecot = tool->mail_user_dovecot;
const char *username = tool->username;
struct mail_namespace *ns = NULL;
const char *home = NULL, *errstr = NULL;
- tool->mail_user = mail_user_alloc
- (NULL, username, mail_user_dovecot->set_info, mail_user_dovecot->unexpanded_set);
+ tool->mail_user = mail_user_alloc(NULL, username,
+ mail_user_dovecot->set_info,
+ mail_user_dovecot->unexpanded_set);
- if ( (home=sieve_tool_get_homedir(sieve_tool)) != NULL ) {
+ if ((home = sieve_tool_get_homedir(sieve_tool)) != NULL)
mail_user_set_home(tool->mail_user, home);
- }
- if ( mail_user_init(tool->mail_user, &errstr) < 0 )
+ if (mail_user_init(tool->mail_user, &errstr) < 0)
i_fatal("Test user initialization failed: %s", errstr);
- if ( mail_namespaces_init_location
- (tool->mail_user, mail_location, &errstr) < 0 )
+ if (mail_namespaces_init_location(tool->mail_user, mail_location,
+ &errstr) < 0)
i_fatal("Test storage creation failed: %s", errstr);
ns = tool->mail_user->namespaces;
ns->flags |= NAMESPACE_FLAG_NOQUOTA | NAMESPACE_FLAG_NOACL;
}
-struct mail *sieve_tool_open_file_as_mail
-(struct sieve_tool *tool, const char *path)
+static void sieve_tool_init_mail_raw_user(struct sieve_tool *tool)
+{
+ if (tool->mail_raw_user == NULL) {
+ tool->mail_raw_user = mail_raw_user_create(
+ master_service, tool->mail_user_dovecot);
+ }
+}
+
+struct mail *
+sieve_tool_open_file_as_mail(struct sieve_tool *tool, const char *path)
{
- if ( tool->mail_raw_user == NULL )
- tool->mail_raw_user = mail_raw_user_create
- (master_service, tool->mail_user_dovecot);
+ sieve_tool_init_mail_raw_user(tool);
- if ( tool->mail_raw != NULL )
+ if (tool->mail_raw != NULL)
mail_raw_close(&tool->mail_raw);
tool->mail_raw = mail_raw_open_file(tool->mail_raw_user, path);
@@ -392,14 +396,12 @@ struct mail *sieve_tool_open_file_as_mail
return tool->mail_raw->mail;
}
-struct mail *sieve_tool_open_data_as_mail
-(struct sieve_tool *tool, string_t *mail_data)
+struct mail *
+sieve_tool_open_data_as_mail(struct sieve_tool *tool, string_t *mail_data)
{
- if ( tool->mail_raw_user == NULL )
- tool->mail_raw_user = mail_raw_user_create
- (master_service, tool->mail_user_dovecot);
+ sieve_tool_init_mail_raw_user(tool);
- if ( tool->mail_raw != NULL )
+ if (tool->mail_raw != NULL)
mail_raw_close(&tool->mail_raw);
tool->mail_raw = mail_raw_open_data(tool->mail_raw_user, mail_data);
@@ -413,8 +415,8 @@ struct mail *sieve_tool_open_data_as_mail
void sieve_tool_set_homedir(struct sieve_tool *tool, const char *homedir)
{
- if ( tool->homedir != NULL ) {
- if ( strcmp(homedir, tool->homedir) == 0 )
+ if (tool->homedir != NULL) {
+ if (strcmp(homedir, tool->homedir) == 0)
return;
i_free(tool->homedir);
@@ -422,14 +424,15 @@ void sieve_tool_set_homedir(struct sieve_tool *tool, const char *homedir)
tool->homedir = i_strdup(homedir);
- if ( tool->mail_user_dovecot != NULL )
+ if (tool->mail_user_dovecot != NULL)
mail_user_set_home(tool->mail_user_dovecot, tool->homedir);
- if ( tool->mail_user != NULL )
+ if (tool->mail_user != NULL)
mail_user_set_home(tool->mail_user, tool->homedir);
}
-void sieve_tool_set_setting_callback
-(struct sieve_tool *tool, sieve_tool_setting_callback_t callback, void *context)
+void sieve_tool_set_setting_callback(struct sieve_tool *tool,
+ sieve_tool_setting_callback_t callback,
+ void *context)
{
tool->setting_callback = callback;
tool->setting_callback_context = context;
@@ -439,12 +442,11 @@ void sieve_tool_set_setting_callback
* Accessors
*/
-const char *sieve_tool_get_username
-(struct sieve_tool *tool)
+const char *sieve_tool_get_username(struct sieve_tool *tool)
{
const char *username;
- if ( tool->username == NULL ) {
+ if (tool->username == NULL) {
sieve_tool_get_user_data(&username, NULL);
return username;
}
@@ -452,28 +454,31 @@ const char *sieve_tool_get_username
return tool->username;
}
-const char *sieve_tool_get_homedir
-(struct sieve_tool *tool)
+const char *sieve_tool_get_homedir(struct sieve_tool *tool)
{
const char *homedir = NULL;
- if ( tool->homedir != NULL )
+ if (tool->homedir != NULL)
return tool->homedir;
- if ( tool->mail_user_dovecot != NULL &&
- mail_user_get_home(tool->mail_user_dovecot, &homedir) > 0 ) {
+ if (tool->mail_user_dovecot != NULL &&
+ mail_user_get_home(tool->mail_user_dovecot, &homedir) > 0)
return tool->homedir;
- }
sieve_tool_get_user_data(NULL, &homedir);
return homedir;
}
-struct mail_user *sieve_tool_get_mail_user
-(struct sieve_tool *tool)
+struct mail_user *sieve_tool_get_mail_user(struct sieve_tool *tool)
+{
+ return (tool->mail_user == NULL ?
+ tool->mail_user_dovecot : tool->mail_user);
+}
+
+struct mail_user *sieve_tool_get_mail_raw_user(struct sieve_tool *tool)
{
- return ( tool->mail_user == NULL ?
- tool->mail_user_dovecot : tool->mail_user );
+ sieve_tool_init_mail_raw_user(tool);
+ return tool->mail_raw_user;
}
/*
@@ -483,45 +488,52 @@ struct mail_user *sieve_tool_get_mail_user
static const struct smtp_address *
sieve_tool_get_address(struct mail *mail, const char *header)
{
- struct message_address *addr;
- const char *str;
-
- if (mail_get_first_header(mail, header, &str) <= 0)
- return NULL;
- addr = message_address_parse(pool_datastack_create(),
- (const unsigned char *)str,
- strlen(str), 1, 0);
- return addr == NULL || addr->mailbox == NULL || addr->domain == NULL ||
- *addr->mailbox == '\0' || *addr->domain == '\0' ?
- NULL : smtp_address_create_temp(addr->mailbox, addr->domain);
+ struct message_address *addr;
+ struct smtp_address *smtp_addr;
+ const char *str;
+
+ if (mail_get_first_header(mail, header, &str) <= 0)
+ return NULL;
+ addr = message_address_parse(pool_datastack_create(),
+ (const unsigned char *)str,
+ strlen(str), 1, 0);
+ if (addr == NULL || addr->mailbox == NULL ||
+ addr->domain == NULL || *addr->mailbox == '\0' ||
+ *addr->domain == '\0')
+ return NULL;
+ if (smtp_address_create_from_msg_temp(addr, &smtp_addr) < 0)
+ return NULL;
+ return smtp_addr;
}
-void sieve_tool_get_envelope_data
-(struct sieve_message_data *msgdata, struct mail *mail,
- const struct smtp_address *sender,
- const struct smtp_address *rcpt_orig,
- const struct smtp_address *rcpt_final)
+void sieve_tool_get_envelope_data(struct sieve_message_data *msgdata,
+ struct mail *mail,
+ const struct smtp_address *sender,
+ const struct smtp_address *rcpt_orig,
+ const struct smtp_address *rcpt_final)
{
struct smtp_params_rcpt *rcpt_params;
/* Get sender address */
- if ( sender == NULL )
+ if (sender == NULL)
sender = sieve_tool_get_address(mail, "Return-path");
- if ( sender == NULL )
+ if (sender == NULL)
sender = sieve_tool_get_address(mail, "Sender");
- if ( sender == NULL )
+ if (sender == NULL)
sender = sieve_tool_get_address(mail, "From");
- if ( sender == NULL )
+ if (sender == NULL)
sender = smtp_address_create_temp("sender", "example.com");
/* Get recipient address */
- if ( rcpt_final == NULL )
+ if (rcpt_final == NULL)
rcpt_final = sieve_tool_get_address(mail, "Envelope-To");
- if ( rcpt_final == NULL )
+ if (rcpt_final == NULL)
rcpt_final = sieve_tool_get_address(mail, "To");
- if ( rcpt_final == NULL )
- rcpt_final = smtp_address_create_temp("recipient", "example.com");
- if ( rcpt_orig == NULL )
+ if (rcpt_final == NULL) {
+ rcpt_final = smtp_address_create_temp("recipient",
+ "example.com");
+ }
+ if (rcpt_orig == NULL)
rcpt_orig = rcpt_final;
msgdata->envelope.mail_from = sender;
@@ -542,12 +554,12 @@ struct ostream *sieve_tool_open_output_stream(const char *filename)
struct ostream *outstream;
int fd;
- if ( strcmp(filename, "-") == 0 )
+ if (strcmp(filename, "-") == 0)
outstream = o_stream_create_fd(1, 0);
else {
- if ( (fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, 0600)) < 0 ) {
+ if ((fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT,
+ 0600)) < 0)
i_fatal("failed to open file for writing: %m");
- }
outstream = o_stream_create_fd_autoclose(&fd, 0);
}
@@ -559,8 +571,9 @@ struct ostream *sieve_tool_open_output_stream(const char *filename)
* Sieve script handling
*/
-struct sieve_binary *sieve_tool_script_compile
-(struct sieve_instance *svinst, const char *filename, const char *name)
+struct sieve_binary *
+sieve_tool_script_compile(struct sieve_instance *svinst,
+ const char *filename, const char *name)
{
struct sieve_error_handler *ehandler;
struct sieve_binary *sbin;
@@ -569,17 +582,16 @@ struct sieve_binary *sieve_tool_script_compile
sieve_error_handler_accept_infolog(ehandler, TRUE);
sieve_error_handler_accept_debuglog(ehandler, svinst->debug);
- if ( (sbin = sieve_compile
- (svinst, filename, name, ehandler, 0, NULL)) == NULL )
+ if ((sbin = sieve_compile(svinst, filename, name, ehandler,
+ 0, NULL)) == NULL)
i_fatal("failed to compile sieve script '%s'", filename);
sieve_error_handler_unref(&ehandler);
-
return sbin;
}
-struct sieve_binary *sieve_tool_script_open
-(struct sieve_instance *svinst, const char *filename)
+struct sieve_binary *
+sieve_tool_script_open(struct sieve_instance *svinst, const char *filename)
{
struct sieve_error_handler *ehandler;
struct sieve_binary *sbin;
@@ -588,8 +600,8 @@ struct sieve_binary *sieve_tool_script_open
sieve_error_handler_accept_infolog(ehandler, TRUE);
sieve_error_handler_accept_debuglog(ehandler, svinst->debug);
- if ( (sbin = sieve_open
- (svinst, filename, NULL, ehandler, 0, NULL)) == NULL ) {
+ if ((sbin = sieve_open(svinst, filename, NULL, ehandler,
+ 0, NULL)) == NULL) {
sieve_error_handler_unref(&ehandler);
i_fatal("failed to compile sieve script");
}
@@ -600,19 +612,20 @@ struct sieve_binary *sieve_tool_script_open
return sbin;
}
-void sieve_tool_dump_binary_to
-(struct sieve_binary *sbin, const char *filename, bool hexdump)
+void sieve_tool_dump_binary_to(struct sieve_binary *sbin,
+ const char *filename, bool hexdump)
{
struct ostream *dumpstream;
- if ( filename == NULL ) return;
+ if (filename == NULL)
+ return;
dumpstream = sieve_tool_open_output_stream(filename);
- if ( dumpstream != NULL ) {
- if ( hexdump )
- (void) sieve_hexdump(sbin, dumpstream);
+ if (dumpstream != NULL) {
+ if (hexdump)
+ (void)sieve_hexdump(sbin, dumpstream);
else
- (void) sieve_dump(sbin, dumpstream, FALSE);
+ (void)sieve_dump(sbin, dumpstream, FALSE);
if (o_stream_finish(dumpstream) < 0) {
i_fatal("write(%s) failed: %s", filename,
o_stream_get_error(dumpstream));
@@ -627,32 +640,32 @@ void sieve_tool_dump_binary_to
* Commandline option parsing
*/
-void sieve_tool_parse_trace_option
-(struct sieve_trace_config *tr_config, const char *tr_option)
+void sieve_tool_parse_trace_option(struct sieve_trace_config *tr_config,
+ const char *tr_option)
{
- if ( str_begins(tr_option, "level=")) {
- const char *lvl = &tr_option[6];
-
- if ( strcmp(lvl, "none") == 0 ) {
- tr_config->level = SIEVE_TRLVL_NONE;
- } else if ( strcmp(lvl, "actions") == 0 ) {
- tr_config->level = SIEVE_TRLVL_ACTIONS;
- } else if ( strcmp(lvl, "commands") == 0 ) {
- tr_config->level = SIEVE_TRLVL_COMMANDS;
- } else if ( strcmp(lvl, "tests") == 0 ) {
- tr_config->level = SIEVE_TRLVL_TESTS;
- } else if ( strcmp(lvl, "matching") == 0 ) {
- tr_config->level = SIEVE_TRLVL_MATCHING;
- } else {
- i_fatal_status(EX_USAGE, "Unknown -tlevel= trace level: %s", lvl);
- }
- } else if ( strcmp(tr_option, "debug") == 0 ) {
- tr_config->flags |= SIEVE_TRFLG_DEBUG;
- } else if ( strcmp(tr_option, "addresses") == 0 ) {
- tr_config->flags |= SIEVE_TRFLG_ADDRESSES;
- } else {
- i_fatal_status(EX_USAGE, "Unknown -t trace option value: %s", tr_option);
- }
+ if (str_begins(tr_option, "level=")) {
+ const char *lvl = &tr_option[6];
+
+ if (strcmp(lvl, "none") == 0) {
+ tr_config->level = SIEVE_TRLVL_NONE;
+ } else if (strcmp(lvl, "actions") == 0) {
+ tr_config->level = SIEVE_TRLVL_ACTIONS;
+ } else if (strcmp(lvl, "commands") == 0) {
+ tr_config->level = SIEVE_TRLVL_COMMANDS;
+ } else if (strcmp(lvl, "tests") == 0) {
+ tr_config->level = SIEVE_TRLVL_TESTS;
+ } else if (strcmp(lvl, "matching") == 0) {
+ tr_config->level = SIEVE_TRLVL_MATCHING;
+ } else {
+ i_fatal_status(EX_USAGE,
+ "Unknown -tlevel= trace level: %s", lvl);
+ }
+ } else if (strcmp(tr_option, "debug") == 0) {
+ tr_config->flags |= SIEVE_TRFLG_DEBUG;
+ } else if (strcmp(tr_option, "addresses") == 0) {
+ tr_config->flags |= SIEVE_TRFLG_ADDRESSES;
+ } else {
+ i_fatal_status(EX_USAGE, "Unknown -t trace option value: %s",
+ tr_option);
+ }
}
-
-
diff --git a/pigeonhole/src/lib-sieve-tool/sieve-tool.h b/pigeonhole/src/lib-sieve-tool/sieve-tool.h
index 1464e74..02f4198 100644
--- a/pigeonhole/src/lib-sieve-tool/sieve-tool.h
+++ b/pigeonhole/src/lib-sieve-tool/sieve-tool.h
@@ -7,8 +7,8 @@
* Types
*/
-typedef const char *(*sieve_tool_setting_callback_t)
- (void *context, const char *identifier);
+typedef const char *
+(*sieve_tool_setting_callback_t)(void *context, const char *identifier);
/*
* Global variables
@@ -20,14 +20,15 @@ extern struct sieve_tool *sieve_tool;
* Initialization
*/
-struct sieve_tool *sieve_tool_init
- (const char *name, int *argc, char **argv[], const char *getopt_str,
- bool no_config);
+struct sieve_tool *
+sieve_tool_init(const char *name, int *argc, char **argv[],
+ const char *getopt_str, bool no_config);
int sieve_tool_getopt(struct sieve_tool *tool);
-struct sieve_instance *sieve_tool_init_finish
- (struct sieve_tool *tool, bool init_mailstore, bool preserve_root);
+struct sieve_instance *
+sieve_tool_init_finish(struct sieve_tool *tool, bool init_mailstore,
+ bool preserve_root);
void sieve_tool_deinit(struct sieve_tool **_tool);
@@ -35,43 +36,41 @@ void sieve_tool_deinit(struct sieve_tool **_tool);
* Mail environment
*/
-void sieve_tool_init_mail_user
- (struct sieve_tool *tool, const char *mail_location);
+void sieve_tool_init_mail_user(struct sieve_tool *tool,
+ const char *mail_location);
-struct mail *sieve_tool_open_file_as_mail
- (struct sieve_tool *tool, const char *path);
-struct mail *sieve_tool_open_data_as_mail
- (struct sieve_tool *tool, string_t *mail_data);
+struct mail *
+sieve_tool_open_file_as_mail(struct sieve_tool *tool, const char *path);
+struct mail *
+sieve_tool_open_data_as_mail(struct sieve_tool *tool, string_t *mail_data);
/*
* Accessors
*/
-const char *sieve_tool_get_username
- (struct sieve_tool *tool);
-const char *sieve_tool_get_homedir
-(struct sieve_tool *tool);
-struct mail_user *sieve_tool_get_mail_user
- (struct sieve_tool *tool);
+const char *sieve_tool_get_username(struct sieve_tool *tool);
+const char *sieve_tool_get_homedir(struct sieve_tool *tool);
+struct mail_user *sieve_tool_get_mail_user(struct sieve_tool *tool);
+struct mail_user *sieve_tool_get_mail_raw_user(struct sieve_tool *tool);
/*
* Configuration
*/
void sieve_tool_set_homedir(struct sieve_tool *tool, const char *homedir);
-void sieve_tool_set_setting_callback
- (struct sieve_tool *tool, sieve_tool_setting_callback_t callback,
- void *context);
+void sieve_tool_set_setting_callback(struct sieve_tool *tool,
+ sieve_tool_setting_callback_t callback,
+ void *context);
/*
* Commonly needed functionality
*/
-void sieve_tool_get_envelope_data
-(struct sieve_message_data *msgdata, struct mail *mail,
- const struct smtp_address *sender,
- const struct smtp_address *rcpt_orig,
- const struct smtp_address *rcpt_final);
+void sieve_tool_get_envelope_data(struct sieve_message_data *msgdata,
+ struct mail *mail,
+ const struct smtp_address *sender,
+ const struct smtp_address *rcpt_orig,
+ const struct smtp_address *rcpt_final);
/*
* File I/O
@@ -83,18 +82,19 @@ struct ostream *sieve_tool_open_output_stream(const char *filename);
* Sieve script handling
*/
-struct sieve_binary *sieve_tool_script_compile
- (struct sieve_instance *svinst, const char *filename, const char *name);
-struct sieve_binary *sieve_tool_script_open
- (struct sieve_instance *svinst, const char *filename);
-void sieve_tool_dump_binary_to
- (struct sieve_binary *sbin, const char *filename, bool hexdump);
+struct sieve_binary *
+sieve_tool_script_compile(struct sieve_instance *svinst,
+ const char *filename, const char *name);
+struct sieve_binary *
+sieve_tool_script_open(struct sieve_instance *svinst, const char *filename);
+void sieve_tool_dump_binary_to(struct sieve_binary *sbin,
+ const char *filename, bool hexdump);
/*
* Command line option parsing
*/
-void sieve_tool_parse_trace_option
- (struct sieve_trace_config *tr_config, const char *tr_option);
+void sieve_tool_parse_trace_option(struct sieve_trace_config *tr_config,
+ const char *tr_option);
#endif
diff --git a/pigeonhole/src/lib-sieve/ext-fileinto.c b/pigeonhole/src/lib-sieve/ext-fileinto.c
index bde9df5..fb65758 100644
--- a/pigeonhole/src/lib-sieve/ext-fileinto.c
+++ b/pigeonhole/src/lib-sieve/ext-fileinto.c
@@ -40,17 +40,19 @@ const struct sieve_extension_def fileinto_extension;
* Extension
*/
-static bool ext_fileinto_validator_load
-(const struct sieve_extension *ext, struct sieve_validator *valdtr);
+static bool
+ext_fileinto_validator_load(const struct sieve_extension *ext,
+ struct sieve_validator *valdtr);
const struct sieve_extension_def fileinto_extension = {
.name = "fileinto",
.validator_load = ext_fileinto_validator_load,
- SIEVE_EXT_DEFINE_OPERATION(fileinto_operation)
+ SIEVE_EXT_DEFINE_OPERATION(fileinto_operation),
};
-static bool ext_fileinto_validator_load
-(const struct sieve_extension *ext, struct sieve_validator *valdtr)
+static bool
+ext_fileinto_validator_load(const struct sieve_extension *ext,
+ struct sieve_validator *valdtr)
{
/* Register new command */
sieve_validator_register_command(valdtr, ext, &fileinto_command);
@@ -65,10 +67,12 @@ static bool ext_fileinto_validator_load
* fileinto <folder: string>
*/
-static bool cmd_fileinto_validate
- (struct sieve_validator *valdtr, struct sieve_command *cmd);
-static bool cmd_fileinto_generate
- (const struct sieve_codegen_env *cgenv, struct sieve_command *ctx);
+static bool
+cmd_fileinto_validate(struct sieve_validator *valdtr,
+ struct sieve_command *cmd);
+static bool
+cmd_fileinto_generate(const struct sieve_codegen_env *cgenv,
+ struct sieve_command *ctx);
static const struct sieve_command_def fileinto_command = {
.identifier = "fileinto",
@@ -78,54 +82,55 @@ static const struct sieve_command_def fileinto_command = {
.block_allowed = FALSE,
.block_required = FALSE,
.validate = cmd_fileinto_validate,
- .generate = cmd_fileinto_generate
+ .generate = cmd_fileinto_generate,
};
/*
* Fileinto operation
*/
-static bool ext_fileinto_operation_dump
- (const struct sieve_dumptime_env *denv, sieve_size_t *address);
-static int ext_fileinto_operation_execute
- (const struct sieve_runtime_env *renv, sieve_size_t *address);
+static bool
+ext_fileinto_operation_dump(const struct sieve_dumptime_env *denv,
+ sieve_size_t *address);
+static int
+ext_fileinto_operation_execute(const struct sieve_runtime_env *renv,
+ sieve_size_t *address);
const struct sieve_operation_def fileinto_operation = {
.mnemonic = "FILEINTO",
.ext_def = &fileinto_extension,
.dump = ext_fileinto_operation_dump,
- .execute = ext_fileinto_operation_execute
+ .execute = ext_fileinto_operation_execute,
};
/*
* Validation
*/
-static bool cmd_fileinto_validate
-(struct sieve_validator *valdtr, struct sieve_command *cmd)
+static bool
+cmd_fileinto_validate(struct sieve_validator *valdtr, struct sieve_command *cmd)
{
struct sieve_ast_argument *arg = cmd->first_positional;
- if ( !sieve_validate_positional_argument
- (valdtr, cmd, arg, "folder", 1, SAAT_STRING) ) {
+ if (!sieve_validate_positional_argument(valdtr, cmd, arg, "folder",
+ 1, SAAT_STRING))
return FALSE;
- }
- if ( !sieve_validator_argument_activate(valdtr, cmd, arg, FALSE) )
+ if (!sieve_validator_argument_activate(valdtr, cmd, arg, FALSE))
return FALSE;
/* Check name validity when folder argument is not a variable */
- if ( sieve_argument_is_string_literal(arg) ) {
+ if (sieve_argument_is_string_literal(arg)) {
const char *folder = sieve_ast_argument_strc(arg), *error;
- if ( !sieve_mailbox_check_name(folder, &error) ) {
- sieve_command_validate_error(valdtr, cmd,
- "invalid folder name `%s' specified for fileinto command: %s",
+ if (!sieve_mailbox_check_name(folder, &error)) {
+ sieve_command_validate_error(
+ valdtr, cmd, "fileinto command: "
+ "invalid folder name `%s' specified: %s",
str_sanitize(folder, 256), error);
return FALSE;
}
}
-
return TRUE;
}
@@ -133,8 +138,9 @@ static bool cmd_fileinto_validate
* Code generation
*/
-static bool cmd_fileinto_generate
-(const struct sieve_codegen_env *cgenv, struct sieve_command *cmd)
+static bool
+cmd_fileinto_generate(const struct sieve_codegen_env *cgenv,
+ struct sieve_command *cmd)
{
sieve_operation_emit(cgenv->sblock, cmd->ext, &fileinto_operation);
@@ -146,13 +152,14 @@ static bool cmd_fileinto_generate
* Code dump
*/
-static bool ext_fileinto_operation_dump
-(const struct sieve_dumptime_env *denv, sieve_size_t *address)
+static bool
+ext_fileinto_operation_dump(const struct sieve_dumptime_env *denv,
+ sieve_size_t *address)
{
sieve_code_dumpf(denv, "FILEINTO");
sieve_code_descend(denv);
- if ( sieve_action_opr_optional_dump(denv, address, NULL) != 0 )
+ if (sieve_action_opr_optional_dump(denv, address, NULL) != 0)
return FALSE;
return sieve_opr_string_dump(denv, address, "folder");
@@ -162,12 +169,13 @@ static bool ext_fileinto_operation_dump
* Execution
*/
-static int ext_fileinto_operation_execute
-(const struct sieve_runtime_env *renv, sieve_size_t *address)
+static int
+ext_fileinto_operation_execute(const struct sieve_runtime_env *renv,
+ sieve_size_t *address)
{
struct sieve_side_effects_list *slist = NULL;
string_t *folder;
- bool folder_literal;
+ const char *error;
bool trace = sieve_runtime_trace_active(renv, SIEVE_TRLVL_ACTIONS);
int ret = 0;
@@ -176,48 +184,42 @@ static int ext_fileinto_operation_execute
*/
/* Optional operands (side effects only) */
- if ( sieve_action_opr_optional_read(renv, address, NULL, &ret, &slist) != 0 )
+ if (sieve_action_opr_optional_read(renv, address, NULL,
+ &ret, &slist) != 0)
return ret;
/* Folder operand */
- if ( (ret=sieve_opr_string_read_ex
- (renv, address, "folder", FALSE, &folder, &folder_literal)) <= 0 )
+ ret = sieve_opr_string_read(renv, address, "folder", &folder);
+ if (ret <= 0)
return ret;
/*
* Perform operation
*/
- if ( trace ) {
+ if (trace) {
sieve_runtime_trace(renv, 0, "fileinto action");
sieve_runtime_trace_descend(renv);
}
- if ( !folder_literal && !uni_utf8_str_is_valid(str_c(folder)) ) {
- sieve_runtime_error(renv, NULL,
- "folder name specified for fileinto command is not utf-8: %s",
- str_c(folder));
+ if (!sieve_mailbox_check_name(str_c(folder), &error)) {
+ sieve_runtime_error(
+ renv, NULL, "fileinto command: "
+ "invalid folder name `%s' specified: %s",
+ str_c(folder), error);
return SIEVE_EXEC_FAILURE;
}
-
- if ( trace ) {
+ if (trace) {
sieve_runtime_trace(renv, 0, "store message in mailbox `%s'",
- str_sa