gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r19987 - gnunet/src/nse


From: gnunet
Subject: [GNUnet-SVN] r19987 - gnunet/src/nse
Date: Thu, 23 Feb 2012 18:46:57 +0100

Author: bartpolot
Date: 2012-02-23 18:46:57 +0100 (Thu, 23 Feb 2012)
New Revision: 19987

Modified:
   gnunet/src/nse/gnunet-nse-profiler.c
Log:
- Cancel tasks when freeing memory

Modified: gnunet/src/nse/gnunet-nse-profiler.c
===================================================================
--- gnunet/src/nse/gnunet-nse-profiler.c        2012-02-23 17:44:19 UTC (rev 
19986)
+++ gnunet/src/nse/gnunet-nse-profiler.c        2012-02-23 17:46:57 UTC (rev 
19987)
@@ -217,6 +217,12 @@
     if (pos->nse_handle != NULL)
       GNUNET_NSE_disconnect (pos->nse_handle);
     GNUNET_CONTAINER_DLL_remove (peer_head, peer_tail, pos);
+    if (GNUNET_SCHEDULER_NO_TASK != pos->stats_task)
+    {
+      GNUNET_SCHEDULER_cancel (pos->stats_task);
+      if (NULL != pos->stats)
+        GNUNET_STATISTICS_destroy(pos->stats, GNUNET_NO);
+    }
     GNUNET_free (pos);
   }
 
@@ -313,12 +319,12 @@
 core_get_stats (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct NSEPeer *peer = cls;
-  
-  peer->stats_task = GNUNET_SCHEDULER_NO_TASK;
+
   if ((tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0)
   {
     GNUNET_STATISTICS_destroy(peer->stats, GNUNET_NO);
     peer->stats = NULL;
+    return;
   }
   else
   {
@@ -332,6 +338,7 @@
                           GNUNET_TIME_UNIT_FOREVER_REL,
                           NULL, &core_stats_iterator, peer);
   }
+  peer->stats_task = GNUNET_SCHEDULER_NO_TASK;
 }
 
 /**




reply via email to

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