File disable_nagle_on_tcp_socket.diff of Package xorg-x11-libxcb
--- src/xcb_util.c.orig 2007-10-23 18:44:59.000000000 +0200
+++ src/xcb_util.c 2009-06-06 17:19:34.954937314 +0200
@@ -30,6 +30,7 @@
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
+#include <netinet/tcp.h>
#ifdef DNETCONN
#include <netdnet/dnetdb.h>
#include <netdnet/dn.h>
@@ -233,9 +234,24 @@
for(addr = results; addr; addr = addr->ai_next)
{
fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
- if(fd >= 0 && connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
- break;
- fd = -1;
+ /*
+ X11 remote rendering is unusabe slow, because nagel is on
+
+ For more info check:
+ https://bugs.freedesktop.org/show_bug.cgi?id=17868
+ http://cgit.freedesktop.org/xcb/libxcb/commit/?id=ee89850e68205a7f8961ace0839b5be86040dade
+
+ */
+ if(fd >= 0) {
+ int on = 1;
+ setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
+
+ if (connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
+ break;
+ close(fd);
+ fd = -1;
+ }
+
}
freeaddrinfo(results);
return fd;