]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm log errors: Fix sorting output
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 10 Aug 2023 13:46:07 +0000 (16:46 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 22 Aug 2023 06:13:20 +0000 (06:13 +0000)
The log lines from master process weren't always correctly sorted among the
log lines from config process.

Broken by 1cac11c115383a00f54642ca9d9717f443daaccc

src/doveadm/doveadm-log.c

index 6d2b54e138f306b3ae6ccc79952eeccb1e76a0cc..9e18814684e34329619615defadeb39963a9cc6a 100644 (file)
@@ -413,8 +413,12 @@ static void cmd_log_errors(struct doveadm_cmd_context *cctx)
        struct log_error error1, error2;
        i_zero(&error1);
        i_zero(&error2);
-       while (cmd_log_error_next(cctx->event, input1, &error1) ||
-              cmd_log_error_next(cctx->event, input2, &error2)) T_BEGIN {
+       for (;;) {
+               bool have1 = cmd_log_error_next(cctx->event, input1, &error1);
+               bool have2 = cmd_log_error_next(cctx->event, input2, &error2);
+               if (!have1 && !have2)
+                       break;
+
                struct log_error *error;
                if (error2.text == NULL ||
                    (error1.text != NULL &&
@@ -426,10 +430,11 @@ static void cmd_log_errors(struct doveadm_cmd_context *cctx)
                                error2.prefix = "master: ";
                        error = &error2;
                }
-               if (error->timestamp.tv_sec >= min_timestamp)
+               if (error->timestamp.tv_sec >= min_timestamp) T_BEGIN {
                        cmd_log_error_write(error);
+               } T_END;
                i_zero(error);
-       } T_END;
+       }
        i_stream_destroy(&input1);
        i_stream_destroy(&input2);
 }