]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
3 years agodoveadm who/kick: Add support for -f <passdb-field> parameter
Timo Sirainen [Tue, 11 Jan 2022 12:17:46 +0000 (14:17 +0200)] 
doveadm who/kick: Add support for -f <passdb-field> parameter

This is similar to what "doveadm proxy kick" has, i.e. list/kick users
based on their alternative usernames (user_* passdb fields).

3 years agodoveadm kick: Rewrite to use anvil KICK-USER command
Timo Sirainen [Tue, 11 Jan 2022 10:25:18 +0000 (12:25 +0200)] 
doveadm kick: Rewrite to use anvil KICK-USER command

Removed the "force" parameter, because it's no longer necessary.

3 years agoimap-hibernate: Change anvil service from imap to imap-hibernate
Timo Sirainen [Tue, 25 Jan 2022 12:49:15 +0000 (13:49 +0100)] 
imap-hibernate: Change anvil service from imap to imap-hibernate

This is better now that anvil can internally separate the service from
protocol.

3 years agoanvil: Track service and protocol separately
Timo Sirainen [Tue, 18 Jan 2022 12:42:51 +0000 (13:42 +0100)] 
anvil: Track service and protocol separately

This way anvil can track e.g. "imap" and "imap-hibernate" services
separately, but still count them in the same "imap" protocol towards
mail_max_userip_connections.

3 years agoanvil: Add optional conn-guid parameter to KICK-USER command
Timo Sirainen [Tue, 11 Jan 2022 10:11:31 +0000 (12:11 +0200)] 
anvil: Add optional conn-guid parameter to KICK-USER command

3 years agoanvil: Implement KICK-USER and KICK-ALT-USER commands
Timo Sirainen [Wed, 8 Dec 2021 00:35:37 +0000 (02:35 +0200)] 
anvil: Implement KICK-USER and KICK-ALT-USER commands

3 years agoanvil: Change to run the process as root and without chroot
Timo Sirainen [Wed, 8 Dec 2021 00:05:46 +0000 (02:05 +0200)] 
anvil: Change to run the process as root and without chroot

The KICK-USER command needs to be able to connect to other processes' admin
sockets and to send signals to other processes.

3 years agoanvil: Add admin_cmd_send()
Timo Sirainen [Mon, 3 Jan 2022 17:38:54 +0000 (19:38 +0200)] 
anvil: Add admin_cmd_send()

This can use either incoming or outgoing connections for sending the
command.

3 years agoanvil: Add admin-client API with connection pooling
Timo Sirainen [Mon, 27 Dec 2021 15:03:37 +0000 (17:03 +0200)] 
anvil: Add admin-client API with connection pooling

3 years agoanvil: Add support for sending commands to anvil client connections
Timo Sirainen [Mon, 3 Jan 2022 16:43:04 +0000 (18:43 +0200)] 
anvil: Add support for sending commands to anvil client connections

3 years agoanvil: Add anvil_connection_find()
Timo Sirainen [Mon, 27 Dec 2021 15:42:27 +0000 (17:42 +0200)] 
anvil: Add anvil_connection_find()

3 years agologin-common: Implement KICK-USER incoming anvil command
Timo Sirainen [Wed, 5 Jan 2022 22:17:42 +0000 (00:17 +0200)] 
login-common: Implement KICK-USER incoming anvil command

3 years agolib-master: anvil-client - Add support for handling incoming commands
Timo Sirainen [Tue, 4 Jan 2022 16:28:22 +0000 (18:28 +0200)] 
lib-master: anvil-client - Add support for handling incoming commands

3 years agolib-master, login-common: anvil_client_init() - Change callback to struct of callbacks
Timo Sirainen [Thu, 13 Jan 2022 15:17:28 +0000 (17:17 +0200)] 
lib-master, login-common: anvil_client_init() - Change callback to struct of callbacks

3 years agoanvil: Change VERSION line to be bidirectional and add -client/server suffix
Timo Sirainen [Wed, 5 Jan 2022 21:36:45 +0000 (23:36 +0200)] 
anvil: Change VERSION line to be bidirectional and add -client/server suffix

This makes it more similar to other internal protocols, and allows using
connection API more easily.

3 years agolib-master: anvil-client - Convert to connection API
Timo Sirainen [Wed, 5 Jan 2022 22:00:21 +0000 (00:00 +0200)] 
lib-master: anvil-client - Convert to connection API

3 years agolib-master: anvil-client - Delay ostream error handling
Timo Sirainen [Wed, 5 Jan 2022 21:58:52 +0000 (23:58 +0200)] 
lib-master: anvil-client - Delay ostream error handling

There's no need to handle write errors immediately. It just makes the code
more complex.

3 years agolib-master: anvil-client - Use struct connection
Timo Sirainen [Wed, 5 Jan 2022 21:12:56 +0000 (23:12 +0200)] 
lib-master: anvil-client - Use struct connection

3 years agoanvil: Add handshake with service name and PID for non-FIFO connections
Timo Sirainen [Wed, 22 Dec 2021 21:20:57 +0000 (23:20 +0200)] 
anvil: Add handshake with service name and PID for non-FIFO connections

This is in preparation for assuming that incoming anvil connections can also
be used to send admin commands for processes. Instead of connecting to the
process's admin UNIX socket, anvil can instead use the existing connection.
The PID is used to identify which admin connections are available.
When the handshake is used, multiplex iostream is enabled.

3 years agoanvil: Convert to using connection API
Timo Sirainen [Wed, 22 Dec 2021 21:09:25 +0000 (23:09 +0200)] 
anvil: Convert to using connection API

Anvil connections can optionally be FIFOs. This causes some difficulties
with the connection API, so everything couldn't be fully converted.

3 years agoanvil: Use struct connection for the anvil client
Timo Sirainen [Wed, 22 Dec 2021 10:40:58 +0000 (12:40 +0200)] 
anvil: Use struct connection for the anvil client

3 years agoanvil, doveadm: Add alt usernames to CONNECT-DUMP output
Timo Sirainen [Thu, 16 Dec 2021 02:50:09 +0000 (04:50 +0200)] 
anvil, doveadm: Add alt usernames to CONNECT-DUMP output

3 years agodoveadm who: Improve error handling
Timo Sirainen [Tue, 1 Feb 2022 15:22:47 +0000 (16:22 +0100)] 
doveadm who: Improve error handling

Avoid i_fatal(), but still fail with non-zero exit code.

3 years agodoveadm: Replace who_lookup() with iterator API
Timo Sirainen [Thu, 16 Dec 2021 02:48:40 +0000 (04:48 +0200)] 
doveadm: Replace who_lookup() with iterator API

3 years agologin-common: Send proxy session destination IP to anvil
Timo Sirainen [Mon, 17 Jan 2022 11:08:29 +0000 (12:08 +0100)] 
login-common: Send proxy session destination IP to anvil

3 years agolib-master: master_service_anvil_connect() - Add support for proxy session destination IP
Timo Sirainen [Mon, 17 Jan 2022 11:06:50 +0000 (12:06 +0100)] 
lib-master: master_service_anvil_connect() - Add support for proxy session destination IP

3 years agoanvil: Don't track proxy connections in userip_hash
Timo Sirainen [Tue, 18 Jan 2022 14:10:00 +0000 (15:10 +0100)] 
anvil: Don't track proxy connections in userip_hash

Otherwise proxy connections would also be counted towards tracking
mail_max_userip_connections, which could cause the same session to be
counted multiple times.

3 years agoanvil, doveadm: Add support for tracking proxy session destination IP
Timo Sirainen [Mon, 17 Jan 2022 10:59:30 +0000 (11:59 +0100)] 
anvil, doveadm: Add support for tracking proxy session destination IP

3 years agologin-common: Send alt usernames to anvil
Timo Sirainen [Wed, 12 Jan 2022 15:34:51 +0000 (17:34 +0200)] 
login-common: Send alt usernames to anvil

3 years agolib-master: master_service_anvil_connect() - Add support for alt usernames
Timo Sirainen [Wed, 12 Jan 2022 15:25:23 +0000 (17:25 +0200)] 
lib-master: master_service_anvil_connect() - Add support for alt usernames

3 years agoanvil: Add support for tracking alternative usernames
Timo Sirainen [Wed, 15 Dec 2021 23:58:35 +0000 (01:58 +0200)] 
anvil: Add support for tracking alternative usernames

3 years agolib-master, global: Send kick-type for anvil CONNECT
Timo Sirainen [Wed, 15 Dec 2021 11:41:32 +0000 (13:41 +0200)] 
lib-master, global: Send kick-type for anvil CONNECT

3 years agoanvil: Add test-connect-limit
Timo Sirainen [Wed, 15 Dec 2021 23:51:24 +0000 (01:51 +0200)] 
anvil: Add test-connect-limit

3 years agoanvil: Add kick-type parameter for CONNECT
Timo Sirainen [Mon, 17 Jan 2022 22:25:09 +0000 (23:25 +0100)] 
anvil: Add kick-type parameter for CONNECT

This indicates how the process supports kicking users.

3 years agoanvil: Split off session_[un]link_process()
Timo Sirainen [Thu, 13 Jan 2022 14:42:31 +0000 (16:42 +0200)] 
anvil: Split off session_[un]link_process()

3 years agolib-master, anvil: [DIS]CONNECT - Move conn-guid to being the first parameter
Timo Sirainen [Mon, 17 Jan 2022 22:31:40 +0000 (23:31 +0100)] 
lib-master, anvil: [DIS]CONNECT - Move conn-guid to being the first parameter

It uniquely identifies the connection, so it's clearer that it's the first
parameter.

3 years agoanvil, doveadm: Require conn-guid to be set for CONNECT
Timo Sirainen [Wed, 15 Dec 2021 22:46:58 +0000 (00:46 +0200)] 
anvil, doveadm: Require conn-guid to be set for CONNECT

This removes the need for refcount tracking.

3 years agoanvil: connect-limit - Add API for iterating user's all connections
Timo Sirainen [Mon, 7 Feb 2022 10:41:02 +0000 (11:41 +0100)] 
anvil: connect-limit - Add API for iterating user's all connections

3 years agoanvil: connect-limit - Keep track of all sessions per user
Timo Sirainen [Wed, 15 Dec 2021 13:39:23 +0000 (15:39 +0200)] 
anvil: connect-limit - Keep track of all sessions per user

3 years agoanvil: connect-limit - Keep track of all sessions per process
Timo Sirainen [Wed, 8 Dec 2021 00:25:39 +0000 (02:25 +0200)] 
anvil: connect-limit - Keep track of all sessions per process

3 years agosubmission: Change kick log message to "Server shutting down"
Timo Sirainen [Wed, 19 Jan 2022 23:09:58 +0000 (00:09 +0100)] 
submission: Change kick log message to "Server shutting down"

This way it's the same as with imap and pop3.

3 years agosubmission: Add admin-client with KICK-USER command
Timo Sirainen [Thu, 13 Jan 2022 16:09:51 +0000 (18:09 +0200)] 
submission: Add admin-client with KICK-USER command

3 years agopop3: Add admin-client with KICK-USER command
Timo Sirainen [Thu, 13 Jan 2022 16:07:02 +0000 (18:07 +0200)] 
pop3: Add admin-client with KICK-USER command

3 years agoimap: Add admin-client with KICK-USER command
Timo Sirainen [Thu, 13 Jan 2022 16:03:00 +0000 (18:03 +0200)] 
imap: Add admin-client with KICK-USER command

3 years agologin-common: Add admin-client with KICK-USER command
Timo Sirainen [Sat, 9 Oct 2021 21:03:20 +0000 (00:03 +0300)] 
login-common: Add admin-client with KICK-USER command

3 years agologin-common: Add login_proxy_kick_user_connection()
Timo Sirainen [Thu, 6 Jan 2022 11:34:09 +0000 (13:34 +0200)] 
login-common: Add login_proxy_kick_user_connection()

3 years agologin-common: Split off more generic login_proxy_kick_user/alt/host()
Timo Sirainen [Sat, 9 Oct 2021 21:22:03 +0000 (00:22 +0300)] 
login-common: Split off more generic login_proxy_kick_user/alt/host()

Move the IPC-specific command input/output handling to the caller, so
these functions just do the main work of kicking.

3 years agologin-common: Track proxied connections in anvil
Timo Sirainen [Wed, 8 Dec 2021 00:03:45 +0000 (02:03 +0200)] 
login-common: Track proxied connections in anvil

3 years agoglobal: Send connection GUIDs to anvil
Timo Sirainen [Sun, 12 Dec 2021 23:26:21 +0000 (01:26 +0200)] 
global: Send connection GUIDs to anvil

3 years agoanvil, doveadm: Add support for connection GUIDs
Timo Sirainen [Sun, 12 Dec 2021 23:22:31 +0000 (01:22 +0200)] 
anvil, doveadm: Add support for connection GUIDs

These are anvil-specific GUIDs that can be used to refer to a specific
connection.

3 years agoanvil, doveadm: Simplify CONNECT-DUMP output format
Timo Sirainen [Sun, 12 Dec 2021 23:17:13 +0000 (01:17 +0200)] 
anvil, doveadm: Simplify CONNECT-DUMP output format

3 years agoanvil, global: Split CONNECT/DISCONNECT/LOOKUP ident to separate parameters
Timo Sirainen [Sun, 12 Dec 2021 22:58:24 +0000 (00:58 +0200)] 
anvil, global: Split CONNECT/DISCONNECT/LOOKUP ident to separate parameters

3 years agoglobal: Increase anvil protocol major version number
Timo Sirainen [Sun, 12 Dec 2021 23:11:56 +0000 (01:11 +0200)] 
global: Increase anvil protocol major version number

The following changes break the backwards compatibility.

3 years agolib-master, global: Replace master_service_anvil_send() with explicit connect/disconn...
Timo Sirainen [Sun, 12 Dec 2021 22:56:12 +0000 (00:56 +0200)] 
lib-master, global: Replace master_service_anvil_send() with explicit connect/disconnect()

3 years agoglobal: Assume anvil command was success only if master_service_anvil_send() returns...
Timo Sirainen [Sun, 12 Dec 2021 22:52:49 +0000 (00:52 +0200)] 
global: Assume anvil command was success only if master_service_anvil_send() returns TRUE

3 years agolib-master: master_service_anvil_send() - Return TRUE if command was actually sent
Timo Sirainen [Sun, 12 Dec 2021 22:52:34 +0000 (00:52 +0200)] 
lib-master: master_service_anvil_send() - Return TRUE if command was actually sent

3 years agoanvil: Store service strings in a reference counted table
Timo Sirainen [Wed, 15 Dec 2021 13:15:34 +0000 (15:15 +0200)] 
anvil: Store service strings in a reference counted table

There are only a few different services, so there's no need to duplicate the
memory usage for each of the string instances.

3 years agoanvil: Initialize session_lookup struct directly
Timo Sirainen [Wed, 15 Dec 2021 12:57:31 +0000 (14:57 +0200)] 
anvil: Initialize session_lookup struct directly

3 years agoanvil: Rename "i" variables to "session"
Timo Sirainen [Wed, 15 Dec 2021 12:55:40 +0000 (14:55 +0200)] 
anvil: Rename "i" variables to "session"

3 years agoanvil: Rename struct ident_pid to struct session
Timo Sirainen [Wed, 15 Dec 2021 12:54:18 +0000 (14:54 +0200)] 
anvil: Rename struct ident_pid to struct session

3 years agoanvil: Change connect-limit API to use struct rather than ident string
Timo Sirainen [Sun, 12 Dec 2021 17:36:37 +0000 (19:36 +0200)] 
anvil: Change connect-limit API to use struct rather than ident string

3 years agoanvil: Split off main_init() and main_deinit()
Timo Sirainen [Mon, 3 Jan 2022 17:27:51 +0000 (19:27 +0200)] 
anvil: Split off main_init() and main_deinit()

3 years agoimap: Avoid sending untagged BYE in the middle of command output
Timo Sirainen [Thu, 13 Jan 2022 16:03:32 +0000 (18:03 +0200)] 
imap: Avoid sending untagged BYE in the middle of command output

This could have caused the untagged BYE to be sent in the middle of e.g.
FETCH command output if the session was kicked out.

3 years agolib-master: Add admin-client API
Timo Sirainen [Thu, 13 Jan 2022 15:32:09 +0000 (17:32 +0200)] 
lib-master: Add admin-client API

The admin-clients are automatically created for %{pid} socket listeners.
They are not reported to master process as being actual connections to
the process, or counted towards service_count.

3 years agoimap/pop3/submission-login: Add srv.<name>/%{pid}-admin unix socket listener
Timo Sirainen [Sat, 9 Oct 2021 23:04:33 +0000 (02:04 +0300)] 
imap/pop3/submission-login: Add srv.<name>/%{pid}-admin unix socket listener

This can be used by admin clients.

3 years agomaster: Automatically mkdir listener subdirectories
Timo Sirainen [Sat, 9 Oct 2021 22:56:21 +0000 (01:56 +0300)] 
master: Automatically mkdir listener subdirectories

The directory permissions are based on the unix/fifo_listeners that are
created under the directory.

3 years agomaster: Split off service_is_enabled()
Timo Sirainen [Tue, 25 Jan 2022 10:18:30 +0000 (11:18 +0100)] 
master: Split off service_is_enabled()

3 years agomaster: Support %{pid} in unix_listener paths
Timo Sirainen [Sat, 14 Nov 2020 18:30:39 +0000 (20:30 +0200)] 
master: Support %{pid} in unix_listener paths

This allows each process to have their own private UNIX socket listener.

3 years agomaster: service_unix_listener_listen() - Add path parameter
Timo Sirainen [Sat, 14 Nov 2020 18:20:29 +0000 (20:20 +0200)] 
master: service_unix_listener_listen() - Add path parameter

3 years agomaster: service_unix_listener_listen() - Add verify_addrinuse parameter
Timo Sirainen [Sat, 14 Nov 2020 17:56:06 +0000 (19:56 +0200)] 
master: service_unix_listener_listen() - Add verify_addrinuse parameter

3 years agomaster: Make service_unix_listener_listen() public
Timo Sirainen [Sat, 14 Nov 2020 17:54:46 +0000 (19:54 +0200)] 
master: Make service_unix_listener_listen() public

3 years agomaster: Move error logging from service_*_listener_listen() to parent function
Timo Sirainen [Sat, 14 Nov 2020 18:13:06 +0000 (20:13 +0200)] 
master: Move error logging from service_*_listener_listen() to parent function

This is in preparation for the following changes. It would have been
enough actually to just do this for service_unix_listener_listen(), but
it's nicer this way for consistency.

3 years agolib: Add connection_client_connect_with_retries()
Timo Sirainen [Wed, 5 Jan 2022 21:46:12 +0000 (23:46 +0200)] 
lib: Add connection_client_connect_with_retries()

3 years agolib: Add connection_input_read_stream()
Timo Sirainen [Tue, 4 Jan 2022 16:39:24 +0000 (18:39 +0200)] 
lib: Add connection_input_read_stream()

3 years agolib: Add i_stream_set_error()
Timo Sirainen [Tue, 4 Jan 2022 16:39:09 +0000 (18:39 +0200)] 
lib: Add i_stream_set_error()

3 years agolib-master: Remove unused master_auth_request()
Timo Sirainen [Sat, 14 Nov 2020 20:07:51 +0000 (22:07 +0200)] 
lib-master: Remove unused master_auth_request()

3 years agowelcome: Supply noreply-parameter to program client creation
Karl Fleischmann [Mon, 7 Feb 2022 08:20:34 +0000 (09:20 +0100)] 
welcome: Supply noreply-parameter to program client creation

Use the appropriate noreply parameter when initializing the program
client to implement the behavior as it was configured.

3 years agowelcome: Use program_client_exit_status enum value
Karl Fleischmann [Mon, 7 Feb 2022 08:19:04 +0000 (09:19 +0100)] 
welcome: Use program_client_exit_status enum value

Replace the implicit int with the explicit program_client_exit_status
enum value when starting the script and handling the callback.

3 years agowelcome: Remove io_loop_stop() call in callback
Timo Sirainen [Mon, 7 Feb 2022 08:18:03 +0000 (09:18 +0100)] 
welcome: Remove io_loop_stop() call in callback

This is the responsibility of the program-client API and should not
happen in the plugin itself.

3 years agolib-program-client: Stop waiting ioloop on destruction
Timo Sirainen [Mon, 7 Feb 2022 08:14:53 +0000 (09:14 +0100)] 
lib-program-client: Stop waiting ioloop on destruction

3 years agostats: stats_metrics_remove_dynamic() - Free the removed metric
Martti Rannanjärvi [Thu, 3 Feb 2022 23:28:45 +0000 (01:28 +0200)] 
stats: stats_metrics_remove_dynamic() - Free the removed metric

3 years agostats: stats_metric_alloc() - Fix indentation on p_new() call
Martti Rannanjärvi [Thu, 3 Feb 2022 23:32:18 +0000 (01:32 +0200)] 
stats: stats_metric_alloc() - Fix indentation on p_new() call

3 years agoreplication: aggregator - Free replicator_connection content
Martti Rannanjärvi [Mon, 31 Jan 2022 10:42:46 +0000 (12:42 +0200)] 
replication: aggregator - Free replicator_connection content

3 years agolib-master: Fix deinit memory leak with process_shutdown_filter
sergey.kitov [Wed, 2 Feb 2022 15:01:49 +0000 (17:01 +0200)] 
lib-master: Fix deinit memory leak with process_shutdown_filter

3 years agolmtp: proxy - Add per-connection counter to session_id
Timo Sirainen [Tue, 1 Feb 2022 13:57:16 +0000 (14:57 +0100)] 
lmtp: proxy - Add per-connection counter to session_id

This way connections to two different backends don't try to use the same
session_id. Add 'P' letter before the counter to clarify that it's the
proxy connection counter.

3 years agolmtp: Simplify/clarify per-recipient session ID
Timo Sirainen [Tue, 1 Feb 2022 13:40:48 +0000 (14:40 +0100)] 
lmtp: Simplify/clarify per-recipient session ID

The session ID is the transaction ID followed by an increasing recipient
count (number of RCPT commands) in the SMTP transaction. Clarify this by
adding 'R' letter before the counter. Also don't add the counter suffix at
all for the first recipient, since most transactions only have a single
recipient.

3 years agolib-smtp: server-transaction - Simplify/clarify transaction ID
Timo Sirainen [Tue, 1 Feb 2022 13:35:05 +0000 (14:35 +0100)] 
lib-smtp: server-transaction - Simplify/clarify transaction ID

The transaction ID is the session ID followed by an increasing transaction
count (number of MAIL commands) in the SMTP server connection. Clarify
this by adding 'T' letter before the counter. Also don't add the counter
suffix at all for the first session, since most sessions only have a
single transaction.

3 years agolib-smtp, lmtp: Add brackets to <session-id> in logging
Timo Sirainen [Tue, 1 Feb 2022 13:29:43 +0000 (14:29 +0100)] 
lib-smtp, lmtp: Add brackets to <session-id> in logging

This makes it clearer where the session-id stops. It's also similar to
how it is in mail_log_prefix.

3 years agolmtp: proxy - Use recipient-specific session-id when logging the result
Timo Sirainen [Tue, 1 Feb 2022 14:03:15 +0000 (15:03 +0100)] 
lmtp: proxy - Use recipient-specific session-id when logging the result

Instead of transaction ID, which is shared between recipients.

3 years agolmtp: struct lmtp_recipient - Change all strings to const
Timo Sirainen [Tue, 1 Feb 2022 13:58:57 +0000 (14:58 +0100)] 
lmtp: struct lmtp_recipient - Change all strings to const

3 years agoauth: ldap: Drop partially saved results before retrying request
Timo Sirainen [Wed, 26 Jan 2022 14:09:29 +0000 (16:09 +0200)] 
auth: ldap: Drop partially saved results before retrying request

Fixes "LDAP search returned multiple entries" happening after reconnects.

3 years agoauth: ldap: If any requests were lost, reconnect to LDAP server
Timo Sirainen [Wed, 26 Jan 2022 14:03:27 +0000 (16:03 +0200)] 
auth: ldap: If any requests were lost, reconnect to LDAP server

3 years agoauth: ldap: If LDAP connection appears to be hanging, abort all old requests
Timo Sirainen [Wed, 26 Jan 2022 14:00:45 +0000 (16:00 +0200)] 
auth: ldap: If LDAP connection appears to be hanging, abort all old requests

Retrying the reconnect might fix them, but since this situation isn't
supposed to happen in the first place, it's safer to just remove them
entirely to guarantee that it's not trying to keep retrying them for
a long time.

3 years agoauth: ldap: Reconnect to server if receiving unknown msgid
Timo Sirainen [Wed, 26 Jan 2022 12:46:55 +0000 (14:46 +0200)] 
auth: ldap: Reconnect to server if receiving unknown msgid

It's unclear why this happens. Is it a bug on server or client side?
Either way, this situation doesn't now fix itself automatically, so
reconnecting should help.

3 years agoauth: ldap: Stop re-sending request after 3 disconnect+reconnects
Timo Sirainen [Wed, 26 Jan 2022 12:43:01 +0000 (14:43 +0200)] 
auth: ldap: Stop re-sending request after 3 disconnect+reconnects

This prevents retrying the same LDAP request forever in situations where the
request causes LDAP server to become disconnected. This might fix some real
issues, but it was mainly implemented because testing the following commit
caused infinite looping.

3 years agowelcome: Use program-client for welcome script
Aki Tuomi [Wed, 19 Jan 2022 09:20:24 +0000 (10:20 +0100)] 
welcome: Use program-client for welcome script

Replace manual execution of client script with consolidated
program-client API.

3 years agolib-program-client: Add unit tests for client program execution
Karl Fleischmann [Thu, 20 Jan 2022 09:34:00 +0000 (10:34 +0100)] 
lib-program-client: Add unit tests for client program execution

- Add unit test that covers program_client_wait(), in which the script
  execution environment needs to wait for a still running asynchronous
  client program, and
- add unit test that covers a synchronous program_client_run().

3 years agolib-program-client: Add program_client_wait() function
Aki Tuomi [Wed, 19 Jan 2022 08:40:55 +0000 (09:40 +0100)] 
lib-program-client: Add program_client_wait() function

Akin to program_client_run() this function creates an inner io-loop that
waits but without operating on the available data.

3 years agolib-program-client: Process successful unix connection directly
Aki Tuomi [Wed, 19 Jan 2022 08:16:44 +0000 (09:16 +0100)] 
lib-program-client: Process successful unix connection directly

Call program_client_remote_connected() directly instead of adding it to
the io-loop.

3 years agoimapc: Start to handle new untagged fetch messages in imapc_sync()
Markus Valentin [Tue, 18 Jan 2022 08:46:32 +0000 (09:46 +0100)] 
imapc: Start to handle new untagged fetch messages in imapc_sync()