aboutsummaryrefslogtreecommitdiff
path: root/src/ats/plugin_ats_mlp.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-02-06 12:18:53 +0000
committerChristian Grothoff <christian@grothoff.org>2015-02-06 12:18:53 +0000
commit0dcfafed3117b1759f1d4ab3cb5db11952e65061 (patch)
tree91ca5e6e6c86d8fe94d2e48d91de7d81ba6349ea /src/ats/plugin_ats_mlp.c
parentca0050772a26fc9251d83146ef9b05b0b56069a9 (diff)
downloadgnunet-0dcfafed3117b1759f1d4ab3cb5db11952e65061.tar.gz
gnunet-0dcfafed3117b1759f1d4ab3cb5db11952e65061.zip
-fix misc minor crashes
Diffstat (limited to 'src/ats/plugin_ats_mlp.c')
-rw-r--r--src/ats/plugin_ats_mlp.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/src/ats/plugin_ats_mlp.c b/src/ats/plugin_ats_mlp.c
index 23fbf5063..533aae506 100644
--- a/src/ats/plugin_ats_mlp.c
+++ b/src/ats/plugin_ats_mlp.c
@@ -219,11 +219,6 @@ struct GAS_MLP_Handle
219 struct GNUNET_ATS_PluginEnvironment *env; 219 struct GNUNET_ATS_PluginEnvironment *env;
220 220
221 /** 221 /**
222 * Address hashmap for lookups
223 */
224 const struct GNUNET_CONTAINER_MultiPeerMap *addresses;
225
226 /**
227 * Exclude peer from next result propagation 222 * Exclude peer from next result propagation
228 */ 223 */
229 const struct GNUNET_PeerIdentity *exclude_peer; 224 const struct GNUNET_PeerIdentity *exclude_peer;
@@ -1290,8 +1285,9 @@ mlp_create_problem (struct GAS_MLP_Handle *mlp)
1290 /* create the glpk problem */ 1285 /* create the glpk problem */
1291 p->prob = glp_create_prob (); 1286 p->prob = glp_create_prob ();
1292 GNUNET_assert (NULL != p->prob); 1287 GNUNET_assert (NULL != p->prob);
1293 p->num_peers = mlp_create_problem_count_peers (mlp->requested_peers, mlp->addresses); 1288 p->num_peers = mlp_create_problem_count_peers (mlp->requested_peers, mlp->env->addresses);
1294 p->num_addresses = mlp_create_problem_count_addresses (mlp->requested_peers, mlp->addresses); 1289 p->num_addresses = mlp_create_problem_count_addresses (mlp->requested_peers,
1290 mlp->env->addresses);
1295 1291
1296 /* Create problem matrix: 10 * #addresses + #q * #addresses + #q, + #peer + 2 + 1 */ 1292 /* Create problem matrix: 10 * #addresses + #q * #addresses + #q, + #peer + 2 + 1 */
1297 p->num_elements = (10 * p->num_addresses + mlp->pv.m_q * p->num_addresses + 1293 p->num_elements = (10 * p->num_addresses + mlp->pv.m_q * p->num_addresses +
@@ -1331,7 +1327,7 @@ mlp_create_problem (struct GAS_MLP_Handle *mlp)
1331 mlp_create_problem_add_invariant_rows (mlp, p); 1327 mlp_create_problem_add_invariant_rows (mlp, p);
1332 1328
1333 /* Adding address dependent columns constraint rows */ 1329 /* Adding address dependent columns constraint rows */
1334 GNUNET_CONTAINER_multipeermap_iterate (mlp->addresses, 1330 GNUNET_CONTAINER_multipeermap_iterate (mlp->env->addresses,
1335 &mlp_create_problem_add_address_information, 1331 &mlp_create_problem_add_address_information,
1336 mlp); 1332 mlp);
1337 1333
@@ -1618,7 +1614,7 @@ GAS_mlp_solve_problem (void *solver)
1618 notify(mlp, GAS_OP_SOLVE_STOP, GAS_STAT_SUCCESS, GAS_INFO_NONE); 1614 notify(mlp, GAS_OP_SOLVE_STOP, GAS_STAT_SUCCESS, GAS_INFO_NONE);
1619 return GNUNET_OK; /* No pending requests */ 1615 return GNUNET_OK; /* No pending requests */
1620 } 1616 }
1621 if (0 == GNUNET_CONTAINER_multipeermap_size(mlp->addresses)) 1617 if (0 == GNUNET_CONTAINER_multipeermap_size(mlp->env->addresses))
1622 { 1618 {
1623 notify(mlp, GAS_OP_SOLVE_STOP, GAS_STAT_SUCCESS, GAS_INFO_NONE); 1619 notify(mlp, GAS_OP_SOLVE_STOP, GAS_STAT_SUCCESS, GAS_INFO_NONE);
1624 return GNUNET_OK; /* No addresses available */ 1620 return GNUNET_OK; /* No addresses available */
@@ -1831,7 +1827,7 @@ GAS_mlp_solve_problem (void *solver)
1831 GAS_INFO_NONE); 1827 GAS_INFO_NONE);
1832 if ((GNUNET_OK == res_lp) && (GNUNET_OK == mip_res)) 1828 if ((GNUNET_OK == res_lp) && (GNUNET_OK == mip_res))
1833 { 1829 {
1834 GNUNET_CONTAINER_multipeermap_iterate(mlp->addresses, 1830 GNUNET_CONTAINER_multipeermap_iterate(mlp->env->addresses,
1835 &mlp_propagate_results, mlp); 1831 &mlp_propagate_results, mlp);
1836 } 1832 }
1837 notify (mlp, GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP, 1833 notify (mlp, GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP,
@@ -2133,7 +2129,7 @@ GAS_mlp_get_preferred_address (void *solver,
2133 mlp->stat_mlp_prob_changed = GNUNET_YES; 2129 mlp->stat_mlp_prob_changed = GNUNET_YES;
2134 2130
2135 if ((GNUNET_YES == mlp->opt_mlp_auto_solve)&& 2131 if ((GNUNET_YES == mlp->opt_mlp_auto_solve)&&
2136 (GNUNET_YES == GNUNET_CONTAINER_multipeermap_contains(mlp->addresses, 2132 (GNUNET_YES == GNUNET_CONTAINER_multipeermap_contains(mlp->env->addresses,
2137 peer))) 2133 peer)))
2138 { 2134 {
2139 mlp->exclude_peer = peer; 2135 mlp->exclude_peer = peer;
@@ -2143,7 +2139,7 @@ GAS_mlp_get_preferred_address (void *solver,
2143 } 2139 }
2144 /* Get prefered address */ 2140 /* Get prefered address */
2145 res = NULL; 2141 res = NULL;
2146 GNUNET_CONTAINER_multipeermap_get_multiple (mlp->addresses, peer, 2142 GNUNET_CONTAINER_multipeermap_get_multiple (mlp->env->addresses, peer,
2147 &mlp_get_preferred_address_it, &res); 2143 &mlp_get_preferred_address_it, &res);
2148 return res; 2144 return res;
2149} 2145}
@@ -2430,12 +2426,6 @@ libgnunet_plugin_ats_mlp_init (void *cls)
2430 struct GNUNET_TIME_Relative max_duration; 2426 struct GNUNET_TIME_Relative max_duration;
2431 long long unsigned int max_iterations; 2427 long long unsigned int max_iterations;
2432 2428
2433 GNUNET_assert (NULL != env->cfg);
2434 GNUNET_assert (NULL != env->addresses);
2435 GNUNET_assert (NULL != env->bandwidth_changed_cb);
2436 GNUNET_assert (NULL != env->get_preferences);
2437 GNUNET_assert (NULL != env->get_property);
2438
2439 /* Init GLPK environment */ 2429 /* Init GLPK environment */
2440 int res = glp_init_env(); 2430 int res = glp_init_env();
2441 switch (res) { 2431 switch (res) {