summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dpid/dpid.c6
-rw-r--r--src/IO/dpi.c5
2 files changed, 9 insertions, 2 deletions
diff --git a/dpid/dpid.c b/dpid/dpid.c
index b5e53d7e..33c6c31c 100644
--- a/dpid/dpid.c
+++ b/dpid/dpid.c
@@ -25,6 +25,7 @@
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/socket.h>
+#include <netinet/tcp.h>
#include <unistd.h>
#include "dpid_common.h"
@@ -519,10 +520,13 @@ int fill_services_list(struct dp *attlist, int numdpis, Dlist **services_list)
*/
static int make_socket_fd()
{
- int ret;
+ int ret, one = 1;
if ((ret = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
ERRMSG("make_socket_fd", "socket", errno);
+ } else {
+ /* avoid delays when sending small pieces of data */
+ setsockopt(ret, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
}
/* set some buffering to increase the transfer's speed */
diff --git a/src/IO/dpi.c b/src/IO/dpi.c
index 931fc4a6..6f46b2ba 100644
--- a/src/IO/dpi.c
+++ b/src/IO/dpi.c
@@ -30,6 +30,7 @@
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
+#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <netdb.h>
@@ -434,9 +435,11 @@ static int Dpi_read_comm_keys(int *port)
*/
static int Dpi_make_socket_fd()
{
- int fd, ret = -1;
+ int fd, one = 1, ret = -1;
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) != -1) {
+ /* avoid delays when sending small pieces of data */
+ setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
ret = fd;
}
return ret;