diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-07-07 14:15:31 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-07-07 14:15:31 +0000 |
commit | 83f220addf1e5b5d6cca58307cd4b16abd87b24e (patch) | |
tree | 11a5693cef148ae6668a1208e6e290e8ab26b232 | |
parent | 5d1869cce5e4bc44276bab8aa3e8857bac0ca2b8 (diff) | |
download | gnunet-83f220addf1e5b5d6cca58307cd4b16abd87b24e.tar.gz gnunet-83f220addf1e5b5d6cca58307cd4b16abd87b24e.zip |
udp fixes
-rw-r--r-- | src/nat/nat_test.c | 64 |
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 | */ |
198 | static void | 198 | static void |
199 | do_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 | */ | ||
236 | static void | ||
199 | do_read (void *cls, | 237 | do_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, |