]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login proxy: If remote auth fails, say so in disconnect message instead of "internal...
authorTimo Sirainen <tss@iki.fi>
Fri, 27 Jan 2012 17:31:58 +0000 (19:31 +0200)
committerTimo Sirainen <tss@iki.fi>
Fri, 27 Jan 2012 17:31:58 +0000 (19:31 +0200)
src/imap-login/imap-proxy.c
src/login-common/client-common.c
src/login-common/client-common.h
src/pop3-login/pop3-proxy.c

index d43d40e0ba03452e0cf0cf8ae9a871b250fb4683..e52bb7f8d5f3741f2224564519c606bfcf7f31d7 100644 (file)
@@ -264,6 +264,7 @@ int imap_proxy_parse_line(struct client *client, const char *line)
                                         AUTH_FAILED_MSG);
                }
 
+               client->proxy_auth_failed = TRUE;
                client_proxy_failed(client, FALSE);
                return -1;
        } else if (strncasecmp(line, "* CAPABILITY ", 13) == 0) {
index 6f5e02dcf2efb5e877c4cd8ad87659d4a33cb850..d428efa4f1f1175664e84e1e0f3805bac8069748 100644 (file)
@@ -562,6 +562,8 @@ const char *client_get_extra_disconnect_reason(struct client *client)
        if (client->auth_process_comm_fail)
                return "(auth process communication failure)";
 
+       if (client->proxy_auth_failed)
+               return "(proxy dest auth failed)";
        if (client->auth_successes > 0) {
                return t_strdup_printf("(internal failure, %u succesful auths)",
                                       client->auth_successes);
index 9138a5669ec4b2f4d560445fb55f60bf37544206..833f5ef49bba36bcb35098b36956bc62866dd986 100644 (file)
@@ -134,6 +134,7 @@ struct client {
        unsigned int auth_try_aborted:1;
        unsigned int auth_initializing:1;
        unsigned int auth_process_comm_fail:1;
+       unsigned int proxy_auth_failed:1;
        unsigned int auth_waiting:1;
        /* ... */
 };
index 4a1b7d46578babcef09f4b59d36dbe5df2fcda52..4774ca6545ea30c021e4624878c9a71fb213136d 100644 (file)
@@ -156,6 +156,7 @@ int pop3_proxy_parse_line(struct client *client, const char *line)
                        line += 5;
                client_proxy_log_failure(client, line);
        }
+       client->proxy_auth_failed = TRUE;
        client_proxy_failed(client, FALSE);
        return -1;
 }