[dovecot-cvs] dovecot/src/login-common ssl-proxy-openssl.c, 1.27,
1.28
cras at dovecot.org
cras at dovecot.org
Sun Sep 18 17:43:12 EEST 2005
Update of /var/lib/cvs/dovecot/src/login-common
In directory talvi:/tmp/cvs-serv1933
Modified Files:
ssl-proxy-openssl.c
Log Message:
Cork/uncork the SSL socket when writing. Reduces latency a lot.
Index: ssl-proxy-openssl.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/login-common/ssl-proxy-openssl.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- ssl-proxy-openssl.c 1 Oct 2004 14:41:16 -0000 1.27
+++ ssl-proxy-openssl.c 18 Sep 2005 14:43:10 -0000 1.28
@@ -105,6 +105,7 @@
{
struct ssl_proxy *proxy = context;
ssize_t ret;
+ int corked = FALSE;
if (proxy->sslout_size == sizeof(proxy->sslout_buf)) {
/* buffer full, block input until it's written */
@@ -126,10 +127,17 @@
break;
} else {
proxy->sslout_size += ret;
+ if (!corked) {
+ net_set_cork(proxy->fd_ssl, TRUE);
+ corked = TRUE;
+ }
ssl_write(proxy);
}
}
+ if (corked)
+ net_set_cork(proxy->fd_ssl, FALSE);
+
ssl_proxy_unref(proxy);
}
@@ -304,8 +312,11 @@
if (proxy->sslout_size == 0)
ssl_set_io(proxy, SSL_REMOVE_OUTPUT);
- else
+ else {
+ net_set_cork(proxy->fd_ssl, TRUE);
ssl_write(proxy);
+ net_set_cork(proxy->fd_ssl, FALSE);
+ }
}
ssl_proxy_unref(proxy);
More information about the dovecot-cvs
mailing list