peers with inbound connections have to validate these immediately
authorMatthias Wachs <wachs@net.in.tum.de>
Tue, 12 Jul 2011 16:10:36 +0000 (16:10 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Tue, 12 Jul 2011 16:10:36 +0000 (16:10 +0000)
src/transport/gnunet-service-transport.c

index 5ca5590ba9956a9e263d80de5165aa7714955820..f69e06d7049b6c757855c82831ac16065627c575 100644 (file)
@@ -5355,6 +5355,19 @@ plugin_env_receive (void *cls, const struct GNUNET_PeerIdentity *peer,
          peer_address->distance = distance;
          if (GNUNET_YES == peer_address->validated)
            mark_address_connected (peer_address);
+         else
+         {
+#if DEBUG_TRANSPORT
+           GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                       "New address is unvalidated, trying to validate it now\n");
+#endif
+            if (peer_address->revalidate_task != GNUNET_SCHEDULER_NO_TASK)
+            {
+              GNUNET_SCHEDULER_cancel (peer_address->revalidate_task);
+              peer_address->revalidate_task = GNUNET_SCHEDULER_NO_TASK;
+            }
+            GNUNET_SCHEDULER_add_now (send_periodic_ping, peer_address);
+         }
          peer_address->timeout
            = GNUNET_TIME_relative_to_absolute (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT);
          schedule_next_ping (peer_address);