aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-07-07 14:15:31 +0000
committerChristian Grothoff <christian@grothoff.org>2011-07-07 14:15:31 +0000
commit83f220addf1e5b5d6cca58307cd4b16abd87b24e (patch)
tree11a5693cef148ae6668a1208e6e290e8ab26b232
parent5d1869cce5e4bc44276bab8aa3e8857bac0ca2b8 (diff)
downloadgnunet-83f220addf1e5b5d6cca58307cd4b16abd87b24e.tar.gz
gnunet-83f220addf1e5b5d6cca58307cd4b16abd87b24e.zip
udp fixes
-rw-r--r--src/nat/nat_test.c64
1 files changed, 57 insertions, 7 deletions
diff --git a/src/nat/nat_test.c b/src/nat/nat_test.c
index 9b07b48f9..a758cbce6 100644
--- a/src/nat/nat_test.c
+++ b/src/nat/nat_test.c
@@ -196,6 +196,44 @@ reversal_cb (void *cls,
196 * @param tc scheduler context 196 * @param tc scheduler context
197 */ 197 */
198static void 198static void
199do_udp_read (void *cls,
200 const struct GNUNET_SCHEDULER_TaskContext *tc)
201{
202 struct GNUNET_NAT_Test *tst = cls;
203 uint16_t data;
204
205 tst->ltask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
206 tst->lsock,
207 &do_udp_read,
208 tst);
209 if ( (NULL != tc->write_ready) &&
210 (GNUNET_NETWORK_fdset_isset (tc->read_ready,
211 tst->lsock)) &&
212 (sizeof (data) ==
213 GNUNET_NETWORK_socket_recv (tst->lsock,
214 &data,
215 sizeof (data))) )
216 {
217 if (data == tst->data)
218 tst->report (tst->report_cls, GNUNET_OK);
219 else
220 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
221 "Received data mismatches expected value\n");
222 }
223 else
224 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
225 "Failed to receive data from inbound connection\n");
226}
227
228
229/**
230 * Activity on our incoming socket. Read data from the
231 * incoming connection.
232 *
233 * @param cls the 'struct NatActivity'
234 * @param tc scheduler context
235 */
236static void
199do_read (void *cls, 237do_read (void *cls,
200 const struct GNUNET_SCHEDULER_TaskContext *tc) 238 const struct GNUNET_SCHEDULER_TaskContext *tc)
201{ 239{
@@ -375,7 +413,9 @@ GNUNET_NAT_test_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
375 else 413 else
376 { 414 {
377 ret->lsock = GNUNET_NETWORK_socket_create (AF_INET, 415 ret->lsock = GNUNET_NETWORK_socket_create (AF_INET,
378 (is_tcp==GNUNET_YES) ? SOCK_STREAM : SOCK_DGRAM, 0); 416 (is_tcp==GNUNET_YES)
417 ? SOCK_STREAM
418 : SOCK_DGRAM, 0);
379 if ( (ret->lsock == NULL) || 419 if ( (ret->lsock == NULL) ||
380 (GNUNET_OK != GNUNET_NETWORK_socket_bind (ret->lsock, 420 (GNUNET_OK != GNUNET_NETWORK_socket_bind (ret->lsock,
381 (const struct sockaddr*) &sa, 421 (const struct sockaddr*) &sa,
@@ -388,12 +428,22 @@ GNUNET_NAT_test_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
388 GNUNET_free (ret); 428 GNUNET_free (ret);
389 return NULL; 429 return NULL;
390 } 430 }
391 GNUNET_break (GNUNET_OK == 431 if (GNUNET_YES == is_tcp)
392 GNUNET_NETWORK_socket_listen (ret->lsock, 5)); 432 {
393 ret->ltask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, 433 GNUNET_break (GNUNET_OK ==
394 ret->lsock, 434 GNUNET_NETWORK_socket_listen (ret->lsock, 5));
395 &do_accept, 435 ret->ltask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
396 ret); 436 ret->lsock,
437 &do_accept,
438 ret);
439 }
440 else
441 {
442 ret->ltask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
443 ret->lsock,
444 &do_udp_read,
445 ret);
446 }
397 ret->nat = GNUNET_NAT_register (cfg, is_tcp, 447 ret->nat = GNUNET_NAT_register (cfg, is_tcp,
398 adv_port, 448 adv_port,
399 1, addrs, addrlens, 449 1, addrs, addrlens,