added simulation
[oweals/gnunet.git] / src / ats / libgnunet_plugin_ats_proportional.c
index a073181e55a157c404cd9adf3bcdc6424fb1d361..638a352562f9001496364c1662c315e81652044c 100644 (file)
@@ -479,7 +479,7 @@ libgnunet_plugin_ats_proportional_done (void *cls)
 
     if (s->network_entries[c].active_addresses > 0)
     {
-      LOG(GNUNET_ERROR_TYPE_ERROR,
+      LOG(GNUNET_ERROR_TYPE_DEBUG,
           "Had %u active addresses for network `%s' not deleted during shutdown\n",
           s->network_entries[c].active_addresses, s->network_entries[c].desc);
       GNUNET_break(0);
@@ -491,6 +491,7 @@ libgnunet_plugin_ats_proportional_done (void *cls)
       next = cur->next;
       GNUNET_CONTAINER_DLL_remove(s->network_entries[c].head,
           s->network_entries[c].tail, cur);
+      GNUNET_free_non_null (cur->addr->solver_information);
       GNUNET_free(cur);
     }
     GNUNET_free(s->network_entries[c].stat_total);
@@ -498,13 +499,13 @@ libgnunet_plugin_ats_proportional_done (void *cls)
   }
   if (s->total_addresses > 0)
   {
-    LOG(GNUNET_ERROR_TYPE_ERROR,
+    LOG(GNUNET_ERROR_TYPE_DEBUG,
         "Had %u addresses not deleted during shutdown\n", s->total_addresses);
     GNUNET_break(0);
   }
   if (s->active_addresses > 0)
   {
-    LOG(GNUNET_ERROR_TYPE_ERROR,
+    LOG(GNUNET_ERROR_TYPE_DEBUG,
         "Had %u active addresses not deleted during shutdown\n",
         s->active_addresses);
     GNUNET_break (0);
@@ -878,16 +879,16 @@ distribute_bandwidth_in_network (struct GAS_PROPORTIONAL_Handle *s,
     if (NULL != s->env->info_cb)
       s->env->info_cb(s->env->info_cb_cls, GAS_OP_SOLVE_STOP,
           GAS_STAT_SUCCESS, GAS_INFO_PROP_ALL);
+    if (NULL != s->env->info_cb)
+      s->env->info_cb(s->env->info_cb_cls, GAS_OP_SOLVE_UPDATE_NOTIFICATION_START,
+          GAS_STAT_SUCCESS, GAS_INFO_PROP_ALL);
     for (i = 0; i < s->network_count; i++)
     {
-      if (NULL != s->env->info_cb)
-        s->env->info_cb(s->env->info_cb_cls, GAS_OP_SOLVE_UPDATE_NOTIFICATION_START,
-            GAS_STAT_SUCCESS, GAS_INFO_PROP_ALL);
       propagate_bandwidth(s, &s->network_entries[i], address_except);
-      if (NULL != s->env->info_cb)
-        s->env->info_cb(s->env->info_cb_cls, GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP,
-            GAS_STAT_SUCCESS, GAS_INFO_PROP_ALL);
     }
+    if (NULL != s->env->info_cb)
+      s->env->info_cb(s->env->info_cb_cls, GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP,
+          GAS_STAT_SUCCESS, GAS_INFO_PROP_ALL);
   }
 }
 
@@ -1251,6 +1252,13 @@ GAS_proportional_address_delete (void *solver, struct ATS_Address *address,
    *   - update quotas
    */
   asi = address->solver_information;
+
+  if (NULL == asi)
+  {
+    GNUNET_break (0);
+    return;
+  }
+
   net = asi->network;
 
   if (GNUNET_NO == session_only)
@@ -1274,6 +1282,7 @@ GAS_proportional_address_delete (void *solver, struct ATS_Address *address,
       return;
     }
     GNUNET_CONTAINER_DLL_remove(net->head, net->tail, aw);
+    GNUNET_free_non_null (aw->addr->solver_information);
     GNUNET_free(aw);
   }
   else