changeset 20475:591863def76d

login-proxy: cork+uncork in flush callbacks Potentially reduces latency at the end of a larger data transfer.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Fri, 01 Jul 2016 02:49:32 +0300
parents 3f63a4e80fe1
children 35fce9a2bdfd
files src/login-common/login-proxy.c
diffstat 1 files changed, 4 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/login-common/login-proxy.c	Fri Jul 01 01:11:02 2016 +0300
+++ b/src/login-common/login-proxy.c	Fri Jul 01 02:49:32 2016 +0300
@@ -197,10 +197,12 @@
 static int server_output(struct login_proxy *proxy)
 {
 	proxy->last_io = ioloop_time;
+	o_stream_cork(proxy->server_output);
 	if (o_stream_flush(proxy->server_output) < 0) {
 		login_proxy_free_ostream(&proxy, proxy->server_output, TRUE);
 		return 1;
 	}
+	o_stream_uncork(proxy->server_output);
 
 	if (proxy->client_io == NULL &&
 	    o_stream_get_buffer_used_size(proxy->server_output) <
@@ -216,10 +218,12 @@
 static int proxy_client_output(struct login_proxy *proxy)
 {
 	proxy->last_io = ioloop_time;
+	o_stream_cork(proxy->client_output);
 	if (o_stream_flush(proxy->client_output) < 0) {
 		login_proxy_free_ostream(&proxy, proxy->client_output, FALSE);
 		return 1;
 	}
+	o_stream_uncork(proxy->client_output);
 
 	if (proxy->server_io == NULL &&
 	    o_stream_get_buffer_used_size(proxy->client_output) <