From: Timo Sirainen Date: Fri, 27 Jan 2012 17:31:58 +0000 (+0200) Subject: login proxy: If remote auth fails, say so in disconnect message instead of "internal... X-Git-Tag: 2.1.rc6~129 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=80980955bb1bbcc1bd73623fe0912f334194ddd2;p=thirdparty%2Fdovecot%2Fcore.git login proxy: If remote auth fails, say so in disconnect message instead of "internal failure". --- diff --git a/src/imap-login/imap-proxy.c b/src/imap-login/imap-proxy.c index d43d40e0ba..e52bb7f8d5 100644 --- a/src/imap-login/imap-proxy.c +++ b/src/imap-login/imap-proxy.c @@ -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) { diff --git a/src/login-common/client-common.c b/src/login-common/client-common.c index 6f5e02dcf2..d428efa4f1 100644 --- a/src/login-common/client-common.c +++ b/src/login-common/client-common.c @@ -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); diff --git a/src/login-common/client-common.h b/src/login-common/client-common.h index 9138a5669e..833f5ef49b 100644 --- a/src/login-common/client-common.h +++ b/src/login-common/client-common.h @@ -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; /* ... */ }; diff --git a/src/pop3-login/pop3-proxy.c b/src/pop3-login/pop3-proxy.c index 4a1b7d4657..4774ca6545 100644 --- a/src/pop3-login/pop3-proxy.c +++ b/src/pop3-login/pop3-proxy.c @@ -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; }