task_t *task;
message_t *message;
host_t *me, *other;
- bool delete = FALSE;
+ bool delete = FALSE, hook = FALSE;
status_t status;
me = request->get_destination(request);
enumerator);
}
break;
- case DESTROY_ME:
case FAILED:
default:
+ hook = TRUE;
+ /* FALL */
+ case DESTROY_ME:
/* destroy IKE_SA, but SEND response first */
delete = TRUE;
break;
this->responding.packet->clone(this->responding.packet));
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 SUCCESS;