From bc403eb1e5e26d93aad6a29ba001cd439ce58784 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Tue, 13 Mar 2012 10:55:58 +0100 Subject: Fixed crash and locking issues while unrouting connections via stroke --- src/libcharon/plugins/stroke/stroke_control.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/libcharon/plugins/stroke/stroke_control.c b/src/libcharon/plugins/stroke/stroke_control.c index f0d8f3b74..729e9d757 100644 --- a/src/libcharon/plugins/stroke/stroke_control.c +++ b/src/libcharon/plugins/stroke/stroke_control.c @@ -633,8 +633,7 @@ METHOD(stroke_control_t, unroute, void, { child_sa_t *child_sa; enumerator_t *enumerator; - u_int32_t id; - bool found = FALSE; + u_int32_t id = 0; if (charon->shunts->uninstall(charon->shunts, msg->unroute.name)) { @@ -648,15 +647,17 @@ METHOD(stroke_control_t, unroute, void, if (streq(msg->unroute.name, child_sa->get_name(child_sa))) { id = child_sa->get_reqid(child_sa); - enumerator->destroy(enumerator); - charon->traps->uninstall(charon->traps, id); - fprintf(out, "configuration '%s' unrouted\n", msg->unroute.name); - found = TRUE; + break; } } enumerator->destroy(enumerator); - if (!found) + if (id) + { + charon->traps->uninstall(charon->traps, id); + fprintf(out, "configuration '%s' unrouted\n", msg->unroute.name); + } + else { fprintf(out, "configuration '%s' not found\n", msg->unroute.name); } -- cgit v1.2.3