From 4ed1b49d815ec41a5e4b6a23d23e94b958da1923 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 21 Feb 2009 14:51:32 -0500 Subject: [PATCH] auth: Improved logging for "password scheme not available" failures. --HG-- branch : HEAD --- src/auth/auth-request.c | 26 +++++++++++--------------- src/auth/passdb-cache.c | 3 --- src/auth/passdb.c | 11 ++++++++--- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index f506e113d5..bebcb5c1c7 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -556,12 +556,11 @@ void auth_request_lookup_credentials_callback(enum passdb_result result, &result, TRUE)) { auth_request_log_info(request, "passdb", "Fallbacking to expired data from cache"); - } - if (result == PASSDB_RESULT_OK) { - if (!passdb_get_credentials(request, cache_cred, - cache_scheme, - &credentials, &size)) - result = PASSDB_RESULT_SCHEME_NOT_AVAILABLE; + passdb_handle_credentials( + result, cache_cred, cache_scheme, + auth_request_lookup_credentials_finish, + request); + return; } } @@ -575,8 +574,6 @@ void auth_request_lookup_credentials(struct auth_request *request, { struct passdb_module *passdb = request->passdb->passdb; const char *cache_key, *cache_cred, *cache_scheme; - const unsigned char *credentials; - size_t size; enum passdb_result result; i_assert(request->state == AUTH_REQUEST_STATE_MECH_CONTINUE); @@ -589,13 +586,10 @@ void auth_request_lookup_credentials(struct auth_request *request, if (passdb_cache_lookup_credentials(request, cache_key, &cache_cred, &cache_scheme, &result, FALSE)) { - if (result == PASSDB_RESULT_OK && - !passdb_get_credentials(request, cache_cred, - cache_scheme, - &credentials, &size)) - result = PASSDB_RESULT_SCHEME_NOT_AVAILABLE; - auth_request_lookup_credentials_finish( - result, credentials, size, request); + passdb_handle_credentials( + result, cache_cred, cache_scheme, + auth_request_lookup_credentials_finish, + request); return; } } @@ -604,6 +598,8 @@ void auth_request_lookup_credentials(struct auth_request *request, if (passdb->iface.lookup_credentials == NULL) { /* this passdb doesn't support credentials */ + auth_request_log_debug(request, "password", + "passdb doesn't support credential lookups"); auth_request_lookup_credentials_callback( PASSDB_RESULT_SCHEME_NOT_AVAILABLE, NULL, 0, request); } else if (passdb->blocking) { diff --git a/src/auth/passdb-cache.c b/src/auth/passdb-cache.c index d4cb9aeb26..ea3067a167 100644 --- a/src/auth/passdb-cache.c +++ b/src/auth/passdb-cache.c @@ -119,9 +119,6 @@ bool passdb_cache_lookup_credentials(struct auth_request *request, *password_r = *list[0] == '\0' ? NULL : list[0]; *scheme_r = password_get_scheme(password_r); i_assert(*scheme_r != NULL || *password_r == NULL); - - if (*password_r == NULL) - *result_r = PASSDB_RESULT_SCHEME_NOT_AVAILABLE; return TRUE; } diff --git a/src/auth/passdb.c b/src/auth/passdb.c index 898c8b38aa..f67762ca52 100644 --- a/src/auth/passdb.c +++ b/src/auth/passdb.c @@ -123,10 +123,15 @@ void passdb_handle_credentials(enum passdb_result result, return; } - if (password == NULL || - !passdb_get_credentials(auth_request, password, scheme, - &credentials, &size)) + if (password == NULL) { + auth_request_log_info(auth_request, "password", + "Requested %s scheme, but we have a NULL password", + auth_request->credentials_scheme); result = PASSDB_RESULT_SCHEME_NOT_AVAILABLE; + } else if (!passdb_get_credentials(auth_request, password, scheme, + &credentials, &size)) { + result = PASSDB_RESULT_SCHEME_NOT_AVAILABLE; + } callback(result, credentials, size, auth_request); } -- 2.47.3