dovecot-2.0: auth master lookups: If request isn't found, return...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Jan 27 21:29:24 EET 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/cab5f2e7b806
changeset: 10589:cab5f2e7b806
user: Timo Sirainen <tss at iki.fi>
date: Wed Jan 27 21:29:19 2010 +0200
description:
auth master lookups: If request isn't found, return FAIL instead of NOTFOUND.
diffstat:
4 files changed, 8 insertions(+), 9 deletions(-)
doc/auth-protocol.txt | 6 ++----
src/auth/auth-master-connection.c | 4 ++--
src/auth/auth-request-handler.c | 4 ++--
src/lib-master/master-login-auth.c | 3 ++-
diffs (78 lines):
diff -r f4e64cb17aea -r cab5f2e7b806 doc/auth-protocol.txt
--- a/doc/auth-protocol.txt Wed Jan 27 21:25:44 2010 +0200
+++ b/doc/auth-protocol.txt Wed Jan 27 21:29:19 2010 +0200
@@ -176,13 +176,11 @@ ID is a connection-specific unique reque
ID is a connection-specific unique request identifier. It must be a 32bit
number, so typically you'd just increment it by one.
-NOTFOUND reply means that the request or user wasn't found. Master
-shouldn't even try to send REQUEST commands for nonexisting requests, so if
-it happens it means either a timeout caused by very high load, or client
-lying to master about the request.
+NOTFOUND reply means that the user wasn't found.
FAIL reply means an internal error occurred. Usually either a configuration
mistake or temporary error caused by lost resource (eg. database down).
+Also unknown request IDs are reported as FAILs.
USER reply is sent if request succeeded. It can return parameters:
diff -r f4e64cb17aea -r cab5f2e7b806 src/auth/auth-master-connection.c
--- a/src/auth/auth-master-connection.c Wed Jan 27 21:25:44 2010 +0200
+++ b/src/auth/auth-master-connection.c Wed Jan 27 21:29:19 2010 +0200
@@ -94,12 +94,12 @@ master_input_request(struct auth_master_
i_error("Master requested auth for nonexisting client %u",
client_pid);
(void)o_stream_send_str(conn->output,
- t_strdup_printf("NOTFOUND\t%u\n", id));
+ t_strdup_printf("FAIL\t%u\n", id));
} else if (memcmp(client_conn->cookie, cookie, sizeof(cookie)) != 0) {
i_error("Master requested auth for client %u with invalid cookie",
client_pid);
(void)o_stream_send_str(conn->output,
- t_strdup_printf("NOTFOUND\t%u\n", id));
+ t_strdup_printf("FAIL\t%u\n", id));
} else {
auth_request_handler_master_request(
client_conn->request_handler, conn, id, client_id);
diff -r f4e64cb17aea -r cab5f2e7b806 src/auth/auth-request-handler.c
--- a/src/auth/auth-request-handler.c Wed Jan 27 21:25:44 2010 +0200
+++ b/src/auth/auth-request-handler.c Wed Jan 27 21:29:19 2010 +0200
@@ -531,7 +531,7 @@ void auth_request_handler_master_request
if (request == NULL) {
i_error("Master request %u.%u not found",
handler->client_pid, client_id);
- auth_stream_reply_add(reply, "NOTFOUND", NULL);
+ auth_stream_reply_add(reply, "FAIL", NULL);
auth_stream_reply_add(reply, NULL, dec2str(id));
handler->master_callback(reply, master);
return;
@@ -544,7 +544,7 @@ void auth_request_handler_master_request
!request->successful) {
i_error("Master requested unfinished authentication request "
"%u.%u", handler->client_pid, client_id);
- auth_stream_reply_add(reply, "NOTFOUND", NULL);
+ auth_stream_reply_add(reply, "FAIL", NULL);
auth_stream_reply_add(reply, NULL, dec2str(id));
handler->master_callback(reply, master);
auth_request_unref(&request);
diff -r f4e64cb17aea -r cab5f2e7b806 src/lib-master/master-login-auth.c
--- a/src/lib-master/master-login-auth.c Wed Jan 27 21:25:44 2010 +0200
+++ b/src/lib-master/master-login-auth.c Wed Jan 27 21:29:19 2010 +0200
@@ -151,7 +151,7 @@ master_login_auth_input_notfound(struct
id = (unsigned int)strtoul(args, NULL, 10);
request = master_login_auth_lookup_request(auth, id);
if (request != NULL) {
- i_error("Auth request not found (timed out?): %u", id);
+ i_error("Authenticated user not found from userdb");
request->callback(NULL, request->context);
i_free(request);
}
@@ -172,6 +172,7 @@ master_login_auth_input_fail(struct mast
id = (unsigned int)strtoul(args, NULL, 10);
request = master_login_auth_lookup_request(auth, id);
if (request != NULL) {
+ i_error("Internal auth failure");
request->callback(NULL, request->context);
i_free(request);
}
More information about the dovecot-cvs
mailing list