changeset 21734:8b5f6e2ff4a6

auth: oauth2 - remove db_oauth2_request.failed It is an unnecessary duplication of passdb_result.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 16 Mar 2017 00:42:28 +0200
parents 01ffe59436af
children 4119b7774573
files src/auth/db-oauth2.c src/auth/db-oauth2.h src/auth/passdb-oauth2.c
diffstat 3 files changed, 18 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/db-oauth2.c	Thu Mar 16 00:38:39 2017 +0200
+++ b/src/auth/db-oauth2.c	Thu Mar 16 00:42:28 2017 +0200
@@ -398,17 +398,17 @@
 }
 
 static void db_oauth2_callback(struct db_oauth2_request *req,
-			       enum passdb_result result, bool success,
+			       enum passdb_result result,
 			       const char *error)
 {
 	db_oauth2_lookup_callback_t *callback = req->callback;
 	req->callback = NULL;
 
-	i_assert(result == PASSDB_RESULT_OK || (!success && error != NULL));
+	i_assert(result == PASSDB_RESULT_OK || error != NULL);
 
 	if (callback != NULL) {
 		DLLIST_REMOVE(&req->db->head, req);
-		callback(req->db, result, success, req, error, req->context);
+		callback(req->db, result, req, error, req->context);
 	}
 }
 
@@ -427,7 +427,6 @@
 
 	if (username_value == NULL) {
 		*result_r = PASSDB_RESULT_INTERNAL_FAILURE;
-		req->failed = TRUE;
 		*error_r = "No username returned";
 		return FALSE;
 	}
@@ -448,10 +447,10 @@
 		*error_r = t_strdup_printf("Username '%s' did not match '%s'",
 					str_c(username_req), str_c(username_val));
 		*result_r = PASSDB_RESULT_USER_UNKNOWN;
-		req->failed = TRUE;
+		return FALSE;
+	} else {
+		return TRUE;
 	}
-
-	return !req->failed;
 }
 
 static bool
@@ -465,10 +464,10 @@
 		     strcmp(req->db->set.active_value, active_value) != 0)) {
 			*error_r = "User account is not active";
 			*result_r = PASSDB_RESULT_USER_DISABLED;
-			req->failed = TRUE;
+			return FALSE;
 		}
 	}
-	return !req->failed;
+	return TRUE;
 }
 
 static bool
@@ -486,10 +485,10 @@
 			*error_r = t_strdup_printf("Token is not valid for scope '%s'",
 						   req->db->set.scope);
 			*result_r = PASSDB_RESULT_USER_DISABLED;
-			req->failed = TRUE;
+			return FALSE;
 		}
 	}
-	return !req->failed;
+	return TRUE;
 }
 
 static void db_oauth2_process_fields(struct db_oauth2_request *req)
@@ -499,14 +498,13 @@
 	if (db_oauth2_validate_username(req, &result, &error) &&
 	    db_oauth2_user_is_enabled(req, &result, &error) &&
 	    db_oauth2_token_in_scope(req, &result, &error) &&
-	    db_oauth2_template_export(req, &result, &error) &&
-	    !req->failed) {
+	    db_oauth2_template_export(req, &result, &error)) {
 		result = PASSDB_RESULT_OK;
 	} else {
 		i_assert(result != PASSDB_RESULT_OK && error != NULL);
 	}
 
-	db_oauth2_callback(req, result, !req->failed, error);
+	db_oauth2_callback(req, result, error);
 }
 
 static void
@@ -517,8 +515,7 @@
 
 	if (!result->success) {
 		/* fail here */
-		req->failed = TRUE;
-		db_oauth2_callback(req, PASSDB_RESULT_INTERNAL_FAILURE, FALSE, result->error);
+		db_oauth2_callback(req, PASSDB_RESULT_INTERNAL_FAILURE, result->error);
 		return;
 	}
 	db_oauth2_fields_merge(req, result->fields);
@@ -556,8 +553,7 @@
 		enum passdb_result passdb_result = result->success ?
 			PASSDB_RESULT_PASSWORD_MISMATCH :
 			PASSDB_RESULT_INTERNAL_FAILURE;
-		req->failed = TRUE;
-		db_oauth2_callback(req, passdb_result, FALSE, result->error == NULL ? "Invalid token" : result->error);
+		db_oauth2_callback(req, passdb_result, result->error == NULL ? "Invalid token" : result->error);
 		return;
 	}
 
--- a/src/auth/db-oauth2.h	Thu Mar 16 00:38:39 2017 +0200
+++ b/src/auth/db-oauth2.h	Thu Mar 16 00:42:28 2017 +0200
@@ -7,7 +7,6 @@
 
 typedef void db_oauth2_lookup_callback_t(struct db_oauth2 *db,
 					 enum passdb_result result,
-					 bool success,
 					 struct db_oauth2_request *request,
 					 const char *error,
 					 void *context);
@@ -29,8 +28,6 @@
 	db_oauth2_lookup_callback_t *callback;
 	void *context;
 	verify_plain_callback_t *verify_callback;
-
-	bool failed:1;
 };
 
 
@@ -42,7 +39,7 @@
 void db_oauth2_lookup(struct db_oauth2 *db, struct db_oauth2_request *req, const char *token, struct auth_request *request, db_oauth2_lookup_callback_t *callback, void *context);
 #define db_oauth2_lookup(db, req, token, request, callback, context) \
 	db_oauth2_lookup(db, req, token + \
-		CALLBACK_TYPECHECK(callback, void(*)(struct db_oauth2*, enum passdb_result, bool, struct db_oauth2_request *req, const char*, typeof(context))), \
+		CALLBACK_TYPECHECK(callback, void(*)(struct db_oauth2*, enum passdb_result, struct db_oauth2_request *req, const char*, typeof(context))), \
 		request, (db_oauth2_lookup_callback_t*)callback, (void*)context)
 
 #endif
--- a/src/auth/passdb-oauth2.c	Thu Mar 16 00:38:39 2017 +0200
+++ b/src/auth/passdb-oauth2.c	Thu Mar 16 00:42:28 2017 +0200
@@ -11,15 +11,14 @@
 
 static void
 oauth2_verify_plain_continue(struct db_oauth2 *db ATTR_UNUSED,
-			     enum passdb_result result, bool success,
+			     enum passdb_result result,
 			     struct db_oauth2_request *req, const char *error,
 			     struct auth_request *request)
 {
-	i_assert(success || result != PASSDB_RESULT_OK);
-	if (!success && result == PASSDB_RESULT_INTERNAL_FAILURE)
+	if (result == PASSDB_RESULT_INTERNAL_FAILURE)
 		auth_request_log_error(request, AUTH_SUBSYS_DB, "oauth2 failed: %s",
 				       error);
-	else if (!success)
+	else if (result != PASSDB_RESULT_OK)
 		auth_request_log_info(request, AUTH_SUBSYS_DB, "oauth2 failed: %s",
 				      error);
 	req->verify_callback(result, request);