changeset 2764:3cc4ebb5f42d HEAD

Didn't work with asynchronous passdb.
author Timo Sirainen <tss@iki.fi>
date Mon, 18 Oct 2004 02:36:08 +0300
parents ab14dffd0e91
children 428bba43a387
files src/auth/mech-rpa.c
diffstat 1 files changed, 17 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/mech-rpa.c	Mon Oct 18 02:08:40 2004 +0300
+++ b/src/auth/mech-rpa.c	Mon Oct 18 02:36:08 2004 +0300
@@ -405,14 +405,30 @@
 {
 	struct rpa_auth_request *request =
 		(struct rpa_auth_request *)auth_request;
+	unsigned char response[16];
 	buffer_t *hash_buffer;
+	const unsigned char *token4;
+	size_t token4_size;
 
-	if (credentials == NULL)
+	if (credentials == NULL) {
+		mech_auth_finish(auth_request, NULL, 0, FALSE);
 		return;
+	}
 
 	request->pwd_md5 = p_malloc(request->pool, 16);
 	hash_buffer = buffer_create_data(request->pool, request->pwd_md5, 16);
 	hex_to_binary(credentials, hash_buffer);
+
+	rpa_user_response(request, response);
+	if (memcmp(response, request->user_response, 16) != 0) {
+		mech_auth_finish(auth_request, NULL, 0, FALSE);
+		return;
+	}
+
+	token4 = mech_rpa_build_token4(request, &token4_size);
+	auth_request->callback(auth_request, AUTH_CLIENT_RESULT_CONTINUE,
+			       token4, token4_size);
+	request->phase = 2;
 }
 
 static void
@@ -455,10 +471,7 @@
 {
 	struct rpa_auth_request *request =
 		(struct rpa_auth_request *)auth_request;
-	unsigned char response[16];
-	const unsigned char *token4;
 	const char *error;
-	size_t token4_size;
 
 	if (!rpa_parse_token3(request, data, data_size, &error)) {
 		if (verbose) {
@@ -480,21 +493,6 @@
 
 	passdb->lookup_credentials(auth_request, PASSDB_CREDENTIALS_RPA,
 				   rpa_credentials_callback);
-	if (request->pwd_md5 == NULL) {
-		mech_auth_finish(auth_request, NULL, 0, FALSE);
-		return;
-	}
-
-	rpa_user_response(request, response);
-	if (memcmp(response, request->user_response, 16) != 0) {
-		mech_auth_finish(auth_request, NULL, 0, FALSE);
-		return;
-	}
-
-	token4 = mech_rpa_build_token4(request, &token4_size);
-	auth_request->callback(auth_request, AUTH_CLIENT_RESULT_CONTINUE,
-			       token4, token4_size);
-	request->phase = 2;
 }
 
 static void