fixing 1622
authorChristian Grothoff <christian@grothoff.org>
Fri, 19 Nov 2010 12:31:15 +0000 (12:31 +0000)
committerChristian Grothoff <christian@grothoff.org>
Fri, 19 Nov 2010 12:31:15 +0000 (12:31 +0000)
src/arm/arm_api.c
src/core/core_api.c

index f935c590f21b17f68ecdd45a298b1e3bc16c214d..cd089c621a33e4fa61518f02c4885c092c2f6cb9 100644 (file)
@@ -467,6 +467,7 @@ arm_service_report (void *cls,
     }
   if (pos->callback != NULL)
     pos->callback (pos->cls, GNUNET_YES);
+  GNUNET_free (proc);
   GNUNET_free (pos);
 }
 
index 28cec6724be2220b1c299a5d2f2e8cc908523422..802ba56d4b7cea235213bf0224cf78de298bac45 100644 (file)
@@ -464,6 +464,14 @@ reconnect_later (struct GNUNET_CORE_Handle *h)
 {
   struct ControlMessage *cm;
 
+  while (NULL != (cm = h->pending_head))
+    {
+      GNUNET_CONTAINER_DLL_remove (h->pending_head,
+                                  h->pending_tail,
+                                  cm);      
+      cm->cont (cm->cont_cls, NULL);
+      GNUNET_free (cm);
+    }
   if (h->client != NULL)
     {
       GNUNET_CLIENT_disconnect (h->client, GNUNET_NO);
@@ -472,15 +480,8 @@ reconnect_later (struct GNUNET_CORE_Handle *h)
                                             &disconnect_and_free_peer_entry,
                                             h);
     }
+  GNUNET_assert (h->pending_head == NULL);
   h->currently_down = GNUNET_YES;
-  while (NULL != (cm = h->pending_head))
-    {
-      GNUNET_CONTAINER_DLL_remove (h->pending_head,
-                                  h->pending_tail,
-                                  cm);      
-      cm->cont (cm->cont_cls, NULL);
-      GNUNET_free (cm);
-    }
   GNUNET_assert (h->reconnect_task == GNUNET_SCHEDULER_NO_TASK);
   h->retry_backoff = GNUNET_TIME_relative_min (GNUNET_TIME_UNIT_SECONDS,
                                               h->retry_backoff);