instanciate new tasks only if none queued
This commit is contained in:
@@ -655,7 +655,8 @@ static status_t process_request(private_task_manager_t *this,
|
||||
notify_payload_t *notify;
|
||||
delete_payload_t *delete;
|
||||
|
||||
/* create tasks depending on request type */
|
||||
if (this->passive_tasks->get_count(this->passive_tasks) == 0)
|
||||
{ /* create tasks depending on request type, if not already some queued */
|
||||
switch (message->get_exchange_type(message))
|
||||
{
|
||||
case IKE_SA_INIT:
|
||||
@@ -693,8 +694,7 @@ static status_t process_request(private_task_manager_t *this,
|
||||
switch (payload->get_type(payload))
|
||||
{
|
||||
case NOTIFY:
|
||||
{
|
||||
/* if we find a rekey notify, its CHILD_SA rekeying */
|
||||
{ /* if we find a rekey notify, its CHILD_SA rekeying */
|
||||
notify = (notify_payload_t*)payload;
|
||||
if (notify->get_notify_type(notify) == REKEY_SA &&
|
||||
(notify->get_protocol_id(notify) == PROTO_AH ||
|
||||
@@ -706,8 +706,7 @@ static status_t process_request(private_task_manager_t *this,
|
||||
}
|
||||
case TRAFFIC_SELECTOR_INITIATOR:
|
||||
case TRAFFIC_SELECTOR_RESPONDER:
|
||||
{
|
||||
/* if we don't find a TS, its IKE rekeying */
|
||||
{ /* if we don't find a TS, its IKE rekeying */
|
||||
ts_found = TRUE;
|
||||
break;
|
||||
}
|
||||
@@ -775,7 +774,8 @@ static status_t process_request(private_task_manager_t *this,
|
||||
delete = (delete_payload_t*)payload;
|
||||
if (delete->get_protocol_id(delete) == PROTO_IKE)
|
||||
{
|
||||
task = (task_t*)ike_delete_create(this->ike_sa, FALSE);
|
||||
task = (task_t*)ike_delete_create(this->ike_sa,
|
||||
FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -811,6 +811,7 @@ static status_t process_request(private_task_manager_t *this,
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* let the tasks process the message */
|
||||
iterator = this->passive_tasks->create_iterator(this->passive_tasks, TRUE);
|
||||
|
||||
Reference in New Issue
Block a user