gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r16743 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r16743 - gnunet/src/mesh
Date: Fri, 9 Sep 2011 19:48:28 +0200

Author: bartpolot
Date: 2011-09-09 19:48:28 +0200 (Fri, 09 Sep 2011)
New Revision: 16743

Modified:
   gnunet/src/mesh/gnunet-service-mesh.c
Log:
Fixed broken assertions on abort

Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c       2011-09-09 17:19:52 UTC (rev 
16742)
+++ gnunet/src/mesh/gnunet-service-mesh.c       2011-09-09 17:48:28 UTC (rev 
16743)
@@ -1965,6 +1965,9 @@
     GNUNET_break_op (0);
     return;
   }
+  GNUNET_assert (NULL != t->client);
+  GNUNET_DHT_get_stop(t->client->dht_get_type);
+  t->client->dht_get_type = NULL;
   peer_info = get_peer_info (pi);
   GNUNET_CONTAINER_multihashmap_put (t->peers, &pi->hashPubKey, peer_info,
                                      
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY);
@@ -2059,12 +2062,16 @@
       GNUNET_CONTAINER_multihashmap_iterate(c->apps, &deregister_app, NULL);
       GNUNET_CONTAINER_multihashmap_destroy(c->apps);
     }
-    if (0 == GNUNET_CONTAINER_multihashmap_size(applications))
+    if (0 == GNUNET_CONTAINER_multihashmap_size(applications) &&
+        GNUNET_SCHEDULER_NO_TASK != announce_applications_task)
     {
       GNUNET_SCHEDULER_cancel (announce_applications_task);
+      announce_applications_task = GNUNET_SCHEDULER_NO_TASK;
     }
     if (NULL != c->types)
       GNUNET_CONTAINER_multihashmap_destroy(c->types);
+    if (NULL != c->dht_get_type)
+      GNUNET_DHT_get_stop(c->dht_get_type);
     GNUNET_CONTAINER_DLL_remove (clients, clients_tail, c);
     next = c->next;
     GNUNET_free (c);
@@ -2839,6 +2846,8 @@
 static void
 shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
+  struct MeshClient *c;
+
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "MESH: shutting down\n");
   if (core_handle != NULL)
   {
@@ -2847,6 +2856,9 @@
   }
   if (dht_handle != NULL)
   {
+    for (c = clients; NULL != c; c = c->next)
+      if (NULL != c->dht_get_type)
+        GNUNET_DHT_get_stop(c->dht_get_type);
     GNUNET_DHT_disconnect (dht_handle);
     dht_handle = NULL;
   }
@@ -2855,10 +2867,10 @@
     GNUNET_SERVER_notification_context_destroy (nc);
     nc = NULL;
   }
-  if (0 != announce_id_task)
+  if (GNUNET_SCHEDULER_NO_TASK != announce_id_task)
   {
     GNUNET_SCHEDULER_cancel (announce_id_task);
-    announce_id_task = 0;
+    announce_id_task = GNUNET_SCHEDULER_NO_TASK;
   }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "MESH: shut down\n");
 }




reply via email to

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