changeset 3071:c7db6b291daa HEAD

API cleanup
author Timo Sirainen <tss@iki.fi>
date Sat, 08 Jan 2005 23:22:52 +0200
parents 305ac76afcda
children 289a98ba5d95
files src/auth/auth-client-connection.c src/auth/auth-request.c src/auth/auth-request.h src/auth/mech-anonymous.c src/auth/mech-apop.c src/auth/mech-cram-md5.c src/auth/mech-digest-md5.c src/auth/mech-login.c src/auth/mech-ntlm.c src/auth/mech-plain.c src/auth/mech-rpa.c src/auth/mech.h
diffstat 12 files changed, 81 insertions(+), 117 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-client-connection.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/auth-client-connection.c	Sat Jan 08 23:22:52 2005 +0200
@@ -226,9 +226,14 @@
 		return FALSE;
 	}
 
-	request = auth_request_new(conn->auth, mech);
+	request = mech->auth_new(auth_callback);
 	if (request == NULL)
 		return TRUE;
+
+	request->auth = conn->auth;
+	request->mech = mech;
+	request->created = ioloop_time;
+
 	hash_insert(conn->auth_requests, POINTER_CAST(id), request);
 
 	request->conn = conn;
@@ -297,8 +302,7 @@
 
 	/* connection is referenced only until auth_callback is called. */
 	conn->refcount++;
-	auth_request_initial(request, initial_resp_data, initial_resp_len,
-			     auth_callback);
+	auth_request_initial(request, initial_resp_data, initial_resp_len);
 	return TRUE;
 }
 
@@ -348,7 +352,7 @@
 	}
 
 	conn->refcount++;
-	auth_request_continue(request, buf->data, buf->used, auth_callback);
+	auth_request_continue(request, buf->data, buf->used);
 	return TRUE;
 }
 
--- a/src/auth/auth-request.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/auth-request.c	Sat Jan 08 23:22:52 2005 +0200
@@ -23,21 +23,6 @@
 static buffer_t *auth_failures_buf;
 static struct timeout *to_auth_failures;
 
-struct auth_request *auth_request_new(struct auth *auth,
-				      struct mech_module *mech)
-{
-	struct auth_request *request;
-
-	request = mech->auth_new();
-	if (request == NULL)
-		return NULL;
-
-	request->auth = auth;
-	request->mech = mech;
-	request->created = ioloop_time;
-	return request;
-}
-
 void auth_request_destroy(struct auth_request *request)
 {
 	i_assert(request->refcount > 0);
@@ -118,17 +103,15 @@
 }
 
 void auth_request_initial(struct auth_request *request,
-			  const unsigned char *data, size_t data_size,
-			  mech_callback_t *callback)
+			  const unsigned char *data, size_t data_size)
 {
-	request->mech->auth_initial(request, data, data_size, callback);
+	request->mech->auth_initial(request, data, data_size);
 }
 
 void auth_request_continue(struct auth_request *request,
-			   const unsigned char *data, size_t data_size,
-			   mech_callback_t *callback)
+			   const unsigned char *data, size_t data_size)
 {
-	request->mech->auth_continue(request, data, data_size, callback);
+	request->mech->auth_continue(request, data, data_size);
 }
 
 void auth_request_verify_plain(struct auth_request *request,
--- a/src/auth/auth-request.h	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/auth-request.h	Sat Jan 08 23:22:52 2005 +0200
@@ -48,11 +48,9 @@
 int auth_request_unref(struct auth_request *request);
 
 void auth_request_initial(struct auth_request *request,
-			  const unsigned char *data, size_t data_size,
-			  mech_callback_t *callback);
+			  const unsigned char *data, size_t data_size);
 void auth_request_continue(struct auth_request *request,
-			   const unsigned char *data, size_t data_size,
-			   mech_callback_t *callback);
+			   const unsigned char *data, size_t data_size);
 
 void auth_request_verify_plain(struct auth_request *request,
 			       const char *password,
--- a/src/auth/mech-anonymous.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech-anonymous.c	Sat Jan 08 23:22:52 2005 +0200
@@ -5,8 +5,7 @@
 
 static void
 mech_anonymous_auth_continue(struct auth_request *request,
-			     const unsigned char *data, size_t data_size,
-			     mech_callback_t *callback)
+			     const unsigned char *data, size_t data_size)
 {
 	i_assert(request->auth->anonymous_username != NULL);
 
@@ -18,7 +17,6 @@
 		auth_request_log_info(request, "anonymous", "login");
 	}
 
-	request->callback = callback;
 	request->user = p_strdup(request->pool,
 				 request->auth->anonymous_username);
 
@@ -27,14 +25,13 @@
 
 static void
 mech_anonymous_auth_initial(struct auth_request *request,
-			    const unsigned char *data, size_t data_size,
-			    mech_callback_t *callback)
+			    const unsigned char *data, size_t data_size)
 {
-	if (data_size == 0)
-		callback(request, AUTH_CLIENT_RESULT_CONTINUE, NULL, 0);
-	else {
-		mech_anonymous_auth_continue(request, data, data_size,
-					     callback);
+	if (data_size == 0) {
+		request->callback(request, AUTH_CLIENT_RESULT_CONTINUE,
+				  NULL, 0);
+	} else {
+		mech_anonymous_auth_continue(request, data, data_size);
 	}
 }
 
@@ -44,7 +41,7 @@
 	pool_unref(request->pool);
 }
 
-static struct auth_request *mech_anonymous_auth_new(void)
+static struct auth_request *mech_anonymous_auth_new(mech_callback_t *callback)
 {
         struct auth_request *request;
 	pool_t pool;
@@ -53,7 +50,7 @@
 	request = p_new(pool, struct auth_request, 1);
 	request->refcount = 1;
 	request->pool = pool;
-
+	request->callback = callback;
 	return request;
 }
 
--- a/src/auth/mech-apop.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech-apop.c	Sat Jan 08 23:22:52 2005 +0200
@@ -71,16 +71,13 @@
 
 static void
 mech_apop_auth_initial(struct auth_request *auth_request,
-		       const unsigned char *data, size_t data_size,
-		       mech_callback_t *callback)
+		       const unsigned char *data, size_t data_size)
 {
 	struct apop_auth_request *request =
 		(struct apop_auth_request *)auth_request;
 	const unsigned char *tmp, *end, *username = NULL;
 	const char *str, *error;
 
-	auth_request->callback = callback;
-
 	if (data_size == 0) {
 		/* Should never happen */
 		auth_request_log_info(auth_request, "apop",
@@ -141,7 +138,7 @@
 	pool_unref(request->pool);
 }
 
-static struct auth_request *mech_apop_auth_new(void)
+static struct auth_request *mech_apop_auth_new(mech_callback_t *callback)
 {
 	struct apop_auth_request *request;
 	pool_t pool;
@@ -152,6 +149,7 @@
 
 	request->auth_request.refcount = 1;
 	request->auth_request.pool = pool;
+	request->auth_request.callback = callback;
 	return &request->auth_request;
 }
 
--- a/src/auth/mech-cram-md5.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech-cram-md5.c	Sat Jan 08 23:22:52 2005 +0200
@@ -132,16 +132,13 @@
 
 static void
 mech_cram_md5_auth_continue(struct auth_request *auth_request,
-			    const unsigned char *data, size_t data_size,
-			    mech_callback_t *callback)
+			    const unsigned char *data, size_t data_size)
 {
 	struct cram_auth_request *request =
 		(struct cram_auth_request *)auth_request;
 	const char *error;
 
 	if (parse_cram_response(request, data, data_size, &error)) {
-		auth_request->callback = callback;
-
 		if (auth_request_set_username(auth_request, request->username,
 					      &error)) {
 			auth_request_lookup_credentials(auth_request,
@@ -161,15 +158,14 @@
 static void
 mech_cram_md5_auth_initial(struct auth_request *auth_request,
 			   const unsigned char *data __attr_unused__,
-			   size_t data_size __attr_unused__,
-			   mech_callback_t *callback)
+			   size_t data_size __attr_unused__)
 {
 	struct cram_auth_request *request =
 		(struct cram_auth_request *)auth_request;
 
 	request->challenge = p_strdup(request->pool, get_cram_challenge());
-	callback(auth_request, AUTH_CLIENT_RESULT_CONTINUE,
-		 request->challenge, strlen(request->challenge));
+	auth_request->callback(auth_request, AUTH_CLIENT_RESULT_CONTINUE,
+			       request->challenge, strlen(request->challenge));
 }
 
 static void mech_cram_md5_auth_free(struct auth_request *request)
@@ -177,7 +173,7 @@
 	pool_unref(request->pool);
 }
 
-static struct auth_request *mech_cram_md5_auth_new(void)
+static struct auth_request *mech_cram_md5_auth_new(mech_callback_t *callback)
 {
 	struct cram_auth_request *request;
 	pool_t pool;
@@ -188,6 +184,7 @@
 
 	request->auth_request.refcount = 1;
 	request->auth_request.pool = pool;
+	request->auth_request.callback = callback;
 	return &request->auth_request;
 }
 
--- a/src/auth/mech-digest-md5.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech-digest-md5.c	Sat Jan 08 23:22:52 2005 +0200
@@ -543,8 +543,7 @@
 
 static void
 mech_digest_md5_auth_continue(struct auth_request *auth_request,
-			      const unsigned char *data, size_t data_size,
-			      mech_callback_t *callback)
+			      const unsigned char *data, size_t data_size)
 {
 	struct digest_auth_request *request =
 		(struct digest_auth_request *)auth_request;
@@ -558,8 +557,6 @@
 	}
 
 	if (parse_digest_response(request, data, data_size, &error)) {
-		auth_request->callback = callback;
-
 		username = request->realm == NULL ? request->username :
 			t_strconcat(request->username, "@",
 				    request->realm, NULL);
@@ -580,8 +577,7 @@
 
 static void
 mech_digest_md5_auth_initial(struct auth_request *auth_request,
-			     const unsigned char *data, size_t data_size,
-			     mech_callback_t *callback)
+			     const unsigned char *data, size_t data_size)
 {
 	struct digest_auth_request *request =
 		(struct digest_auth_request *)auth_request;
@@ -589,14 +585,13 @@
 
 	if (data_size > 0) {
 		/* FIXME: support subsequent authentication? */
-		mech_digest_md5_auth_continue(auth_request, data, data_size,
-					      callback);
+		mech_digest_md5_auth_continue(auth_request, data, data_size);
 		return;
 	}
 
 	challenge = get_digest_challenge(request);
-	callback(auth_request, AUTH_CLIENT_RESULT_CONTINUE,
-		 str_data(challenge), str_len(challenge));
+	auth_request->callback(auth_request, AUTH_CLIENT_RESULT_CONTINUE,
+			       str_data(challenge), str_len(challenge));
 }
 
 static void mech_digest_md5_auth_free(struct auth_request *request)
@@ -605,7 +600,7 @@
 }
 
 static struct auth_request *
-mech_digest_md5_auth_new(void)
+mech_digest_md5_auth_new(mech_callback_t *callback)
 {
 	struct digest_auth_request *request;
 	pool_t pool;
@@ -613,10 +608,11 @@
 	pool = pool_alloconly_create("digest_md5_auth_request", 2048);
 	request = p_new(pool, struct digest_auth_request, 1);
 	request->pool = pool;
+	request->qop = QOP_AUTH;
 
 	request->auth_request.refcount = 1;
 	request->auth_request.pool = pool;
-	request->qop = QOP_AUTH;
+	request->auth_request.callback = callback;
 	return &request->auth_request;
 }
 
--- a/src/auth/mech-login.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech-login.c	Sat Jan 08 23:22:52 2005 +0200
@@ -32,14 +32,11 @@
 
 static void
 mech_login_auth_continue(struct auth_request *request,
-			 const unsigned char *data, size_t data_size,
-			 mech_callback_t *callback)
+			 const unsigned char *data, size_t data_size)
 {
 	static const char prompt2[] = "Password:";
 	const char *username, *error;
 
-	request->callback = callback;
-
 	if (request->user == NULL) {
 		username = t_strndup(data, data_size);
 
@@ -49,8 +46,8 @@
 			return;
 		}
 
-		callback(request, AUTH_CLIENT_RESULT_CONTINUE,
-			 prompt2, strlen(prompt2));
+		request->callback(request, AUTH_CLIENT_RESULT_CONTINUE,
+				  prompt2, strlen(prompt2));
 	} else {
 		char *pass = p_strndup(unsafe_data_stack_pool, data, data_size);
 		auth_request_verify_plain(request, pass, verify_callback);
@@ -61,13 +58,12 @@
 static void
 mech_login_auth_initial(struct auth_request *request,
 			const unsigned char *data __attr_unused__,
-			size_t data_size __attr_unused__,
-			mech_callback_t *callback)
+			size_t data_size __attr_unused__)
 {
 	static const char prompt1[] = "Username:";
 
-	callback(request, AUTH_CLIENT_RESULT_CONTINUE,
-		 prompt1, strlen(prompt1));
+	request->callback(request, AUTH_CLIENT_RESULT_CONTINUE,
+			  prompt1, strlen(prompt1));
 }
 
 static void mech_login_auth_free(struct auth_request *request)
@@ -75,16 +71,16 @@
 	pool_unref(request->pool);
 }
 
-static struct auth_request *mech_login_auth_new(void)
+static struct auth_request *mech_login_auth_new(mech_callback_t *callback)
 {
 	struct auth_request *request;
 	pool_t pool;
 
 	pool = pool_alloconly_create("login_auth_request", 256);
 	request = p_new(pool, struct auth_request, 1);
-
 	request->refcount = 1;
 	request->pool = pool;
+	request->callback = callback;
 	return request;
 }
 
--- a/src/auth/mech-ntlm.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech-ntlm.c	Sat Jan 08 23:22:52 2005 +0200
@@ -181,15 +181,12 @@
 
 static void
 mech_ntlm_auth_continue(struct auth_request *auth_request,
-			const unsigned char *data, size_t data_size,
-			mech_callback_t *callback)
+			const unsigned char *data, size_t data_size)
 {
 	struct ntlm_auth_request *request =
 		(struct ntlm_auth_request *)auth_request;
 	const char *error;
 
-	auth_request->callback = callback;
-
 	if (!request->challenge) {
 		const struct ntlmssp_request *ntlm_request =
 			(struct ntlmssp_request *)data;
@@ -247,13 +244,14 @@
 
 static void
 mech_ntlm_auth_initial(struct auth_request *request,
-		       const unsigned char *data, size_t data_size,
-		       mech_callback_t *callback)
+		       const unsigned char *data, size_t data_size)
 {
-	if (data_size == 0)
-		callback(request, AUTH_CLIENT_RESULT_CONTINUE, NULL, 0);
-	else
-		mech_ntlm_auth_continue(request, data, data_size, callback);
+	if (data_size == 0) {
+		request->callback(request, AUTH_CLIENT_RESULT_CONTINUE,
+				  NULL, 0);
+	} else {
+		mech_ntlm_auth_continue(request, data, data_size);
+	}
 }
 
 static void
@@ -262,7 +260,7 @@
 	pool_unref(request->pool);
 }
 
-static struct auth_request *mech_ntlm_auth_new(void)
+static struct auth_request *mech_ntlm_auth_new(mech_callback_t *callback)
 {
 	struct ntlm_auth_request *request;
 	pool_t pool;
@@ -273,6 +271,7 @@
 
 	request->auth_request.refcount = 1;
 	request->auth_request.pool = pool;
+	request->auth_request.callback = callback;
 	return &request->auth_request;
 }
 
--- a/src/auth/mech-plain.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech-plain.c	Sat Jan 08 23:22:52 2005 +0200
@@ -23,15 +23,12 @@
 
 static void
 mech_plain_auth_continue(struct auth_request *request,
-			 const unsigned char *data, size_t data_size,
-			 mech_callback_t *callback)
+			 const unsigned char *data, size_t data_size)
 {
 	const char *authid, *authenid, *error;
 	char *pass;
 	size_t i, count, len;
 
-	request->callback = callback;
-
 	/* authorization ID \0 authentication ID \0 pass.
 	   we'll ignore authorization ID for now. */
 	authid = (const char *) data;
@@ -73,13 +70,14 @@
 
 static void
 mech_plain_auth_initial(struct auth_request *request,
-			const unsigned char *data, size_t data_size,
-			mech_callback_t *callback)
+			const unsigned char *data, size_t data_size)
 {
-	if (data_size == 0)
-		callback(request, AUTH_CLIENT_RESULT_CONTINUE, NULL, 0);
-	else
-		mech_plain_auth_continue(request, data, data_size, callback);
+	if (data_size == 0) {
+		request->callback(request, AUTH_CLIENT_RESULT_CONTINUE,
+				  NULL, 0);
+	} else {
+		mech_plain_auth_continue(request, data, data_size);
+	}
 }
 
 static void
@@ -88,7 +86,7 @@
 	pool_unref(request->pool);
 }
 
-static struct auth_request *mech_plain_auth_new(void)
+static struct auth_request *mech_plain_auth_new(mech_callback_t *callback)
 {
         struct auth_request *request;
 	pool_t pool;
@@ -97,6 +95,7 @@
 	request = p_new(pool, struct auth_request, 1);
 	request->refcount = 1;
 	request->pool = pool;
+        request->callback = callback;
 	return request;
 }
 
--- a/src/auth/mech-rpa.c	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech-rpa.c	Sat Jan 08 23:22:52 2005 +0200
@@ -504,14 +504,11 @@
 
 static void
 mech_rpa_auth_continue(struct auth_request *auth_request,
-		       const unsigned char *data, size_t data_size,
-		       mech_callback_t *callback)
+		       const unsigned char *data, size_t data_size)
 {
 	struct rpa_auth_request *request =
 		(struct rpa_auth_request *)auth_request;
 
-	auth_request->callback = callback;
-
 	switch (request->phase) {
 	case 0:
 		mech_rpa_auth_phase1(auth_request, data, data_size);
@@ -530,13 +527,14 @@
 
 static void
 mech_rpa_auth_initial(struct auth_request *request,
-		      const unsigned char *data, size_t data_size,
-		      mech_callback_t *callback)
+		      const unsigned char *data, size_t data_size)
 {
-	if (data_size == 0)
-		callback(request, AUTH_CLIENT_RESULT_CONTINUE, NULL, 0);
-	else
-		mech_rpa_auth_continue(request, data, data_size, callback);
+	if (data_size == 0) {
+		request->callback(request, AUTH_CLIENT_RESULT_CONTINUE,
+				  NULL, 0);
+	} else {
+		mech_rpa_auth_continue(request, data, data_size);
+	}
 }
 
 static void
@@ -551,7 +549,7 @@
 	pool_unref(auth_request->pool);
 }
 
-static struct auth_request *mech_rpa_auth_new(void)
+static struct auth_request *mech_rpa_auth_new(mech_callback_t *callback)
 {
 	struct rpa_auth_request *request;
 	pool_t pool;
@@ -563,6 +561,7 @@
 
 	request->auth_request.refcount = 1;
 	request->auth_request.pool = pool;
+	request->auth_request.callback = callback;
 	return &request->auth_request;
 }
 
--- a/src/auth/mech.h	Sat Jan 08 21:01:31 2005 +0200
+++ b/src/auth/mech.h	Sat Jan 08 23:22:52 2005 +0200
@@ -24,13 +24,11 @@
 	unsigned int passdb_need_plain:1;
 	unsigned int passdb_need_credentials:1;
 
-	struct auth_request *(*auth_new)(void);
+	struct auth_request *(*auth_new)(mech_callback_t *callback);
 	void (*auth_initial)(struct auth_request *request,
-			     const unsigned char *data, size_t data_size,
-			     mech_callback_t *callback);
+			     const unsigned char *data, size_t data_size);
 	void (*auth_continue)(struct auth_request *request,
-			      const unsigned char *data, size_t data_size,
-			      mech_callback_t *callback);
+			      const unsigned char *data, size_t data_size);
 	void (*auth_free)(struct auth_request *request);
 };