gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r17695 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r17695 - gnunet/src/transport
Date: Sun, 23 Oct 2011 19:20:21 +0200

Author: grothoff
Date: 2011-10-23 19:20:21 +0200 (Sun, 23 Oct 2011)
New Revision: 17695

Modified:
   gnunet/src/transport/gnunet-service-transport_neighbours.c
   gnunet/src/transport/gnunet-service-transport_validation.c
Log:
also generate PONG if PING contains an empty address:


Modified: gnunet/src/transport/gnunet-service-transport_neighbours.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours.c  2011-10-23 
16:34:12 UTC (rev 17694)
+++ gnunet/src/transport/gnunet-service-transport_neighbours.c  2011-10-23 
17:20:21 UTC (rev 17695)
@@ -973,8 +973,13 @@
                               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)
   {

Modified: gnunet/src/transport/gnunet-service-transport_validation.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_validation.c  2011-10-23 
16:34:12 UTC (rev 17694)
+++ gnunet/src/transport/gnunet-service-transport_validation.c  2011-10-23 
17:20:21 UTC (rev 17695)
@@ -604,25 +604,31 @@
   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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]