fix eligibility traces
[oweals/gnunet.git] / src / ats / libgnunet_plugin_ats_mlp.c
index 939e3aa83d60b28ca50766f3f9ec44255e13f253..cdd9ac64f89185049583cdcbed452f9e5c494b80 100644 (file)
@@ -1154,16 +1154,16 @@ GAS_mlp_solve_problem (void *solver)
     }
 
   dur_setup = GNUNET_TIME_absolute_get_duration (start);
-
+  mlp->control_param_lp.presolve = GLP_YES;
   /* Run LP solver */
 
-  notify(mlp, GAS_OP_SOLVE_LP_START, GAS_STAT_SUCCESS,
+  notify(mlp, GAS_OP_SOLVE_MLP_LP_START, GAS_STAT_SUCCESS,
       (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED);
   LOG(GNUNET_ERROR_TYPE_DEBUG,
       "Running LP solver %s\n",
       (GLP_YES == mlp->control_param_lp.presolve)? "with presolver": "without presolver");
   res_lp = mlp_solve_lp_problem(mlp);
-  notify(mlp, GAS_OP_SOLVE_LP_STOP,
+  notify(mlp, GAS_OP_SOLVE_MLP_LP_STOP,
       (GNUNET_OK == res_lp) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL,
       (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED);
 
@@ -1172,10 +1172,10 @@ GAS_mlp_solve_problem (void *solver)
 
   /* Run MLP solver */
   LOG(GNUNET_ERROR_TYPE_DEBUG, "Running MLP solver \n");
-  notify(mlp, GAS_OP_SOLVE_MLP_START, GAS_STAT_SUCCESS,
+  notify(mlp, GAS_OP_SOLVE_MLP_MLP_START, GAS_STAT_SUCCESS,
       (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED);
   res_mip = mlp_solve_mlp_problem(mlp);
-  notify(mlp, GAS_OP_SOLVE_MLP_STOP,
+  notify(mlp, GAS_OP_SOLVE_MLP_MLP_STOP,
       (GNUNET_OK == res_lp) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL,
       (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED);
   notify(mlp, GAS_OP_SOLVE_STOP,
@@ -1205,11 +1205,17 @@ GAS_mlp_solve_problem (void *solver)
   mlp->ps.p_elements = mlp->p.num_elements;
 
   /* Propagate result*/
+  notify(mlp, GAS_OP_SOLVE_UPDATE_NOTIFICATION_START,
+      (GNUNET_OK == res_lp) && (GNUNET_OK == res_mip) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL,
+      GAS_INFO_NONE);
   if ((GNUNET_OK == res_lp) && (GNUNET_OK == res_mip))
     {
       GNUNET_CONTAINER_multipeermap_iterate(mlp->addresses,
           &mlp_propagate_results, mlp);
     }
+  notify(mlp, GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP,
+      (GNUNET_OK == res_lp) && (GNUNET_OK == res_mip) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL,
+      GAS_INFO_NONE);
 
   struct GNUNET_TIME_Absolute time = GNUNET_TIME_absolute_get();
   if (GNUNET_YES == mlp->write_mip_mps)
@@ -1260,6 +1266,12 @@ GAS_mlp_address_add (void *solver,
   GNUNET_assert (NULL != solver);
   GNUNET_assert (NULL != address);
 
+  if (GNUNET_ATS_NetworkTypeCount <= network)
+  {
+   GNUNET_break (0);
+   return;
+  }
+
   if (NULL == address->solver_information)
   {
       address->solver_information = GNUNET_new (struct MLP_information);
@@ -1423,6 +1435,12 @@ GAS_mlp_address_change_network (void *solver,
   GNUNET_assert (NULL != solver);
   GNUNET_assert (NULL != address);
 
+  if (GNUNET_ATS_NetworkTypeCount <= new_network)
+  {
+   GNUNET_break (0);
+   return;
+  }
+
   if (NULL == mlpi)
   {
     GNUNET_break (0);