]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict: Cork the output while writing iteration output
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 18 May 2020 17:34:27 +0000 (20:34 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 24 Jun 2020 16:19:13 +0000 (16:19 +0000)
This reduces system CPU usage by avoiding many tiny write() syscalls.

Broken by 2ff2da52146609f4459bd0f7fd603e13400cb85e

src/dict/dict-commands.c

index 003a15e57529bbd11eadc18c3a70c51ace73540c..968ff84d6df12a81ec3f848902f08f3b449d8516 100644 (file)
@@ -308,7 +308,9 @@ static void cmd_iterate_callback(void *context)
        struct dict_connection *conn = cmd->conn;
 
        dict_connection_ref(conn);
+       o_stream_cork(conn->conn.output);
        dict_connection_cmd_output_more(cmd);
+       o_stream_uncork(conn->conn.output);
        dict_connection_unref_safe(conn);
 }