From: Timo Sirainen Date: Wed, 26 Jul 2023 09:12:20 +0000 (+0300) Subject: lib-sql: Fix duration logging in sql_query_finished_event() calls X-Git-Tag: 2.4.0~2623 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e74a1b95ec37ed4dad5a8f39eb47eb5eb6ad829a;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: Fix duration logging in sql_query_finished_event() calls C has no sequence point between function parameters, so the duration may have been uninitialized when logging it. Broken by 09cf741d6632f3f5a2be3eff95ce0de4c16c228e & f492f4a73172f1189c3121e87141582fec122fad --- diff --git a/src/lib-sql/driver-pgsql.c b/src/lib-sql/driver-pgsql.c index f16bf19f83..9c293e2a58 100644 --- a/src/lib-sql/driver-pgsql.c +++ b/src/lib-sql/driver-pgsql.c @@ -480,10 +480,11 @@ static void result_finish(struct pgsql_result *result) e_debug(e->event(), SQL_QUERY_FINISHED_FMT": %s", result->query, duration, error); } else { - e_debug(sql_query_finished_event(&db->api, result->api.event, - result->query, FALSE, &duration)-> - event(), - SQL_QUERY_FINISHED_FMT, result->query, duration); + struct event_passthrough *e = + sql_query_finished_event(&db->api, result->api.event, + result->query, FALSE, &duration); + e_debug(e->event(), SQL_QUERY_FINISHED_FMT, + result->query, duration); } result->api.callback = TRUE; T_BEGIN { diff --git a/src/lib-sql/driver-sqlpool.c b/src/lib-sql/driver-sqlpool.c index 987082f5fd..a2451b66ab 100644 --- a/src/lib-sql/driver-sqlpool.c +++ b/src/lib-sql/driver-sqlpool.c @@ -647,11 +647,12 @@ static void driver_sqlpool_timeout(struct sqlpool_db *db) if (request->query != NULL) { - e_error(sql_query_finished_event(&db->api, request->event, + struct event_passthrough *e = + sql_query_finished_event(&db->api, request->event, request->query, FALSE, &duration)-> - add_str("error", "Query timed out")-> - event(), + add_str("error", "Query timed out"); + e_error(e->event(), SQL_QUERY_FINISHED_FMT": Query timed out " "(no free connections for %u secs)", request->query, duration,