diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-10-23 17:20:21 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-10-23 17:20:21 +0000 |
commit | 2665611db7c4267bd765b3f9f4478629390ecc31 (patch) | |
tree | 1a57e3758b2aa4421013a08f4427cef850fc26fd /src/transport/gnunet-service-transport_validation.c | |
parent | 9817670b9465d68dd7ca7f27a40df273f0cbb16b (diff) | |
download | gnunet-2665611db7c4267bd765b3f9f4478629390ecc31.tar.gz gnunet-2665611db7c4267bd765b3f9f4478629390ecc31.zip |
also generate PONG if PING contains an empty address:
Diffstat (limited to 'src/transport/gnunet-service-transport_validation.c')
-rw-r--r-- | src/transport/gnunet-service-transport_validation.c | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c index 6b6b01768..fd9ded10e 100644 --- a/src/transport/gnunet-service-transport_validation.c +++ b/src/transport/gnunet-service-transport_validation.c | |||
@@ -604,25 +604,31 @@ GST_validation_handle_ping (const struct GNUNET_PeerIdentity *sender, | |||
604 | alen = ntohs (hdr->size) - sizeof (struct TransportPingMessage); | 604 | alen = ntohs (hdr->size) - sizeof (struct TransportPingMessage); |
605 | /* peer wants to confirm that this is one of our addresses, this is what is | 605 | /* peer wants to confirm that this is one of our addresses, this is what is |
606 | * used for address validation */ | 606 | * used for address validation */ |
607 | 607 | if (0 < alen) | |
608 | addrend = memchr (addr, '\0', alen); | ||
609 | if (NULL == addrend) | ||
610 | { | 608 | { |
611 | GNUNET_break_op (0); | 609 | addrend = memchr (addr, '\0', alen); |
612 | return; | 610 | if (NULL == addrend) |
613 | } | 611 | { |
614 | addrend++; | 612 | GNUNET_break_op (0); |
615 | slen = strlen (addr) + 1; | 613 | return; |
616 | alen -= slen; | 614 | } |
617 | 615 | addrend++; | |
618 | if (GNUNET_YES != | 616 | slen = strlen (addr) + 1; |
619 | GST_hello_test_address (addr, addrend, alen, &sig_cache, &sig_cache_exp)) | 617 | alen -= slen; |
618 | |||
619 | if (GNUNET_YES != | ||
620 | GST_hello_test_address (addr, addrend, alen, &sig_cache, &sig_cache_exp)) | ||
621 | { | ||
622 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
623 | _ | ||
624 | ("Not confirming PING with address `%s' since I cannot confirm having this address.\n"), | ||
625 | GST_plugins_a2s (addr, addrend, alen)); | ||
626 | return; | ||
627 | } | ||
628 | } | ||
629 | else | ||
620 | { | 630 | { |
621 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 631 | slen = 0; |
622 | _ | ||
623 | ("Not confirming PING with address `%s' since I cannot confirm having this address.\n"), | ||
624 | GST_plugins_a2s (addr, addrend, alen)); | ||
625 | return; | ||
626 | } | 632 | } |
627 | 633 | ||
628 | pong = GNUNET_malloc (sizeof (struct TransportPongMessage) + alen + slen); | 634 | pong = GNUNET_malloc (sizeof (struct TransportPongMessage) + alen + slen); |