diff options
-rw-r--r-- | dpid/dpid.c | 6 | ||||
-rw-r--r-- | src/IO/dpi.c | 5 |
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; |