From: Stephan Bosch Date: Mon, 23 Oct 2023 16:03:10 +0000 (+0200) Subject: auth: auth-request - Completely move mech_event to sasl-server request X-Git-Tag: 2.4.2~194 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=315af78b1347dea1fbc39a6b68da9eebdc170d8d;p=thirdparty%2Fdovecot%2Fcore.git auth: auth-request - Completely move mech_event to sasl-server request --- diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index c58ceef3d9..037a98dd30 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -194,14 +194,7 @@ void auth_request_init(struct auth_request *request) void auth_request_init_sasl(struct auth_request *request, const struct sasl_server_mech *mech) { - request->mech_event = event_create(request->event); - auth_sasl_request_init(request, mech); - - const char *prefix = t_strconcat( - t_str_lcase(request->sasl.req.mech_name), ": ", NULL); - event_set_append_log_prefix(request->mech_event, prefix); - auth_request_init(request); } @@ -375,7 +368,6 @@ void auth_request_unref(struct auth_request **_request) if (request->handler_pending_reply) auth_request_handler_abort(request); - event_unref(&request->mech_event); event_unref(&request->event); auth_request_state_count[request->state]--; auth_refresh_proctitle(); diff --git a/src/auth/auth-request.h b/src/auth/auth-request.h index 8b9fb75c59..c30a6e36cd 100644 --- a/src/auth/auth-request.h +++ b/src/auth/auth-request.h @@ -123,7 +123,6 @@ struct auth_request { pool_t pool; struct event *event; - struct event *mech_event; ARRAY(struct event *) authdb_event; enum auth_request_state state; diff --git a/src/auth/auth-sasl-mech-oauth2.c b/src/auth/auth-sasl-mech-oauth2.c index c6a42d9fd5..a537fedfc1 100644 --- a/src/auth/auth-sasl-mech-oauth2.c +++ b/src/auth/auth-sasl-mech-oauth2.c @@ -72,16 +72,16 @@ mech_oauth2_verify_token_continue(struct oauth2_auth_request *oauth2_req, /* OK result user fields */ if (args[0] == NULL || args[1] == NULL) { result = PASSDB_RESULT_INTERNAL_FAILURE; - e_error(request->mech_event, + e_error(request->event, "BUG: Invalid auth worker response: empty"); } else if (str_to_int(args[1], &parsed) < 0) { result = PASSDB_RESULT_INTERNAL_FAILURE; - e_error(request->mech_event, + e_error(request->event, "BUG: Invalid auth worker response: cannot parse '%s'", args[1]); } else if (args[2] == NULL) { result = PASSDB_RESULT_INTERNAL_FAILURE; - e_error(request->mech_event, + e_error(request->event, "BUG: Invalid auth worker response: cannot parse '%s'", args[1]); } else { @@ -130,9 +130,9 @@ mech_oauth2_verify_token_local_continue(struct db_oauth2_request *db_req, pool_unref(&db_req->pool); return; } else if (result == PASSDB_RESULT_INTERNAL_FAILURE) { - e_error(request->mech_event, "oauth2 failed: %s", error); + e_error(request->event, "oauth2 failed: %s", error); } else { - e_info(request->mech_event, "oauth2 failed: %s", error); + e_info(request->event, "oauth2 failed: %s", error); } oauth2_verify_finish(result, request); auth_request_unref(&request); diff --git a/src/auth/auth-sasl.c b/src/auth/auth-sasl.c index 772cd56154..e6fa3534ed 100644 --- a/src/auth/auth-sasl.c +++ b/src/auth/auth-sasl.c @@ -304,7 +304,7 @@ void auth_sasl_request_init(struct auth_request *request, { sasl_server_request_create(&request->sasl.req, mech, auth_sasl_translate_protocol_name(request), - request->mech_event); + request->event); } void auth_sasl_request_deinit(struct auth_request *request) diff --git a/src/auth/sasl-server-private.h b/src/auth/sasl-server-private.h index f8a5c7b28b..d48b8294db 100644 --- a/src/auth/sasl-server-private.h +++ b/src/auth/sasl-server-private.h @@ -3,6 +3,8 @@ #include "sasl-server-protected.h" +extern struct event_category event_category_sasl_server; + enum sasl_server_passdb_type { SASL_SERVER_PASSDB_TYPE_VERIFY_PLAIN, SASL_SERVER_PASSDB_TYPE_LOOKUP_CREDENTIALS, @@ -15,6 +17,7 @@ struct sasl_server_request { struct sasl_server_instance *sinst; struct sasl_server_req_ctx *rctx; struct sasl_server_mech_request *mech; + struct event *event; enum sasl_server_passdb_type passdb_type; sasl_server_mech_passdb_callback_t *passdb_callback; diff --git a/src/auth/sasl-server-request.c b/src/auth/sasl-server-request.c index 461cd2c70d..5a5deefb6b 100644 --- a/src/auth/sasl-server-request.c +++ b/src/auth/sasl-server-request.c @@ -37,6 +37,16 @@ void sasl_server_request_create(struct sasl_server_req_ctx *rctx, sinst->requests++; server->requests++; + if (event_parent == NULL) { + req->event = event_create(sinst->event); + event_drop_parent_log_prefixes(req->event, 1); + } else { + req->event = event_create(event_parent); + event_add_category(req->event, &event_category_sasl_server); + } + event_set_append_log_prefix(req->event, + t_strdup_printf("sasl(%s): ", t_str_lcase(mech->def->name))); + struct sasl_server_mech_request *mreq; if (mech->def->funcs->auth_new != NULL) @@ -48,7 +58,7 @@ void sasl_server_request_create(struct sasl_server_req_ctx *rctx, mreq->request = request; mreq->set = &sinst->set; mreq->mech = mech; - mreq->mech_event = event_parent; + mreq->mech_event = req->event; mreq->protocol = p_strdup(pool, protocol); req->mech = mreq; @@ -90,6 +100,7 @@ void sasl_server_mech_request_unref(struct sasl_server_mech_request **_mreq) if (req->rctx != NULL) i_zero(req->rctx); + event_unref(&req->event); pool_unref(&req->pool); } diff --git a/src/auth/sasl-server.c b/src/auth/sasl-server.c index fe38ccbd31..ac1bd3b86e 100644 --- a/src/auth/sasl-server.c +++ b/src/auth/sasl-server.c @@ -5,7 +5,7 @@ #include "sasl-server-private.h" -static struct event_category event_category_sasl_server = { +struct event_category event_category_sasl_server = { .name = "sasl-server" };