From: Aki Tuomi Date: Mon, 25 May 2020 18:47:35 +0000 (+0300) Subject: auth: db-oauth2 - Move db_oauth2_lookup_continue X-Git-Tag: 2.3.11.2~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=edd92a83cf8d31fe35416a17c08962adeac87a5c;p=thirdparty%2Fdovecot%2Fcore.git auth: db-oauth2 - Move db_oauth2_lookup_continue Simplifies next change --- diff --git a/src/auth/db-oauth2.c b/src/auth/db-oauth2.c index d7d44868aa..8b6d731fbc 100644 --- a/src/auth/db-oauth2.c +++ b/src/auth/db-oauth2.c @@ -632,6 +632,36 @@ static void db_oauth2_lookup_introspect(struct db_oauth2_request *req) db_oauth2_introspect_continue, req); } +static void +db_oauth2_lookup_continue(struct oauth2_request_result *result, + struct db_oauth2_request *req) +{ + enum passdb_result passdb_result; + const char *error; + + req->req = NULL; + + if (!result->success) { + passdb_result = PASSDB_RESULT_INTERNAL_FAILURE; + error = result->error; + } else if (!result->valid) { + passdb_result = PASSDB_RESULT_PASSWORD_MISMATCH; + error = "Invalid token"; + } else { + db_oauth2_fields_merge(req, result->fields); + if (*req->db->set.introspection_url != '\0' && + (req->db->set.force_introspection || + !db_oauth2_have_all_fields(req))) { + e_debug(authdb_event(req->auth_request), + "oauth2: Introspection needed after token validation"); + db_oauth2_lookup_introspect(req); + return; + } + db_oauth2_process_fields(req, &passdb_result, &error); + } + db_oauth2_callback(req, passdb_result, error); +} + static void db_oauth2_lookup_passwd_grant(struct oauth2_request_result *result, struct db_oauth2_request *req) @@ -682,36 +712,6 @@ db_oauth2_lookup_passwd_grant(struct oauth2_request_result *result, db_oauth2_callback(req, passdb_result, error); } -static void -db_oauth2_lookup_continue(struct oauth2_request_result *result, - struct db_oauth2_request *req) -{ - enum passdb_result passdb_result; - const char *error; - - req->req = NULL; - - if (!result->success) { - passdb_result = PASSDB_RESULT_INTERNAL_FAILURE; - error = result->error; - } else if (!result->valid) { - passdb_result = PASSDB_RESULT_PASSWORD_MISMATCH; - error = "Invalid token"; - } else { - db_oauth2_fields_merge(req, result->fields); - if (*req->db->set.introspection_url != '\0' && - (req->db->set.force_introspection || - !db_oauth2_have_all_fields(req))) { - e_debug(authdb_event(req->auth_request), - "oauth2: Introspection needed after token validation"); - db_oauth2_lookup_introspect(req); - return; - } - db_oauth2_process_fields(req, &passdb_result, &error); - } - db_oauth2_callback(req, passdb_result, error); -} - static int db_oauth2_local_validation(struct db_oauth2_request *req) { bool is_jwt;