From: Timo Sirainen Date: Wed, 12 Mar 2014 09:53:49 +0000 (+0200) Subject: auth: If auth-worker lookup times out, log a bit more details about it. X-Git-Tag: 2.2.13.rc1~208 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f08c6da58d4cffc5b4777485ebc475dff614e491;p=thirdparty%2Fdovecot%2Fcore.git auth: If auth-worker lookup times out, log a bit more details about it. --- diff --git a/src/auth/auth-worker-server.c b/src/auth/auth-worker-server.c index e3169f80a3..55adc2786f 100644 --- a/src/auth/auth-worker-server.c +++ b/src/auth/auth-worker-server.c @@ -26,6 +26,7 @@ struct auth_worker_request { unsigned int id; time_t created; + const char *username; const char *data; auth_worker_callback_t *callback; void *context; @@ -223,7 +224,9 @@ static void auth_worker_destroy(struct auth_worker_connection **_conn, idle_count--; if (conn->request != NULL) { - i_error("auth worker: Aborted request: %s", reason); + i_error("auth worker: Aborted %s request for %s: %s", + t_strcut(conn->request->data, '\t'), + conn->request->username, reason); conn->request->callback(t_strdup_printf( "FAIL\t%d", PASSDB_RESULT_INTERNAL_FAILURE), conn->request->context); @@ -399,7 +402,7 @@ static void worker_input(struct auth_worker_connection *conn) } struct auth_worker_connection * -auth_worker_call(pool_t pool, const char *data, +auth_worker_call(pool_t pool, const char *username, const char *data, auth_worker_callback_t *callback, void *context) { struct auth_worker_connection *conn; @@ -407,6 +410,7 @@ auth_worker_call(pool_t pool, const char *data, request = p_new(pool, struct auth_worker_request, 1); request->created = ioloop_time; + request->username = p_strdup(pool, username); request->data = p_strdup(pool, data); request->callback = callback; request->context = context; diff --git a/src/auth/auth-worker-server.h b/src/auth/auth-worker-server.h index 4214430c63..a46b332eba 100644 --- a/src/auth/auth-worker-server.h +++ b/src/auth/auth-worker-server.h @@ -7,7 +7,7 @@ struct auth_stream_reply; typedef bool auth_worker_callback_t(const char *reply, void *context); struct auth_worker_connection * ATTR_NOWARN_UNUSED_RESULT -auth_worker_call(pool_t pool, const char *data, +auth_worker_call(pool_t pool, const char *username, const char *data, auth_worker_callback_t *callback, void *context); void auth_worker_server_resume_input(struct auth_worker_connection *conn); diff --git a/src/auth/passdb-blocking.c b/src/auth/passdb-blocking.c index 7515db23a2..66e9c245d2 100644 --- a/src/auth/passdb-blocking.c +++ b/src/auth/passdb-blocking.c @@ -83,7 +83,7 @@ void passdb_blocking_verify_plain(struct auth_request *request) auth_request_export(request, str); auth_request_ref(request); - auth_worker_call(request->pool, str_c(str), + auth_worker_call(request->pool, request->user, str_c(str), verify_plain_callback, request); } @@ -123,7 +123,7 @@ void passdb_blocking_lookup_credentials(struct auth_request *request) auth_request_export(request, str); auth_request_ref(request); - auth_worker_call(request->pool, str_c(str), + auth_worker_call(request->pool, request->user, str_c(str), lookup_credentials_callback, request); } @@ -151,6 +151,6 @@ void passdb_blocking_set_credentials(struct auth_request *request, auth_request_export(request, str); auth_request_ref(request); - auth_worker_call(request->pool, str_c(str), + auth_worker_call(request->pool, request->user, str_c(str), set_credentials_callback, request); } diff --git a/src/auth/userdb-blocking.c b/src/auth/userdb-blocking.c index 57d4ab6701..b6d7031321 100644 --- a/src/auth/userdb-blocking.c +++ b/src/auth/userdb-blocking.c @@ -57,7 +57,8 @@ void userdb_blocking_lookup(struct auth_request *request) auth_request_export(request, str); auth_request_ref(request); - auth_worker_call(request->pool, str_c(str), user_callback, request); + auth_worker_call(request->pool, request->user, + str_c(str), user_callback, request); } static bool iter_callback(const char *reply, void *context) @@ -95,7 +96,8 @@ userdb_blocking_iter_init(struct auth_request *request, ctx->ctx.context = context; auth_request_ref(request); - ctx->conn = auth_worker_call(request->pool, str_c(str), iter_callback, ctx); + ctx->conn = auth_worker_call(request->pool, "*", + str_c(str), iter_callback, ctx); return &ctx->ctx; }