]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
*-login: Add LOGIN_PROXY_FAILURE_TYPE_AUTH_NOT_REPLIED
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 18 Jul 2025 11:28:47 +0000 (14:28 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 22 Jul 2025 06:18:51 +0000 (06:18 +0000)
src/imap-login/imap-proxy.c
src/login-common/client-common.c
src/login-common/login-proxy.c
src/login-common/login-proxy.h
src/pop3-login/pop3-proxy.c
src/submission-login/submission-proxy.c

index 75af0134ab0b9d476945cd65bb7eccdb127118fd..e3d13a3c95c0aeed493710d4fd28a8c34990f24b 100644 (file)
@@ -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);
index cf26ff2aecb45b4e497c26b649058209b2781748..8e15d2658609b654d011db79152a81725a46d04e 100644 (file)
@@ -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;
index 492ebbce802d1dd189e50356863d65a8cea37df2..26353dbdb01ebb9f93de0a33eac4f578e365cd1a 100644 (file)
@@ -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)
index 6465cfc6eb1defba79275c160f1f50193ab3753a..e0b6199ed767b90b4ed1cf0b9b4fa081c567c866 100644 (file)
@@ -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,
index 486dde87e2e3ccc61646bc0161d47b365bb8e1b3..cc5b9cb634e239932612a75422b10bc5127be0c8 100644 (file)
@@ -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;
index 2820f7c76b7af36231cc35a8208c759926fa8912..99d78403f8319557010833f9f80178c70b32da84 100644 (file)
@@ -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);