diff options
author | Pierre Ossman <ossman@cendio.se> | 2011-11-08 12:10:55 +0000 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2011-11-08 12:10:55 +0000 |
commit | 64069a92ef7a29c32a854f04f0d2a2371c9e67fe (patch) | |
tree | 38ab13910074a03c0aaa3ac0710823bfde653570 | |
parent | 5c9e1e51c10a9e037f99496b0996317e29b428c3 (diff) | |
download | tigervnc-64069a92ef7a29c32a854f04f0d2a2371c9e67fe.tar.gz tigervnc-64069a92ef7a29c32a854f04f0d2a2371c9e67fe.zip |
Expose Linux' cork functionality which allows us to aggregate TCP data in a
controlled manner. Unfortunately there is no equivalent for Windows.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4781 3789f03b-4d11-0410-bbf8-ca57d06f2519
-rw-r--r-- | common/network/TcpSocket.cxx | 11 | ||||
-rw-r--r-- | common/network/TcpSocket.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/common/network/TcpSocket.cxx b/common/network/TcpSocket.cxx index 7e115881..23cc49bc 100644 --- a/common/network/TcpSocket.cxx +++ b/common/network/TcpSocket.cxx @@ -309,6 +309,17 @@ bool TcpSocket::enableNagles(int sock, bool enable) { return true; } +bool TcpSocket::cork(int sock, bool enable) { +#ifndef TCP_CORK + return false; +#else + int one = enable ? 1 : 0; + if (setsockopt(sock, IPPROTO_TCP, TCP_CORK, (char *)&one, sizeof(one)) < 0) + return false; + return true; +#endif +} + bool TcpSocket::isSocket(int sock) { struct sockaddr_in info; diff --git a/common/network/TcpSocket.h b/common/network/TcpSocket.h index f45c2eeb..b0bba53b 100644 --- a/common/network/TcpSocket.h +++ b/common/network/TcpSocket.h @@ -56,6 +56,7 @@ namespace network { virtual void shutdown(); static bool enableNagles(int sock, bool enable); + static bool cork(int sock, bool enable); static bool isSocket(int sock); static bool isConnected(int sock); static int getSockPort(int sock); |