#include <forb/config.h>
#include "discovery.h"
#include <stdlib.h>
+#include <netinet/tcp.h>
#include "iop.h" /* FIXME: Sending hello should be handled in IOP layer */
/**
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)
}
setnonblocking(ipeer->socket);
+ setnodelay(ipeer->socket);
struct epoll_event ev;
struct inet_port *p = peer->port->desc.proto_priv;
}
sent = 0;
- ul_logtrash("send fd=%d len=%d\n", ipeer->socket, len);
+ ul_logtrash("send fd=%d len=%zu\n", ipeer->socket, len);
do {
ret = send(ipeer->socket, buf, len, 0);
if (ret < 0) {
close(client);
return -1;
}
+ setnodelay(client);
peer = forb_peer_new();
if (peer) {
iport->last_recv_fd = -1;
continue;
}
- ul_logtrash("recv fd=%d len=%d\n", iport->last_recv_fd, ret);
+ ul_logtrash("recv fd=%d len=%zd\n", iport->last_recv_fd, ret);
return ret;
}
#else