From: Markus Valentin Date: Tue, 24 Jan 2023 07:34:01 +0000 (+0100) Subject: login-common: client_disconnect() - Split off login_aborted_event() X-Git-Tag: 2.4.0~2896 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8dbab4dd8a7a17afb6d4447bc515b047e3b39b1b;p=thirdparty%2Fdovecot%2Fcore.git login-common: client_disconnect() - Split off login_aborted_event() Adds the login_aborted event. --- diff --git a/src/login-common/client-common.c b/src/login-common/client-common.c index 5267a3bab4..1e676da5ba 100644 --- a/src/login-common/client-common.c +++ b/src/login-common/client-common.c @@ -318,6 +318,29 @@ static void client_disconnected_log(struct event *event, const char *reason, e_info(event, "%s", reason); } +static void login_aborted_event(struct client *client, const char *reason, + bool add_disconnected_prefix) +{ + struct event *event = client->login_proxy == NULL ? + client->event : + login_proxy_get_event(client->login_proxy); + struct event_passthrough *e = event_create_passthrough(event)-> + set_name("login_aborted"); + const char *human_reason, *event_reason; + + i_assert(reason != NULL); + if (!client->no_extra_disconnect_reason && + client_get_extra_disconnect_reason(client, &human_reason, &event_reason)) + reason = t_strdup_printf("%s (%s)", reason, human_reason); + else + event_reason = reason; + + e->add_str("reason", event_reason); + + client_disconnected_log(e->event(), reason, + add_disconnected_prefix); +} + void client_disconnect(struct client *client, const char *reason, bool add_disconnected_prefix) { @@ -325,13 +348,9 @@ void client_disconnect(struct client *client, const char *reason, return; client->disconnected = TRUE; - if (!client->login_success && - !client->no_extra_disconnect_reason && reason != NULL) { - const char *human_reason, *event_reason; - if (client_get_extra_disconnect_reason(client, &human_reason, &event_reason)) - reason = t_strdup_printf("%s (%s)", reason, human_reason); - } - if (reason != NULL) { + if (!client->login_success && reason != NULL) { + login_aborted_event(client, reason, add_disconnected_prefix); + } else if (reason != NULL) { client_disconnected_log(client->login_proxy == NULL ? client->event : login_proxy_get_event(client->login_proxy),