diff options
author | Ludovic Courtès <ludovic.courtes@inria.fr> | 2017-06-22 10:56:18 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-06-22 10:59:07 +0200 |
commit | 6efb578a1412bae959dd6b1755e2c333eb4e4cd8 (patch) | |
tree | 78528ca55abbbacf633731e0b93640cc462a44e6 | |
parent | 1071f781d97509347144754b3248581cf7c6c1d5 (diff) | |
download | gnu-guix-6efb578a1412bae959dd6b1755e2c333eb4e4cd8.tar gnu-guix-6efb578a1412bae959dd6b1755e2c333eb4e4cd8.tar.gz |
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.
-rw-r--r-- | nix/nix-daemon/nix-daemon.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc index 3d8e909901..b20225b3b0 100644 --- a/nix/nix-daemon/nix-daemon.cc +++ b/nix/nix-daemon/nix-daemon.cc @@ -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; |