changeset 19923:81df79443d12

auth: If auth request contains "debug" field, enable auth_debug=yes for the request.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Fri, 11 Mar 2016 18:37:04 +1300
parents 377ec37208e5
children 5a4b25374acd
files src/auth/auth-request.c src/auth/auth-request.h src/auth/db-ldap.c src/auth/passdb-imap.c src/auth/userdb-prefetch.c
diffstat 5 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Thu Mar 10 14:59:46 2016 +1300
+++ b/src/auth/auth-request.c	Fri Mar 11 18:37:04 2016 +1300
@@ -64,6 +64,7 @@
 	request->session_pid = (pid_t)-1;
 
 	request->set = global_auth_settings;
+	request->debug = request->set->debug;
 	request->mech = mech;
 	request->mech_name = mech->mech_name;
 	request->extra_fields = auth_fields_init(request->pool);
@@ -86,6 +87,7 @@
 	request->last_access = ioloop_time;
 	request->session_pid = (pid_t)-1;
 	request->set = global_auth_settings;
+	request->debug = request->set->debug;
 	request->extra_fields = auth_fields_init(request->pool);
 	return request;
 }
@@ -110,6 +112,9 @@
 
 	auth = auth_request_get_auth(request);
 	request->set = auth->set;
+	/* NOTE: request->debug may already be TRUE here */
+	if (request->set->debug)
+		request->debug = TRUE;
 	request->passdb = auth->passdbs;
 	request->userdb = auth->userdbs;
 }
@@ -260,6 +265,8 @@
 		str_printfa(dest, "\treal_lport=%u", request->real_local_port);
 	if (request->real_remote_port != 0)
 		str_printfa(dest, "\treal_rport=%u", request->real_remote_port);
+	if (request->debug)
+		str_append(dest, "\tdebug");
 	if (request->secured)
 		str_append(dest, "\tsecured");
 	if (request->skip_password_check)
@@ -307,6 +314,8 @@
 		(void)net_str2port(value, &request->real_remote_port);
 	else if (strcmp(key, "session") == 0)
 		request->session_id = p_strdup(request->pool, value);
+	else if (strcmp(key, "debug") == 0)
+		request->debug = TRUE;
 	else
 		return FALSE;
 	return TRUE;
@@ -2152,7 +2161,7 @@
 {
 	va_list va;
 
-	if (!auth_request->set->debug)
+	if (!auth_request->debug)
 		return;
 
 	va_start(va, format);
--- a/src/auth/auth-request.h	Thu Mar 10 14:59:46 2016 +1300
+++ b/src/auth/auth-request.h	Fri Mar 11 18:37:04 2016 +1300
@@ -102,6 +102,8 @@
 	unsigned int userdb_lookup:1;
 	/* DIGEST-MD5 kludge */
 	unsigned int domain_is_realm:1;
+	/* auth_debug is enabled for this request */
+	unsigned int debug:1;
 
 	/* flags received from auth client: */
 	unsigned int secured:1;
--- a/src/auth/db-ldap.c	Thu Mar 10 14:59:46 2016 +1300
+++ b/src/auth/db-ldap.c	Fri Mar 11 18:37:04 2016 +1300
@@ -1552,7 +1552,7 @@
 	ctx->skip_null_values = skip_null_values;
 	ctx->iter_dn_values = iter_dn_values;
 	hash_table_create(&ctx->ldap_attrs, pool, 0, strcase_hash, strcasecmp);
-	if (ctx->auth_request->set->debug)
+	if (ctx->auth_request->debug)
 		ctx->debug = t_str_new(256);
 
 	get_ldap_fields(ctx, conn, res, "");
--- a/src/auth/passdb-imap.c	Thu Mar 10 14:59:46 2016 +1300
+++ b/src/auth/passdb-imap.c	Fri Mar 11 18:37:04 2016 +1300
@@ -79,7 +79,7 @@
 	string_t *str;
 
 	set = module->set;
-	set.debug = auth_request->set->debug;
+	set.debug = auth_request->debug;
 	set.dns_client_socket_path =
 		t_strconcat(auth_request->set->base_dir, "/",
 			    DNS_CLIENT_SOCKET_NAME, NULL);
--- a/src/auth/userdb-prefetch.c	Thu Mar 10 14:59:46 2016 +1300
+++ b/src/auth/userdb-prefetch.c	Fri Mar 11 18:37:04 2016 +1300
@@ -27,7 +27,7 @@
 			callback(USERDB_RESULT_INTERNAL_FAILURE, auth_request);
 			return;
 		}
-		if (!auth_request->userdb_lookup || auth_request->set->debug) {
+		if (!auth_request->userdb_lookup || auth_request->debug) {
 			/* more userdbs, they may know the user */
 			auth_request_log_debug(auth_request, AUTH_SUBSYS_DB,
 				"passdb didn't return userdb entries, "