- don't try to retrive a peer during a shutdown task
authorBart Polot <bart@net.in.tum.de>
Thu, 25 Jun 2015 03:47:36 +0000 (03:47 +0000)
committerBart Polot <bart@net.in.tum.de>
Thu, 25 Jun 2015 03:47:36 +0000 (03:47 +0000)
src/cadet/cadet_path.c

index 1118f0e22b887157398c731e2e8a3ced22e15ab0..fc9f9c453b77c632d9abaf6d12e1034bc0a912b2 100644 (file)
@@ -48,12 +48,14 @@ path_destroy_delayed (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   struct CadetPeer *peer;
 
   LOG (GNUNET_ERROR_TYPE_INFO, "Destroy delayed %p (%u)\n", path, path->length);
-  if ((GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason) != 0)
-    return;
   path->path_delete = NULL;
-  peer = GCP_get_short (path->peers[path->length - 1]);
-  if (2 < path->length)
+
+  if (2 < path->length && (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason) == 0)
+  {
+    /* During shutdown, the peers peermap might not exist anymore. */
+    peer = GCP_get_short (path->peers[path->length - 1]);
     GCP_remove_path (peer, path);
+  }
   else
     path_destroy (path);
 }