1daemon.c: Add option for tcp no delay 2 3Allow the NFS tcp sockets to conditionally use TCP_NODELAY 4 5Upstream-Status: Submitted http://sourceforge.net/p/unfs3/bugs/5/ 6 7--- 8 daemon.c | 9 ++++++++- 9 1 file changed, 8 insertions(+), 1 deletion(-) 10 11--- a/daemon.c 12+++ b/daemon.c 13@@ -17,6 +17,7 @@ 14 #ifndef WIN32 15 #include <sys/socket.h> 16 #include <netinet/in.h> 17+#include <netinet/tcp.h> 18 #include <arpa/inet.h> 19 #include <syslog.h> 20 #else /* WIN32 */ 21@@ -75,6 +76,7 @@ unsigned int opt_mount_port = NFS_PORT; 22 int opt_singleuser = FALSE; 23 int opt_brute_force = FALSE; 24 int opt_testconfig = FALSE; 25+int opt_tcp_nodelay = FALSE; 26 struct in_addr opt_bind_addr; 27 int opt_readable_executables = FALSE; 28 char *opt_pid_file = NULL; 29@@ -208,7 +210,7 @@ static void parse_options(int argc, char 30 { 31 32 int opt = 0; 33- char *optstring = "bcC:de:hl:m:n:prstTuwi:x:y:"; 34+ char *optstring = "bcC:de:hl:m:Nn:prstTuwi:x:y:"; 35 36 while (opt != -1) { 37 opt = getopt(argc, argv, optstring); 38@@ -295,6 +297,9 @@ static void parse_options(int argc, char 39 exit(1); 40 } 41 break; 42+ case 'N': 43+ opt_tcp_nodelay = TRUE; 44+ break; 45 case 'n': 46 opt_nfs_port = strtol(optarg, NULL, 10); 47 if (opt_nfs_port == 0) { 48@@ -802,6 +807,8 @@ static SVCXPRT *create_tcp_transport(uns 49 sin.sin_addr.s_addr = opt_bind_addr.s_addr; 50 sock = socket(PF_INET, SOCK_STREAM, 0); 51 setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on)); 52+ if (opt_tcp_nodelay) 53+ setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); 54 if (bind(sock, (struct sockaddr *) &sin, sizeof(struct sockaddr))) { 55 perror("bind"); 56 fprintf(stderr, "Couldn't bind to tcp port %d\n", port); 57