From 2555a2232b5cc65e78743b5fdd3ece22d88792db Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B8rnar=20Ness?= Date: Tue, 17 Apr 2018 16:04:02 +0200 Subject: [PATCH] doveadm: fix who/kick out of order response doveadm-who and kick did not properly flush protocol output after doveadm_print(), this caused out-of-order response to clients, example: C: who S: + S: username[...] correct response should have been S: [...] S: + fixed by adding doveadm_print_flush() calls. --- src/doveadm/doveadm-kick.c | 3 +++ src/doveadm/doveadm-who.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/doveadm/doveadm-kick.c b/src/doveadm/doveadm-kick.c index 6db1bf77cc..a0b06f38af 100644 --- a/src/doveadm/doveadm-kick.c +++ b/src/doveadm/doveadm-kick.c @@ -126,6 +126,9 @@ kick_print_kicked(struct kick_context *ctx, const bool show_warning) if (strcmp(users[i-1], users[i]) != 0) doveadm_print(users[i]); } + + doveadm_print_flush(); + if (cli) printf("\n"); diff --git a/src/doveadm/doveadm-who.c b/src/doveadm/doveadm-who.c index ef62d2b6d4..3b9034d3f1 100644 --- a/src/doveadm/doveadm-who.c +++ b/src/doveadm/doveadm-who.c @@ -256,6 +256,8 @@ static void who_print_user(const struct who_user *user) str_truncate(str, str_len(str)-1); str_append_c(str, ')'); doveadm_print(str_c(str)); + + doveadm_print_flush(); } static void who_print(struct who_context *ctx) -- 2.47.3