diff options
author | Christian Grothoff <christian@grothoff.org> | 2009-10-17 21:20:13 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2009-10-17 21:20:13 +0000 |
commit | e23e73bc2790e1185957157bc04675ba94ea9032 (patch) | |
tree | 75aeccdd531fff75816480741eacb02dc2371afb /src/util/network.c | |
parent | 2936a30e0ae70b8d1a984914f93113716a8bc620 (diff) | |
download | gnunet-e23e73bc2790e1185957157bc04675ba94ea9032.tar.gz gnunet-e23e73bc2790e1185957157bc04675ba94ea9032.zip |
use nodelay for a MAJOR performance boost for GNUnet code
Diffstat (limited to 'src/util/network.c')
-rw-r--r-- | src/util/network.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/util/network.c b/src/util/network.c index 5ba849138..07364a36b 100644 --- a/src/util/network.c +++ b/src/util/network.c | |||
@@ -125,6 +125,23 @@ socket_set_inheritable (const struct GNUNET_NETWORK_Handle | |||
125 | 125 | ||
126 | 126 | ||
127 | /** | 127 | /** |
128 | * Disable delays when sending data via the socket. | ||
129 | * (GNUnet makes sure that messages are as big as | ||
130 | * possible already). | ||
131 | * | ||
132 | * @param h the socket to make non-delaying | ||
133 | */ | ||
134 | static void | ||
135 | socket_set_nodelay (const struct GNUNET_NETWORK_Handle | ||
136 | *h) | ||
137 | { | ||
138 | int value = 1; | ||
139 | setsockopt (h->fd, IPPROTO_TCP, TCP_NODELAY, &value, sizeof(value)); | ||
140 | } | ||
141 | |||
142 | |||
143 | |||
144 | /** | ||
128 | * accept a new connection on a socket | 145 | * accept a new connection on a socket |
129 | * | 146 | * |
130 | * @param desc bound socket | 147 | * @param desc bound socket |
@@ -170,6 +187,7 @@ GNUNET_NETWORK_socket_accept (const struct GNUNET_NETWORK_Handle *desc, | |||
170 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 187 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
171 | "socket_set_inheritable"); | 188 | "socket_set_inheritable"); |
172 | #endif | 189 | #endif |
190 | socket_set_nodelay (ret); | ||
173 | return ret; | 191 | return ret; |
174 | } | 192 | } |
175 | 193 | ||
@@ -476,6 +494,8 @@ GNUNET_NETWORK_socket_create (int domain, int type, int protocol) | |||
476 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 494 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
477 | "socket_set_inheritable"); | 495 | "socket_set_inheritable"); |
478 | #endif | 496 | #endif |
497 | if (type == SOCK_STREAM) | ||
498 | socket_set_nodelay (ret); | ||
479 | 499 | ||
480 | return ret; | 500 | return ret; |
481 | } | 501 | } |