From: Timo Sirainen Date: Fri, 1 Jul 2016 00:03:02 +0000 (+0300) Subject: lib: ostream-file now automatically corks during flush callback. X-Git-Tag: 2.3.0.rc1~3324 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=89d88a5bcf1619fc83d9680316f1333d40c9849f;p=thirdparty%2Fdovecot%2Fcore.git lib: ostream-file now automatically corks during flush callback. --- diff --git a/src/lib/ostream-file.c b/src/lib/ostream-file.c index a1c71c5a72..7fc4c27ea6 100644 --- a/src/lib/ostream-file.c +++ b/src/lib/ostream-file.c @@ -462,6 +462,7 @@ static void o_stream_grow_buffer(struct file_ostream *fstream, size_t bytes) static void stream_send_io(struct file_ostream *fstream) { struct ostream *ostream = &fstream->ostream.ostream; + bool use_cork = !fstream->ostream.corked; int ret; /* Set flush_pending = FALSE first before calling the flush callback, @@ -471,10 +472,14 @@ static void stream_send_io(struct file_ostream *fstream) fstream->flush_pending = FALSE; o_stream_ref(ostream); + if (use_cork) + o_stream_cork(ostream); if (fstream->ostream.callback != NULL) ret = fstream->ostream.callback(fstream->ostream.context); else ret = o_stream_file_flush(&fstream->ostream); + if (use_cork) + o_stream_uncork(ostream); if (ret == 0) fstream->flush_pending = TRUE;