From 6e17bebdb363bc2aeb3e0501432cb693fbd1816c Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Wed, 17 Jun 2009 19:22:17 +0200 Subject: [PATCH] Added optional TCP_NODELAY to INET proto This is to have graphs in benchmarks not influenced by Nagle's algorithm in TCP. --- src/proto_inet.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/proto_inet.c b/src/proto_inet.c index a5b616f..b960f01 100644 --- a/src/proto_inet.c +++ b/src/proto_inet.c @@ -61,6 +61,7 @@ #include #include "discovery.h" #include +#include #include "iop.h" /* FIXME: Sending hello should be handled in IOP layer */ /** @@ -147,7 +148,23 @@ inet_deserialize_addr(FORB_CDR_Codec *codec, void **addr) return ret; } -int setnonblocking(int fd); +static int +setnonblocking(int fd); + +static int +setnodelay(int fd) +{ + int ret = 0; +#if 0 /* For nice graphs in benchmarks */ + int yes = 1; + ret = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &yes, sizeof(yes)); + if (ret < 0) { + ul_logerr("setsockopt(TCP_NODELAY): %s\n", strerror(errno)); + } +#endif + return ret; + +} static int inet_connect(forb_peer_t *peer) @@ -180,6 +197,7 @@ inet_connect(forb_peer_t *peer) } setnonblocking(ipeer->socket); + setnodelay(ipeer->socket); struct epoll_event ev; struct inet_port *p = peer->port->desc.proto_priv; @@ -288,6 +306,7 @@ inet_accept_connection(forb_port_t *port) close(client); return -1; } + setnodelay(client); peer = forb_peer_new(); if (peer) { -- 2.39.2