~ruther/guix-local

6efb578a1412bae959dd6b1755e2c333eb4e4cd8 — Ludovic Courtès 8 years ago 1071f78
daemon: Set TCP_NODELAY and TCP_QUICKACK on remote sockets.

* nix/nix-daemon/nix-daemon.cc (acceptConnection): Set TCP_NODELAY and
TCP_QUICKACK on REMOTE.
1 files changed, 18 insertions(+), 0 deletions(-)

M nix/nix-daemon/nix-daemon.cc
M nix/nix-daemon/nix-daemon.cc => nix/nix-daemon/nix-daemon.cc +18 -0
@@ 19,6 19,9 @@
#include <sys/socket.h>
#include <sys/un.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/tcp.h>

#include <fcntl.h>
#include <errno.h>
#include <pwd.h>


@@ 839,6 842,21 @@ static void acceptConnection(int fdSocket)

	closeOnExec(remote);

	{
	  int enabled = 1;

	  /* If we're on a TCP connection, disable Nagle's algorithm so that
	     data is sent as soon as possible.  */
	  (void) setsockopt(remote, SOL_TCP, TCP_NODELAY,
			    &enabled, sizeof enabled);

#if defined(TCP_QUICKACK)
	  /* Enable TCP quick-ack if applicable; this might help a little.  */
	  (void) setsockopt(remote, SOL_TCP, TCP_QUICKACK,
			    &enabled, sizeof enabled);
#endif
	}

	pid_t clientPid = -1;
	bool trusted = false;