struct auth_worker_request {
unsigned int id;
time_t created;
+ const char *username;
const char *data;
auth_worker_callback_t *callback;
void *context;
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);
}
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;
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;
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);
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);
}
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);
}
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);
}
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)
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;
}