dovecot-2.0-sslstream: auth master lookups: If request isn't fou...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 13 02:58:37 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0-sslstream/rev/cab5f2e7b806
changeset: 10590: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