]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
4 years agoglobal: Add ATTR_UNSIGNED_WRAPS to fix various ubsan issues
Timo Sirainen [Mon, 16 Aug 2021 12:36:37 +0000 (15:36 +0300)] 
global: Add ATTR_UNSIGNED_WRAPS to fix various ubsan issues

4 years agoglobal: Fix various ubsan issues
Timo Sirainen [Thu, 5 Aug 2021 15:53:57 +0000 (18:53 +0300)] 
global: Fix various ubsan issues

4 years agodoveadm: Free memory for all loaded mail_plugins at deinit
Timo Sirainen [Tue, 17 Aug 2021 07:59:49 +0000 (10:59 +0300)] 
doveadm: Free memory for all loaded mail_plugins at deinit

4 years agodoveadm pw -l: Free all memory to avoid memory leak complaints
Timo Sirainen [Tue, 17 Aug 2021 07:50:34 +0000 (10:50 +0300)] 
doveadm pw -l: Free all memory to avoid memory leak complaints

4 years agodoveadm batch: Fix memory leak
Timo Sirainen [Tue, 17 Aug 2021 07:30:25 +0000 (09:30 +0200)] 
doveadm batch: Fix memory leak

4 years agodoveadm: Split off doveadm_mail_cmd_deinit()
Timo Sirainen [Tue, 17 Aug 2021 08:06:36 +0000 (11:06 +0300)] 
doveadm: Split off doveadm_mail_cmd_deinit()

4 years agodoveadm: Make doveadm_mail_cmd_free() public
Timo Sirainen [Fri, 7 May 2021 18:15:04 +0000 (21:15 +0300)] 
doveadm: Make doveadm_mail_cmd_free() public

4 years agoglobal: Use consistent lua function names
Siavash Tavakoli [Fri, 13 Aug 2021 10:08:30 +0000 (11:08 +0100)] 
global: Use consistent lua function names

Change lua-style function names to be consistent with dovecot's style.

4 years agolib-lua: test-lua: Fix the test for lua versions later than 5.3
Siavash Tavakoli [Thu, 12 Aug 2021 18:43:25 +0000 (19:43 +0100)] 
lib-lua: test-lua: Fix the test for lua versions later than 5.3

4 years agolib-lua: Add lua_resume_compat() and use it in lua versions prior to 5.4
Siavash Tavakoli [Thu, 12 Aug 2021 18:40:22 +0000 (19:40 +0100)] 
lib-lua: Add lua_resume_compat() and use it in lua versions prior to 5.4

Starting lua 5.4 "lua_resume()" expects an extra "nresults" argument. Add a
compatibility function to handle this argument in earlier versions.

4 years agoman: Document command/args destination format to sync/backup.
Felipe Gasper [Sun, 24 May 2020 18:47:18 +0000 (14:47 -0400)] 
man: Document command/args destination format to sync/backup.

4 years agolib-compression: istream-lz4 - Fix handling partial header reads
Timo Sirainen [Mon, 16 Aug 2021 11:52:50 +0000 (14:52 +0300)] 
lib-compression: istream-lz4 - Fix handling partial header reads

Reading assert-crashed if the header was read only partially. Either
because the file really was truncated or because parent stream already
had fewer bytes buffered.

4 years agolib-compression: istream-lz4 - Remove redundant check
Timo Sirainen [Mon, 16 Aug 2021 11:51:29 +0000 (14:51 +0300)] 
lib-compression: istream-lz4 - Remove redundant check

The loop is reached only if ret is 0, so there's no need to check it again.

4 years agolib-compression: istream-lz4 - Add asserts to make sure parent buffer isn't full
Timo Sirainen [Mon, 16 Aug 2021 11:50:10 +0000 (14:50 +0300)] 
lib-compression: istream-lz4 - Add asserts to make sure parent buffer isn't full

The parent buffer's max size would have to be tiny for these to happen.

4 years agodict: Use dict-init-cache
Siavash Tavakoli [Thu, 1 Jul 2021 12:52:29 +0000 (13:52 +0100)] 
dict: Use dict-init-cache

Make use of dict-init-cache for initialization and deinitialization of dicts.

4 years agodict: Add caching mechanism for initializing dicts
Siavash Tavakoli [Fri, 25 Jun 2021 13:11:52 +0000 (14:11 +0100)] 
dict: Add caching mechanism for initializing dicts

Add a pool for dict instances. Each dict is refcounted and given a grace period
of 30 seconds for deletion. If refcount drops to 0 and no new dict
operation uses the instance in that period, it will be freed. A maximum
of 10 dicts are kept in the cache.

4 years agodict: Add dict_created and dict_destroyed events
Siavash Tavakoli [Sun, 8 Aug 2021 23:35:09 +0000 (00:35 +0100)] 
dict: Add dict_created and dict_destroyed events

Inherit from dict.event and emitted at dict initialization/deinit.

4 years agolib-sasl: test-sasl-client.c - Initialize authid of sasl_empty_set
Martti Rannanjärvi [Sun, 15 Aug 2021 09:45:12 +0000 (12:45 +0300)] 
lib-sasl: test-sasl-client.c - Initialize authid of sasl_empty_set

This fixes the compiler warning:

  test-sasl-client.c:8:1: error: missing initializer for field 'authid'
  of 'const struct dsasl_client_settings'

4 years agolib-sasl: oauthbearer - Fix memory leak on auth failure
Martti Rannanjärvi [Sun, 15 Aug 2021 04:12:42 +0000 (07:12 +0300)] 
lib-sasl: oauthbearer - Fix memory leak on auth failure

4 years agolib-sasl: Add unit tests
Aki Tuomi [Wed, 11 Aug 2021 06:48:06 +0000 (09:48 +0300)] 
lib-sasl: Add unit tests

4 years agolib-sasl: Do not crash if password is NULL
Aki Tuomi [Wed, 11 Aug 2021 06:59:05 +0000 (09:59 +0300)] 
lib-sasl: Do not crash if password is NULL

4 years agolib-sasl: When setting port, parse value, not key.
Aki Tuomi [Wed, 11 Aug 2021 06:47:17 +0000 (09:47 +0300)] 
lib-sasl: When setting port, parse value, not key.

Broken in 228f1e8d583

4 years agoauth: Do not forward empty "master" passdb field
Aki Tuomi [Wed, 11 Aug 2021 05:49:44 +0000 (08:49 +0300)] 
auth: Do not forward empty "master" passdb field

4 years agologin-common: Ignore empty value for "master" passdb extra field
Aki Tuomi [Wed, 11 Aug 2021 05:48:29 +0000 (08:48 +0300)] 
login-common: Ignore empty value for "master" passdb extra field

4 years agomail-crypt: Add password confirmation for doveadm cryptokey password command
Siavash Tavakoli [Tue, 10 Aug 2021 11:26:14 +0000 (12:26 +0100)] 
mail-crypt: Add password confirmation for doveadm cryptokey password command

To prevent setting wrong passwords by accident.

4 years agomail-crypt: Fix -O argument type for doveadm cryptokey password command
Siavash Tavakoli [Tue, 10 Aug 2021 11:23:55 +0000 (12:23 +0100)] 
mail-crypt: Fix -O argument type for doveadm cryptokey password command

Should be boolean instead of string.

4 years agolib-index: Fix "Extension introduction for unknown id" errors after map is generated
Timo Sirainen [Tue, 27 Apr 2021 23:01:14 +0000 (02:01 +0300)] 
lib-index: Fix "Extension introduction for unknown id" errors after map is generated

This happens when:
 * View is opened
 * Messages are expunged
 * View is synced with NOEXPUNGES flag
 * A new extension is introduced
 * Index is rotated at least twice
 * View is again synced with NOEXPUNGES flag
 * More changes are done to index with the new extension
 * Once more view is synced with NOEXPUNGES flag

The last sync will see changes with the new extension ID, but the view's map
doesn't know its ID.

4 years agovirtual: Expunge old emails if backend box guid changed
Josef 'Jeff' Sipek [Thu, 24 Jun 2021 16:58:58 +0000 (12:58 -0400)] 
virtual: Expunge old emails if backend box guid changed

This introduces a new extensible "ext2" header to make it easier to add new
fields in the future. It also allows keeping backwards/forwards
compatibility with the old code, so the virtual index isn't rebuilt on
upgrades or downgrades.

4 years agovirtual: Don't use data stack when building extension header
Timo Sirainen [Thu, 29 Jul 2021 09:38:12 +0000 (12:38 +0300)] 
virtual: Don't use data stack when building extension header

Some users may have thousands of mailboxes, which grows the data stack
unnecessarily large.

4 years agoindexer: Fix crash if client disconnects while it's waiting for command reply
Timo Sirainen [Mon, 9 Aug 2021 10:01:12 +0000 (13:01 +0300)] 
indexer: Fix crash if client disconnects while it's waiting for command reply

This happened for example if IMAP SEARCH triggered long fts indexing and the
IMAP client disconnected while waiting for the reply.

Broken by f62a25849358e40a08a2c47f5bcaa1613a31d076

4 years agolib-smtp: smtp-server-cmd-data - Fix global state cleanup upon DATA command destroy.
Stephan Bosch [Thu, 6 May 2021 09:58:21 +0000 (11:58 +0200)] 
lib-smtp: smtp-server-cmd-data - Fix global state cleanup upon DATA command destroy.

Should cleanup global state only when it belongs to the DATA/BDAT command
currently being destroyed.

Fixes NULL-dereference in i_stream_read() found by OSS-Fuzz.

4 years agolib-smtp: test-smtp-server-errors - Perform "Bad pipelined DATA" test with actual...
Stephan Bosch [Thu, 5 Aug 2021 09:38:26 +0000 (11:38 +0200)] 
lib-smtp: test-smtp-server-errors - Perform "Bad pipelined DATA" test with actual pipelining.

4 years agoimap, pop3: Prevent reading ssl_ca setting into memory
Timo Sirainen [Tue, 3 Aug 2021 16:47:54 +0000 (19:47 +0300)] 
imap, pop3: Prevent reading ssl_ca setting into memory

Especially with imap there can be a lot of processes and a large ssl_ca
could be wasting a lot of memory. This was already the old behavior before
removing ssl_* settings from lib-storage.

4 years agoconfig: Add exclude=<name> settings to drop specific settings
Timo Sirainen [Tue, 3 Aug 2021 16:46:59 +0000 (19:46 +0300)] 
config: Add exclude=<name> settings to drop specific settings

4 years agolib-storage: Remove SSL settings from mail_storage_settings
Timo Sirainen [Thu, 29 Jul 2021 15:04:53 +0000 (18:04 +0300)] 
lib-storage: Remove SSL settings from mail_storage_settings

They can be accessed via master_service_ssl_settings instead.

4 years agolib-storage: mail_user_init_ssl_client_settings() - Use master_service_ssl_settings
Timo Sirainen [Thu, 29 Jul 2021 15:02:57 +0000 (18:02 +0300)] 
lib-storage: mail_user_init_ssl_client_settings() - Use master_service_ssl_settings

This will allow dropping the duplicate SSL settings handling.

4 years agodsync: Get SSL settings via master_service_ssl_settings
Timo Sirainen [Thu, 29 Jul 2021 14:45:16 +0000 (17:45 +0300)] 
dsync: Get SSL settings via master_service_ssl_settings

4 years agolib-storage: Add mail_storage_service_user_get_ssl_settings()
Timo Sirainen [Thu, 29 Jul 2021 14:44:43 +0000 (17:44 +0300)] 
lib-storage: Add mail_storage_service_user_get_ssl_settings()

4 years agolib-master: Add master_service_ssl_settings_get_from_parser()
Timo Sirainen [Thu, 29 Jul 2021 14:44:25 +0000 (17:44 +0300)] 
lib-master: Add master_service_ssl_settings_get_from_parser()

4 years agoglobal: Don't zero SSL settings unnecessarily
Timo Sirainen [Thu, 29 Jul 2021 14:57:42 +0000 (17:57 +0300)] 
global: Don't zero SSL settings unnecessarily

mail_user_init_ssl_client_settings() and mail_user_init_fs_settings()
will clear them again anyway.

4 years agolib-storage: mail_user_init_fs_settings() - Clarify that ssl settings are fully initi...
Timo Sirainen [Thu, 29 Jul 2021 14:58:23 +0000 (17:58 +0300)] 
lib-storage: mail_user_init_fs_settings() - Clarify that ssl settings are fully initialized

4 years agolib-storage: mail_user_init_ssl_client_settings() - Clarify that ssl settings are...
Timo Sirainen [Thu, 29 Jul 2021 14:57:12 +0000 (17:57 +0300)] 
lib-storage: mail_user_init_ssl_client_settings() - Clarify that ssl settings are fully initialized

4 years agodoveadm: Free SSL iostream contexts at deinit
Timo Sirainen [Thu, 29 Jul 2021 12:31:56 +0000 (15:31 +0300)] 
doveadm: Free SSL iostream contexts at deinit

This wasn't really a memory leak, because the contexts are always kept
allocated until deinit anyway.

4 years agolib-ssl-iostream: ssl_iostream_context_unref(NULL) is a no-op
Timo Sirainen [Thu, 29 Jul 2021 13:06:50 +0000 (16:06 +0300)] 
lib-ssl-iostream: ssl_iostream_context_unref(NULL) is a no-op

4 years agoman: doveadm-pw - Fix default scheme to be CRYPT / $2y$ bcrypt
Timo Sirainen [Sat, 7 Aug 2021 16:52:09 +0000 (18:52 +0200)] 
man: doveadm-pw - Fix default scheme to be CRYPT / $2y$ bcrypt

4 years agolib-index: Remove mail_index_transaction_get_highest_modseq()
Timo Sirainen [Thu, 22 Jul 2021 12:31:11 +0000 (15:31 +0300)] 
lib-index: Remove mail_index_transaction_get_highest_modseq()

This isn't actually used anywhere, so there's no need to keep it.

4 years agolib-index: mail_index_transaction_get_highest_modseq() - Fix handling MAIL_INDEX_MAIL...
Timo Sirainen [Thu, 22 Jul 2021 12:28:39 +0000 (15:28 +0300)] 
lib-index: mail_index_transaction_get_highest_modseq() - Fix handling MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ

MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ flag updates didn't calculate the
returned modseq correctly. This function wasn't used outside
--with-devel-checks though, but with it this fixes:

Panic: file mail-index-transaction.c: line 212 (mail_index_transaction_commit_real): assertion failed: (t->reset || expected_highest_modseq == log->head->sync_highest_modseq)

4 years agolib-index: Avoid modseq warnings --with-devel-checks
Timo Sirainen [Thu, 22 Jul 2021 11:24:11 +0000 (14:24 +0300)] 
lib-index: Avoid modseq warnings --with-devel-checks

Avoids warnings:
Requested highest-modseq for transaction, but modseq tracking isn't enabled for the file (this shouldn't happen)

4 years agodirector: Avoid calling timeval_diff_msecs() with too great time difference
Timo Sirainen [Thu, 22 Jul 2021 11:29:24 +0000 (14:29 +0300)] 
director: Avoid calling timeval_diff_msecs() with too great time difference

Fixes assert-crash --with-devel-checks:
Panic: file time-util.c: line 76 (timeval_diff_msecs): assertion failed: (diff <= INT_MAX)

4 years agolib: data-stack - Initialize alloc_count / alloc_bytes
Aki Tuomi [Wed, 14 Jul 2021 07:00:28 +0000 (10:00 +0300)] 
lib: data-stack - Initialize alloc_count / alloc_bytes

This has only effect with devel checks enabled. Fixes counter
values to show sensible data.

4 years agolib: data-stack - Allow errno changes when sending event
Aki Tuomi [Tue, 13 Jul 2021 10:41:14 +0000 (13:41 +0300)] 
lib: data-stack - Allow errno changes when sending event

4 years agolib-master, global: Remove unnecessary MASTER_SERVICE_FLAG_USE_SSL_SETTINGS
Timo Sirainen [Thu, 29 Jul 2021 19:21:52 +0000 (22:21 +0300)] 
lib-master, global: Remove unnecessary MASTER_SERVICE_FLAG_USE_SSL_SETTINGS

SSL client settings are now always read.

4 years agolib-master: Use ssl-server settings only when necessary
Timo Sirainen [Thu, 29 Jul 2021 19:20:17 +0000 (22:20 +0300)] 
lib-master: Use ssl-server settings only when necessary

4 years agolib-master: Remove unused master_service_is_ssl_module_loaded()
Timo Sirainen [Thu, 29 Jul 2021 19:18:56 +0000 (22:18 +0300)] 
lib-master: Remove unused master_service_is_ssl_module_loaded()

4 years agolib-master, login-common: Split off master_service_ssl_server_settings
Timo Sirainen [Thu, 29 Jul 2021 18:45:18 +0000 (21:45 +0300)] 
lib-master, login-common: Split off master_service_ssl_server_settings

4 years agolib-master, global: Split master_service_ssl_settings_to_iostream_set() to client...
Timo Sirainen [Thu, 29 Jul 2021 18:43:03 +0000 (21:43 +0300)] 
lib-master, global: Split master_service_ssl_settings_to_iostream_set() to client/server functions

4 years agomaster: Avoid creating prefork timeout if process_limit is already reached
Timo Sirainen [Thu, 5 Aug 2021 14:48:42 +0000 (17:48 +0300)] 
master: Avoid creating prefork timeout if process_limit is already reached

4 years agomaster: Avoid high CPU usage when process_min_avail reaches process_limit
Timo Sirainen [Thu, 5 Aug 2021 14:53:58 +0000 (17:53 +0300)] 
master: Avoid high CPU usage when process_min_avail reaches process_limit

process_min_avail handling always created a 0ms timeout to try to create the
missing processes. This timeout was supposed to stop when it couldn't launch
all the wanted processes, but the check wasn't done right. This ended up
causing the timeout to be called rapidly over and over again.

4 years agolazy_expunge: Add lazy_expunge_exclude setting
Michael M Slusarz [Thu, 22 Jul 2021 20:51:05 +0000 (14:51 -0600)] 
lazy_expunge: Add lazy_expunge_exclude setting

This allows mailboxes to be excluded via configuration.

4 years agofts: Use mailbox-match-plugin API for fts_autoindex_exclude
Timo Sirainen [Tue, 3 Aug 2021 14:38:33 +0000 (17:38 +0300)] 
fts: Use mailbox-match-plugin API for fts_autoindex_exclude

This doesn't change the functionality, just deduplicates the code.

4 years agofts: Always initialize struct fts_user
Timo Sirainen [Wed, 4 Aug 2021 12:50:54 +0000 (15:50 +0300)] 
fts: Always initialize struct fts_user

Initializing lib-fts is still optional within it.

4 years agolib-storage: Add mailbox exclusion plugin API
Michael M Slusarz [Thu, 22 Jul 2021 20:20:25 +0000 (14:20 -0600)] 
lib-storage: Add mailbox exclusion plugin API

Allows mailbox exclusion configuration to be easily added to any
plugin.

4 years agomaster: Fix unfinished "time moved backwards" comment
Timo Sirainen [Wed, 4 Aug 2021 16:57:35 +0000 (19:57 +0300)] 
master: Fix unfinished "time moved backwards" comment

4 years agomaster: Log a warning also about "time moved forwards"
Timo Sirainen [Wed, 4 Aug 2021 16:54:29 +0000 (19:54 +0300)] 
master: Log a warning also about "time moved forwards"

This isn't really important to know, but it could help figure out
performance problems if it happens a lot.

4 years agolib: ioloop - Handle "time moved forwards" only after 100ms difference
Timo Sirainen [Wed, 4 Aug 2021 16:52:14 +0000 (19:52 +0300)] 
lib: ioloop - Handle "time moved forwards" only after 100ms difference

Previously this was done after even a single microsecond difference,
causing it to happen almost constantly. This was causing performance
problems when there were many timeouts that had to be updated. Especially
master process could have been spending a lot of time unnecessarily here.

Broken by b258137d0e0618ae792e3606071a1715d26f107b

4 years agolib: ioloop - Fix 0 timeout with kqueue() and select()
Timo Sirainen [Wed, 4 Aug 2021 16:55:36 +0000 (19:55 +0300)] 
lib: ioloop - Fix 0 timeout with kqueue() and select()

With these it was waiting for 1 ms instead of 0.

Broken by fac27f192d8432c45d360025613f7d432271c5bb

4 years agofts: Fix internal error when fts_index_timeout is set
Timo Sirainen [Wed, 4 Aug 2021 14:24:00 +0000 (17:24 +0300)] 
fts: Fix internal error when fts_index_timeout is set

Broken by cf114f90e0ba25c18db846ee582e3a130bd52949

4 years agoacl: Cast enums explicitly to int in sorting function
Timo Sirainen [Tue, 3 Aug 2021 13:11:35 +0000 (16:11 +0300)] 
acl: Cast enums explicitly to int in sorting function

Fixes ubsan complaint:
runtime error: unsigned integer overflow: 0 - 4 cannot be represented in type 'unsigned int'

4 years agolib-program-client: program-client-remote - Fix signed integer arithmetic.
Stephan Bosch [Tue, 29 Jun 2021 20:45:33 +0000 (22:45 +0200)] 
lib-program-client: program-client-remote - Fix signed integer arithmetic.

Make type cast explicit to gain ubsan approval. Also prevent negative
reserve_mod from having unexpected effect.

4 years agoutil: dovecot-sysreport - Fix help to have -o as the short form of --core
Martti Rannanjärvi [Tue, 3 Aug 2021 08:44:06 +0000 (11:44 +0300)] 
util: dovecot-sysreport - Fix help to have -o as the short form of --core

4 years agoutil: dovecot-sysreport - Use only spaces for indentation
Martti Rannanjärvi [Tue, 3 Aug 2021 07:56:08 +0000 (10:56 +0300)] 
util: dovecot-sysreport - Use only spaces for indentation

Stop mixing tabs and spaces.

4 years agostats: Revert the previous OpenMetrics info type revert
Timo Sirainen [Tue, 27 Jul 2021 17:13:24 +0000 (20:13 +0300)] 
stats: Revert the previous OpenMetrics info type revert

The OpenMetrics standard does support "info" type. The original Prometheus
format doesn't support it, but our support is for OpenMetrics. They don't
even have any overlapping types that could be used for this, so the only
other possibility would have been to make this configurable.

Reverts 55a519d18fbbb8435854f1fcf2642b908d6fc074

4 years agosubmission-login: Fix compiling error with some older compilers
Timo Sirainen [Wed, 28 Jul 2021 13:39:59 +0000 (16:39 +0300)] 
submission-login: Fix compiling error with some older compilers

4 years agosubmission-login: submission-proxy - Optionally send XCLIENT LOGIN to backend and...
Stephan Bosch [Sun, 4 Jul 2021 22:37:46 +0000 (00:37 +0200)] 
submission-login: submission-proxy - Optionally send XCLIENT LOGIN to backend and skip authentication.

This behavior is enabled by returning proxy_noauth from passdb.

4 years agologin-common: Add proxy field proxy_noauth.
Stephan Bosch [Sun, 18 Jul 2021 22:29:23 +0000 (00:29 +0200)] 
login-common: Add proxy field proxy_noauth.

4 years agosubmission-login: submission-proxy - Move submission_proxy_success_reply_sent().
Stephan Bosch [Sun, 18 Jul 2021 22:24:32 +0000 (00:24 +0200)] 
submission-login: submission-proxy - Move submission_proxy_success_reply_sent().

4 years agodict: Use the dict name as the log prefix
Timo Sirainen [Tue, 18 May 2021 17:18:45 +0000 (20:18 +0300)] 
dict: Use the dict name as the log prefix

Otherwise if there are multiple dicts it may not be obvious which one is
causing the errors.

4 years agostats: Revert dovecot build information to untyped data
Aki Tuomi [Thu, 22 Jul 2021 08:26:10 +0000 (11:26 +0300)] 
stats: Revert dovecot build information to untyped data

OpenMetrics does not know type 'info', so use 'untyped' instead.

Broken in ae678116a79fff609cdf4fb1eb7eb3db2975bf1c

4 years agolib-storage: mail_cache_*_fields - Check for invalid header names while parsing config
Timo Sirainen [Wed, 21 Jul 2021 15:12:36 +0000 (18:12 +0300)] 
lib-storage: mail_cache_*_fields - Check for invalid header names while parsing config

This way the errors are noticed early on.

4 years agolib-storage: mail_cache_*_fields - Log an error if hdr.<name> isn't valid
Timo Sirainen [Tue, 14 Apr 2020 09:24:50 +0000 (12:24 +0300)] 
lib-storage: mail_cache_*_fields - Log an error if hdr.<name> isn't valid

Mainly verify that it doesn't have accidental UTF-8 characters that aren't
easily visible in text editors.

4 years agolib-mail: Add message_header_name_is_valid()
Timo Sirainen [Sun, 19 Apr 2020 11:03:24 +0000 (14:03 +0300)] 
lib-mail: Add message_header_name_is_valid()

4 years agologin-proxy: Make sure input line isn't freed too early
Timo Sirainen [Thu, 22 Jul 2021 13:38:22 +0000 (16:38 +0300)] 
login-proxy: Make sure input line isn't freed too early

proxy_parse_line() could free the proxy's istream, which frees the line
string. With IMAP the line could have been used as part of the error string
passed to login_proxy_failed(), which can free the istream before using
the string for logging purposes. This could have resulted in logging a
corrupted line or a crash.

Broken by e3134289529cec16ade44cefd0fd26594ae40e30

4 years agolib-test: Make sure child processes exit cleanly with SIGTERM
Timo Sirainen [Fri, 23 Jul 2021 12:45:03 +0000 (14:45 +0200)] 
lib-test: Make sure child processes exit cleanly with SIGTERM

It's normal behavior that the parent process kills the child process with
SIGTERM. This shouldn't result in the child process dying with SIGTERM, but
a clean exit. This was causing http-test-client-errors unit tests to fail
somewhat randomly, especially when running them only with 1 CPU.

4 years agolib-test: Ensure we send signals to regular PIDs only
Aki Tuomi [Wed, 21 Jul 2021 11:06:55 +0000 (14:06 +0300)] 
lib-test: Ensure we send signals to regular PIDs only

4 years agolib-test: Update subprocess list after forking
Aki Tuomi [Wed, 21 Jul 2021 11:05:34 +0000 (14:05 +0300)] 
lib-test: Update subprocess list after forking

Due to a race condition, we could end up killing PID 0 by accident
sometimes.

4 years agolib: random_fill() - Optimize away memmove()
Timo Sirainen [Thu, 22 Jul 2021 08:23:00 +0000 (11:23 +0300)] 
lib: random_fill() - Optimize away memmove()

We just need to track the position of how far the random_next buffer has
been used.

4 years agosubmission-login: submission-proxy - Send XCLIENT data in multiple commands if line...
Stephan Bosch [Sun, 4 Jul 2021 22:36:36 +0000 (00:36 +0200)] 
submission-login: submission-proxy - Send XCLIENT data in multiple commands if line exceeds 512 bytes.

When the proxy talks to non-Dovecot software, failures could occur otherwise. Particularly Postfix will fail.

4 years agosubmission-login: submission-proxy - Send PROTO and HELO XCLIENT fields.
Stephan Bosch [Fri, 18 Jun 2021 22:31:19 +0000 (00:31 +0200)] 
submission-login: submission-proxy - Send PROTO and HELO XCLIENT fields.

4 years agosubmission-login: submission-proxy - Properly send EHLO after XCLIENT.
Stephan Bosch [Fri, 18 Jun 2021 17:32:03 +0000 (19:32 +0200)] 
submission-login: submission-proxy - Properly send EHLO after XCLIENT.

4 years agosubmission-login: submission-proxy - Reorder XCLIENT fields to match lib-smtp client.
Stephan Bosch [Mon, 5 Jul 2021 21:33:51 +0000 (23:33 +0200)] 
submission-login: submission-proxy - Reorder XCLIENT fields to match lib-smtp client.

4 years agosubmission-login: submission-proxy - Handle EHLO reply in a separate function.
Stephan Bosch [Fri, 18 Jun 2021 22:25:02 +0000 (00:25 +0200)] 
submission-login: submission-proxy - Handle EHLO reply in a separate function.

4 years agosubmission-login: submission-proxy - Move sending STARTTLS to separate function.
Stephan Bosch [Fri, 18 Jun 2021 21:58:38 +0000 (23:58 +0200)] 
submission-login: submission-proxy - Move sending STARTTLS to separate function.

4 years agosubmission-login: submission-proxy - Avoid sending empty XCLIENT FORWARD field.
Stephan Bosch [Fri, 18 Jun 2021 17:52:33 +0000 (19:52 +0200)] 
submission-login: submission-proxy - Avoid sending empty XCLIENT FORWARD field.

4 years agosubmission: Separately pass XCLIENT HELO value from pre-login to post-login service.
Stephan Bosch [Fri, 18 Jun 2021 17:31:54 +0000 (19:31 +0200)] 
submission: Separately pass XCLIENT HELO value from pre-login to post-login service.

4 years agosubmission: submission-backend-relay - Use smtp_server_connection_get_proxy_data...
Stephan Bosch [Fri, 18 Jun 2021 15:02:23 +0000 (17:02 +0200)] 
submission: submission-backend-relay - Use smtp_server_connection_get_proxy_data() for composing client settings.

4 years agosubmission: main - Restructure parsing of login input data.
Stephan Bosch [Fri, 18 Jun 2021 15:46:07 +0000 (17:46 +0200)] 
submission: main - Restructure parsing of login input data.

Needed for adding additional fields.

4 years agosubmission-login: client-authenticate - Restructure composition of master_prefix.
Stephan Bosch [Fri, 18 Jun 2021 14:43:55 +0000 (16:43 +0200)] 
submission-login: client-authenticate - Restructure composition of master_prefix.

Needed for later commit.

4 years agolib-smtp: smtp-server-connection - Record proxied EHLO domain separately.
Stephan Bosch [Fri, 18 Jun 2021 17:27:40 +0000 (19:27 +0200)] 
lib-smtp: smtp-server-connection - Record proxied EHLO domain separately.

This prevents it from being overriden by a local EHLO command.

4 years agolib-smtp: smtp-server - Make smtp_server_connection_set_proxy_data() public.
Stephan Bosch [Fri, 18 Jun 2021 17:02:34 +0000 (19:02 +0200)] 
lib-smtp: smtp-server - Make smtp_server_connection_set_proxy_data() public.

4 years agolib-smtp: smtp-server-connection - Use smtp_server_connection_get_proxy_data() for...
Stephan Bosch [Fri, 18 Jun 2021 14:54:51 +0000 (16:54 +0200)] 
lib-smtp: smtp-server-connection - Use smtp_server_connection_get_proxy_data() for the conn_proxy_data_updated() callback.

Removes code duplication.