changeset 5153:83f361144a8a HEAD

Added auth_request_set_fields() and used it instead of duplicating the code in multiple places.
author Timo Sirainen <tss@iki.fi>
date Fri, 16 Feb 2007 19:23:01 +0200
parents 3dc493d152ac
children b9cb27ecee98
files src/auth/auth-request.c src/auth/auth-request.h src/auth/passdb-blocking.c src/auth/passdb-cache.c
diffstat 4 files changed, 27 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Fri Feb 16 19:13:07 2007 +0200
+++ b/src/auth/auth-request.c	Fri Feb 16 19:23:01 2007 +0200
@@ -980,6 +980,27 @@
 	}
 }
 
+void auth_request_set_fields(struct auth_request *request,
+			     const char *const *fields,
+			     const char *default_scheme)
+{
+	const char *key, *value;
+
+	t_push();
+	for (; *fields != NULL; fields++) {
+		value = strchr(*fields, '=');
+		if (value == NULL) {
+			key = *fields;
+			value = "";
+		} else {
+			key = t_strdup_until(*fields, value);
+			value++;
+		}
+		auth_request_set_field(request, key, value, default_scheme);
+	}
+	t_pop();
+}
+
 int auth_request_password_verify(struct auth_request *request,
 				 const char *plain_password,
 				 const char *crypted_password,
--- a/src/auth/auth-request.h	Fri Feb 16 19:13:07 2007 +0200
+++ b/src/auth/auth-request.h	Fri Feb 16 19:23:01 2007 +0200
@@ -128,6 +128,9 @@
 void auth_request_set_field(struct auth_request *request,
 			    const char *name, const char *value,
 			    const char *default_scheme);
+void auth_request_set_fields(struct auth_request *request,
+			     const char *const *fields,
+			     const char *default_scheme);
 
 int auth_request_password_verify(struct auth_request *request,
 				 const char *plain_password,
--- a/src/auth/passdb-blocking.c	Fri Feb 16 19:13:07 2007 +0200
+++ b/src/auth/passdb-blocking.c	Fri Feb 16 19:23:01 2007 +0200
@@ -90,16 +90,7 @@
 		i_assert(auth_stream_is_empty(request->extra_fields) ||
 			 request->master_user != NULL);
 
-		for (tmp = t_strsplit(reply, "\t"); *tmp != NULL; tmp++) {
-			p = strchr(*tmp, '=');
-			if (p == NULL)
-				p = "";
-			else {
-				*tmp = t_strdup_until(*tmp, p);
-				p++;
-			}
-			auth_request_set_field(request, *tmp, p, NULL);
-		}
+		auth_request_set_fields(request, t_strsplit(reply, "\t"), NULL);
 	}
 	return 0;
 }
--- a/src/auth/passdb-cache.c	Fri Feb 16 19:13:07 2007 +0200
+++ b/src/auth/passdb-cache.c	Fri Feb 16 19:23:01 2007 +0200
@@ -9,26 +9,6 @@
 
 struct auth_cache *passdb_cache = NULL;
 
-static void list_save(struct auth_request *request, const char *const *list)
-{
-	const char *name, *value;
-
-	for (; *list != NULL; list++) {
-		t_push();
-		value = strchr(*list, '=');
-		if (value == NULL) {
-			name = *list;
-			value = "";
-		} else {
-			name = t_strcut(*list, '=');
-			value++;
-		}
-
-		auth_request_set_field(request, name, value, NULL);
-		t_pop();
-	}
-}
-
 bool passdb_cache_verify_plain(struct auth_request *request, const char *key,
 			       const char *password,
 			       enum passdb_result *result_r, int use_expired)
@@ -78,7 +58,7 @@
 
 	/* save the extra_fields only after we know we're using the
 	   cached data */
-	list_save(request, list + 1);
+	auth_request_set_fields(request, list + 1, NULL);
 
 	*result_r = ret > 0 ? PASSDB_RESULT_OK :
 		PASSDB_RESULT_PASSWORD_MISMATCH;
@@ -111,7 +91,7 @@
 	}
 
 	list = t_strsplit(value, "\t");
-        list_save(request, list + 1);
+	auth_request_set_fields(request, list + 1, NULL);
 
 	*result_r = PASSDB_RESULT_OK;
 	*password_r = list[0];