dovecot-2.0: Log login pid/id for internal failures to allow mat...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Dec 3 12:05:42 EET 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/c6b0e643d2dc
changeset: 12504:c6b0e643d2dc
user: Timo Sirainen <tss at iki.fi>
date: Fri Dec 03 10:05:38 2010 +0000
description:
Log login pid/id for internal failures to allow matching errors between processes.
diffstat:
src/lib-master/master-login-auth.c | 46 ++++++++++++++--------
src/login-common/client-common.c | 4 +-
2 files changed, 32 insertions(+), 18 deletions(-)
diffs (108 lines):
diff -r 4455f79f964d -r c6b0e643d2dc src/lib-master/master-login-auth.c
--- a/src/lib-master/master-login-auth.c Fri Dec 03 09:10:12 2010 +0000
+++ b/src/lib-master/master-login-auth.c Fri Dec 03 10:05:38 2010 +0000
@@ -76,19 +76,27 @@
return auth;
}
+static void
+request_internal_failure(struct master_login_auth_request *request,
+ const char *reason)
+{
+ i_error("%s (client-pid=%u client-id=%u)",
+ reason, request->client_pid, request->auth_id);
+ request->callback(NULL, MASTER_AUTH_ERRMSG_INTERNAL_FAILURE,
+ request->context);
+}
+
void master_login_auth_disconnect(struct master_login_auth *auth)
{
struct master_login_auth_request *request;
- if (auth->request_head != NULL)
- i_error("Disconnected from auth server, aborting requests");
while (auth->request_head != NULL) {
request = auth->request_head;
DLLIST2_REMOVE(&auth->request_head,
&auth->request_tail, request);
- request->callback(NULL, MASTER_AUTH_ERRMSG_INTERNAL_FAILURE,
- request->context);
+ request_internal_failure(request,
+ "Disconnected from auth server, aborting");
i_free(request);
}
hash_table_clear(auth->requests, FALSE);
@@ -143,6 +151,7 @@
static void master_login_auth_timeout(struct master_login_auth *auth)
{
struct master_login_auth_request *request;
+ const char *reason;
while (auth->request_head != NULL &&
auth_get_next_timeout_secs(auth) == 0) {
@@ -151,10 +160,10 @@
&auth->request_tail, request);
hash_table_remove(auth->requests, POINTER_CAST(request->id));
- i_error("Auth server request timed out after %u secs",
+ reason = t_strdup_printf(
+ "Auth server request timed out after %u secs",
(unsigned int)(ioloop_time - request->create_stamp));
- request->callback(NULL, MASTER_AUTH_ERRMSG_INTERNAL_FAILURE,
- request->context);
+ request_internal_failure(request, reason);
i_free(request);
}
timeout_remove(&auth->to);
@@ -247,9 +256,10 @@
request = master_login_auth_lookup_request(auth, id);
if (request != NULL) {
- i_error("Authenticated user not found from userdb (id=%u)", id);
- request->callback(NULL, MASTER_AUTH_ERRMSG_INTERNAL_FAILURE,
- request->context);
+ const char *reason = t_strdup_printf(
+ "Authenticated user not found from userdb, "
+ "auth lookup id=%u", id);
+ request_internal_failure(request, reason);
i_free(request);
}
return TRUE;
@@ -275,13 +285,15 @@
request = master_login_auth_lookup_request(auth, id);
if (request != NULL) {
- if (error == NULL)
- i_error("Internal auth failure");
- else
- i_error("Internal auth failure: %s", error);
- request->callback(NULL, error != NULL ? error :
- MASTER_AUTH_ERRMSG_INTERNAL_FAILURE,
- request->context);
+ if (error == NULL) {
+ request_internal_failure(request,
+ "Internal auth failure");
+ } else {
+ i_error("Internal tuah failure: %s "
+ "(client-pid=%u client-id=%u)",
+ error, request->client_pid, request->auth_id);
+ request->callback(NULL, error, request->context);
+ }
i_free(request);
}
return TRUE;
diff -r 4455f79f964d -r c6b0e643d2dc src/login-common/client-common.c
--- a/src/login-common/client-common.c Fri Dec 03 09:10:12 2010 +0000
+++ b/src/login-common/client-common.c Fri Dec 03 10:05:38 2010 +0000
@@ -171,7 +171,9 @@
client_send_line(client, CLIENT_CMD_REPLY_AUTH_FAIL_TEMP,
"Internal login failure. "
"Refer to server log for more information.");
- client_destroy(client, "Internal login failure");
+ client_destroy(client, t_strdup_printf(
+ "Internal login failure (pid=%s id=%u)",
+ my_pid, client->master_auth_id));
}
void client_ref(struct client *client)
More information about the dovecot-cvs
mailing list