From 2665611db7c4267bd765b3f9f4478629390ecc31 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 23 Oct 2011 17:20:21 +0000 Subject: [PATCH] also generate PONG if PING contains an empty address: --- .../gnunet-service-transport_neighbours.c | 9 ++++- .../gnunet-service-transport_validation.c | 40 +++++++++++-------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c index bd86fcdbd..802a2cf32 100644 --- a/src/transport/gnunet-service-transport_neighbours.c +++ b/src/transport/gnunet-service-transport_neighbours.c @@ -973,8 +973,13 @@ GST_neighbours_calculate_receive_delay (const struct GNUNET_PeerIdentity gettext_noop ("# messages discarded due to lack of neighbour record"), 1, GNUNET_NO); - *do_forward = GNUNET_NO; - return GNUNET_TIME_UNIT_ZERO; + GST_neighbours_try_connect (sender); + n = lookup_neighbour (sender); + if (NULL == n) + { + *do_forward = GNUNET_NO; + return GNUNET_TIME_UNIT_ZERO; + } } if (GNUNET_YES != n->is_connected) { 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, alen = ntohs (hdr->size) - sizeof (struct TransportPingMessage); /* peer wants to confirm that this is one of our addresses, this is what is * used for address validation */ - - addrend = memchr (addr, '\0', alen); - if (NULL == addrend) + if (0 < alen) { - GNUNET_break_op (0); - return; - } - addrend++; - slen = strlen (addr) + 1; - alen -= slen; - - if (GNUNET_YES != - GST_hello_test_address (addr, addrend, alen, &sig_cache, &sig_cache_exp)) + addrend = memchr (addr, '\0', alen); + if (NULL == addrend) + { + GNUNET_break_op (0); + return; + } + addrend++; + slen = strlen (addr) + 1; + alen -= slen; + + if (GNUNET_YES != + GST_hello_test_address (addr, addrend, alen, &sig_cache, &sig_cache_exp)) + { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + _ + ("Not confirming PING with address `%s' since I cannot confirm having this address.\n"), + GST_plugins_a2s (addr, addrend, alen)); + return; + } + } + else { - GNUNET_log (GNUNET_ERROR_TYPE_INFO, - _ - ("Not confirming PING with address `%s' since I cannot confirm having this address.\n"), - GST_plugins_a2s (addr, addrend, alen)); - return; + slen = 0; } pong = GNUNET_malloc (sizeof (struct TransportPongMessage) + alen + slen); -- 2.25.1