Don't invoke child_updown hook twice as responder

This commit is contained in:
Martin Willi
2012-04-11 17:45:12 +02:00
parent 4ef867f578
commit 10f24e6599
+8 -3
View File
@@ -606,7 +606,7 @@ static status_t build_response(private_task_manager_t *this, message_t *request)
task_t *task; task_t *task;
message_t *message; message_t *message;
host_t *me, *other; host_t *me, *other;
bool delete = FALSE; bool delete = FALSE, hook = FALSE;
status_t status; status_t status;
me = request->get_destination(request); me = request->get_destination(request);
@@ -641,9 +641,11 @@ static status_t build_response(private_task_manager_t *this, message_t *request)
enumerator); enumerator);
} }
break; break;
case DESTROY_ME:
case FAILED: case FAILED:
default: default:
hook = TRUE;
/* FALL */
case DESTROY_ME:
/* destroy IKE_SA, but SEND response first */ /* destroy IKE_SA, but SEND response first */
delete = TRUE; delete = TRUE;
break; break;
@@ -678,7 +680,10 @@ static status_t build_response(private_task_manager_t *this, message_t *request)
this->responding.packet->clone(this->responding.packet)); this->responding.packet->clone(this->responding.packet));
if (delete) if (delete)
{ {
charon->bus->ike_updown(charon->bus, this->ike_sa, FALSE); if (hook)
{
charon->bus->ike_updown(charon->bus, this->ike_sa, FALSE);
}
return DESTROY_ME; return DESTROY_ME;
} }
return SUCCESS; return SUCCESS;