]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: If auth-worker lookup times out, log a bit more details about it.
authorTimo Sirainen <tss@iki.fi>
Wed, 12 Mar 2014 09:53:49 +0000 (11:53 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 12 Mar 2014 09:53:49 +0000 (11:53 +0200)
src/auth/auth-worker-server.c
src/auth/auth-worker-server.h
src/auth/passdb-blocking.c
src/auth/userdb-blocking.c

index e3169f80a3a0a0ce6459d45270e68fbf9483ba61..55adc2786f93f0950f765f7d2f2301dda06f962d 100644 (file)
@@ -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;
index 4214430c63573804a6e8c8b4da5f60c1ae2871b5..a46b332eba04403a72d5c0fb80be88366c0ed2e2 100644 (file)
@@ -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);
 
index 7515db23a2849919502518f7869dcc5aa6a92b4d..66e9c245d233b03ba4cbbe729b367b7ac428703c 100644 (file)
@@ -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);
 }
index 57d4ab6701c070e10e02bbdd3ea4d33160842ea0..b6d7031321df94a08b373a480efafffda3a74f00 100644 (file)
@@ -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;
 }