From: Timo Sirainen Date: Fri, 18 Jul 2025 11:28:47 +0000 (+0300) Subject: *-login: Add LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5fde53de4ebdf791a5fe583d4f8e52b89215bc7c;p=thirdparty%2Fdovecot%2Fcore.git *-login: Add LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED --- diff --git a/src/imap-login/imap-proxy.c b/src/imap-login/imap-proxy.c index 75af0134ab..e3d13a3c95 100644 --- a/src/imap-login/imap-proxy.c +++ b/src/imap-login/imap-proxy.c @@ -579,6 +579,7 @@ imap_proxy_send_failure_reply(struct imap_client *imap_client, break; case LOGIN_PROXY_FAILURE_TYPE_REMOTE_CONFIG: case LOGIN_PROXY_FAILURE_TYPE_INTERNAL_CONFIG: + case LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED: client_send_reply_code(&imap_client->common, IMAP_CMD_REPLY_NO, IMAP_RESP_CODE_SERVERBUG, LOGIN_PROXY_FAILURE_MSG); diff --git a/src/login-common/client-common.c b/src/login-common/client-common.c index cf26ff2aec..8e15d26586 100644 --- a/src/login-common/client-common.c +++ b/src/login-common/client-common.c @@ -1447,6 +1447,7 @@ bool client_get_extra_disconnect_reason(struct client *client, last_reason = "protocol failure"; break; case LOGIN_PROXY_FAILURE_TYPE_AUTH_REPLIED: + case LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED: event_reason = "auth_failed"; last_reason = "authentication failure"; break; diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 492ebbce80..26353dbdb0 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -830,6 +830,7 @@ bool login_proxy_failed(struct login_proxy *proxy, struct event *event, log_prefix = "Remote server sent invalid input: "; break; case LOGIN_PROXY_FAILURE_TYPE_AUTH_REPLIED: + case LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED: log_prefix = ""; try_reconnect = FALSE; break; @@ -855,6 +856,7 @@ bool login_proxy_failed(struct login_proxy *proxy, struct event *event, } if (type != LOGIN_PROXY_FAILURE_TYPE_AUTH_REPLIED && + type != LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED && type != LOGIN_PROXY_FAILURE_TYPE_AUTH_TEMPFAIL) e_error(event, "%s%s", log_prefix, reason); else if (proxy->client->set->auth_verbose) diff --git a/src/login-common/login-proxy.h b/src/login-common/login-proxy.h index 6465cfc6eb..e0b6199ed7 100644 --- a/src/login-common/login-proxy.h +++ b/src/login-common/login-proxy.h @@ -35,6 +35,9 @@ enum login_proxy_failure_type { /* Authentication failed to backend. The LOGIN/AUTH command reply was already sent to the client. */ LOGIN_PROXY_FAILURE_TYPE_AUTH_REPLIED, + /* Authentication failed to backend. The LOGIN/AUTH command reply was + NOT sent to the client yet. */ + LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED, /* Authentication failed with a temporary failure code. Attempting it again might work. */ LOGIN_PROXY_FAILURE_TYPE_AUTH_TEMPFAIL, diff --git a/src/pop3-login/pop3-proxy.c b/src/pop3-login/pop3-proxy.c index 486dde87e2..cc5b9cb634 100644 --- a/src/pop3-login/pop3-proxy.c +++ b/src/pop3-login/pop3-proxy.c @@ -365,6 +365,7 @@ pop3_proxy_send_failure_reply(struct client *client, break; case LOGIN_PROXY_FAILURE_TYPE_INTERNAL_CONFIG: case LOGIN_PROXY_FAILURE_TYPE_REMOTE_CONFIG: + case LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED: client_send_reply(client, POP3_CMD_REPLY_ERROR, LOGIN_PROXY_FAILURE_MSG); break; diff --git a/src/submission-login/submission-proxy.c b/src/submission-login/submission-proxy.c index 2820f7c76b..99d78403f8 100644 --- a/src/submission-login/submission-proxy.c +++ b/src/submission-login/submission-proxy.c @@ -739,6 +739,7 @@ submission_proxy_send_failure_reply(struct submission_client *subm_client, case LOGIN_PROXY_FAILURE_TYPE_REMOTE_CONFIG: case LOGIN_PROXY_FAILURE_TYPE_PROTOCOL: case LOGIN_PROXY_FAILURE_TYPE_AUTH_REDIRECT: + case LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED: i_assert(cmd != NULL); subm_client->pending_auth = NULL; smtp_server_reply(cmd, 454, "4.7.0", LOGIN_PROXY_FAILURE_MSG);