]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-sql: Fix duration logging in sql_query_finished_event() calls
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 26 Jul 2023 09:12:20 +0000 (12:12 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 7 Aug 2023 08:03:43 +0000 (08:03 +0000)
C has no sequence point between function parameters, so the duration may
have been uninitialized when logging it.

Broken by 09cf741d6632f3f5a2be3eff95ce0de4c16c228e & f492f4a73172f1189c3121e87141582fec122fad

src/lib-sql/driver-pgsql.c
src/lib-sql/driver-sqlpool.c

index f16bf19f83991a317fe7be5d914b537adb8d5a55..9c293e2a58edc1cee16860452d360c37a558c414 100644 (file)
@@ -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 {
index 987082f5fd9bed120a92e833eff947cdc910a807..a2451b66ab36c241c1558935478fb87e7005b317 100644 (file)
@@ -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,