fixed set_message_id() on IKE_SA
added missing bus->message() hook invocation whitespace cleanups
This commit is contained in:
@@ -416,11 +416,11 @@ static void set_message_id(private_ike_sa_t *this, bool initiate, u_int32_t mid)
|
|||||||
{
|
{
|
||||||
if (initiate)
|
if (initiate)
|
||||||
{
|
{
|
||||||
this->task_manager->reset(this->task_manager, UINT_MAX, mid);
|
this->task_manager->reset(this->task_manager, mid, UINT_MAX);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->task_manager->reset(this->task_manager, mid, UINT_MAX);
|
this->task_manager->reset(this->task_manager, UINT_MAX, mid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+105
-102
@@ -421,39 +421,42 @@ static status_t build_request(private_task_manager_t *this)
|
|||||||
iterator = this->active_tasks->create_iterator(this->active_tasks, TRUE);
|
iterator = this->active_tasks->create_iterator(this->active_tasks, TRUE);
|
||||||
while (iterator->iterate(iterator, (void*)&task))
|
while (iterator->iterate(iterator, (void*)&task))
|
||||||
{
|
{
|
||||||
switch (task->build(task, message))
|
switch (task->build(task, message))
|
||||||
{
|
{
|
||||||
case SUCCESS:
|
case SUCCESS:
|
||||||
/* task completed, remove it */
|
/* task completed, remove it */
|
||||||
iterator->remove(iterator);
|
iterator->remove(iterator);
|
||||||
task->destroy(task);
|
task->destroy(task);
|
||||||
break;
|
break;
|
||||||
case NEED_MORE:
|
case NEED_MORE:
|
||||||
/* processed, but task needs another exchange */
|
/* processed, but task needs another exchange */
|
||||||
break;
|
break;
|
||||||
case FAILED:
|
case FAILED:
|
||||||
default:
|
default:
|
||||||
/* critical failure, destroy IKE_SA */
|
/* critical failure, destroy IKE_SA */
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
message->destroy(message);
|
message->destroy(message);
|
||||||
flush(this);
|
flush(this);
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
|
|
||||||
DESTROY_IF(this->initiating.packet);
|
DESTROY_IF(this->initiating.packet);
|
||||||
status = this->ike_sa->generate_message(this->ike_sa, message,
|
status = this->ike_sa->generate_message(this->ike_sa, message,
|
||||||
&this->initiating.packet);
|
&this->initiating.packet);
|
||||||
message->destroy(message);
|
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
{
|
{
|
||||||
/* message generation failed. There is nothing more to do than to
|
/* message generation failed. There is nothing more to do than to
|
||||||
* close the SA */
|
* close the SA */
|
||||||
|
message->destroy(message);
|
||||||
flush(this);
|
flush(this);
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
charon->bus->message(charon->bus, message, FALSE);
|
||||||
|
message->destroy(message);
|
||||||
|
|
||||||
return retransmit(this, this->initiating.mid);
|
return retransmit(this, this->initiating.mid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,26 +482,26 @@ static status_t process_response(private_task_manager_t *this,
|
|||||||
iterator = this->active_tasks->create_iterator(this->active_tasks, TRUE);
|
iterator = this->active_tasks->create_iterator(this->active_tasks, TRUE);
|
||||||
while (iterator->iterate(iterator, (void*)&task))
|
while (iterator->iterate(iterator, (void*)&task))
|
||||||
{
|
{
|
||||||
switch (task->process(task, message))
|
switch (task->process(task, message))
|
||||||
{
|
{
|
||||||
case SUCCESS:
|
case SUCCESS:
|
||||||
/* task completed, remove it */
|
/* task completed, remove it */
|
||||||
iterator->remove(iterator);
|
iterator->remove(iterator);
|
||||||
task->destroy(task);
|
task->destroy(task);
|
||||||
break;
|
break;
|
||||||
case NEED_MORE:
|
case NEED_MORE:
|
||||||
/* processed, but task needs another exchange */
|
/* processed, but task needs another exchange */
|
||||||
break;
|
break;
|
||||||
case FAILED:
|
case FAILED:
|
||||||
default:
|
default:
|
||||||
/* critical failure, destroy IKE_SA */
|
/* critical failure, destroy IKE_SA */
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
if (this->reset)
|
if (this->reset)
|
||||||
{ /* start all over again if we were reset */
|
{ /* start all over again if we were reset */
|
||||||
this->reset = FALSE;
|
this->reset = FALSE;
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
return build_request(this);
|
return build_request(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -525,34 +528,34 @@ static void handle_collisions(private_task_manager_t *this, task_t *task)
|
|||||||
if (type == IKE_REKEY || type == CHILD_REKEY ||
|
if (type == IKE_REKEY || type == CHILD_REKEY ||
|
||||||
type == CHILD_DELETE || type == IKE_DELETE || type == IKE_REAUTH)
|
type == CHILD_DELETE || type == IKE_DELETE || type == IKE_REAUTH)
|
||||||
{
|
{
|
||||||
/* find an exchange collision, and notify these tasks */
|
/* find an exchange collision, and notify these tasks */
|
||||||
iterator = this->active_tasks->create_iterator(this->active_tasks, TRUE);
|
iterator = this->active_tasks->create_iterator(this->active_tasks, TRUE);
|
||||||
while (iterator->iterate(iterator, (void**)&active))
|
while (iterator->iterate(iterator, (void**)&active))
|
||||||
{
|
{
|
||||||
switch (active->get_type(active))
|
switch (active->get_type(active))
|
||||||
{
|
{
|
||||||
case IKE_REKEY:
|
case IKE_REKEY:
|
||||||
if (type == IKE_REKEY || type == IKE_DELETE ||
|
if (type == IKE_REKEY || type == IKE_DELETE ||
|
||||||
type == IKE_REAUTH)
|
type == IKE_REAUTH)
|
||||||
{
|
{
|
||||||
ike_rekey_t *rekey = (ike_rekey_t*)active;
|
ike_rekey_t *rekey = (ike_rekey_t*)active;
|
||||||
rekey->collide(rekey, task);
|
rekey->collide(rekey, task);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
case CHILD_REKEY:
|
case CHILD_REKEY:
|
||||||
if (type == CHILD_REKEY || type == CHILD_DELETE)
|
if (type == CHILD_REKEY || type == CHILD_DELETE)
|
||||||
{
|
{
|
||||||
child_rekey_t *rekey = (child_rekey_t*)active;
|
child_rekey_t *rekey = (child_rekey_t*)active;
|
||||||
rekey->collide(rekey, task);
|
rekey->collide(rekey, task);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
}
|
}
|
||||||
@@ -586,25 +589,25 @@ static status_t build_response(private_task_manager_t *this, message_t *request)
|
|||||||
iterator = this->passive_tasks->create_iterator(this->passive_tasks, TRUE);
|
iterator = this->passive_tasks->create_iterator(this->passive_tasks, TRUE);
|
||||||
while (iterator->iterate(iterator, (void*)&task))
|
while (iterator->iterate(iterator, (void*)&task))
|
||||||
{
|
{
|
||||||
switch (task->build(task, message))
|
switch (task->build(task, message))
|
||||||
{
|
{
|
||||||
case SUCCESS:
|
case SUCCESS:
|
||||||
/* task completed, remove it */
|
/* task completed, remove it */
|
||||||
iterator->remove(iterator);
|
iterator->remove(iterator);
|
||||||
handle_collisions(this, task);
|
handle_collisions(this, task);
|
||||||
case NEED_MORE:
|
case NEED_MORE:
|
||||||
/* processed, but task needs another exchange */
|
/* processed, but task needs another exchange */
|
||||||
break;
|
break;
|
||||||
case FAILED:
|
case FAILED:
|
||||||
default:
|
default:
|
||||||
/* destroy IKE_SA, but SEND response first */
|
/* destroy IKE_SA, but SEND response first */
|
||||||
delete = TRUE;
|
delete = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (delete)
|
if (delete)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
|
|
||||||
@@ -623,7 +626,7 @@ static status_t build_response(private_task_manager_t *this, message_t *request)
|
|||||||
message->destroy(message);
|
message->destroy(message);
|
||||||
if (status != SUCCESS)
|
if (status != SUCCESS)
|
||||||
{
|
{
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
|
|
||||||
charon->sender->send(charon->sender,
|
charon->sender->send(charon->sender,
|
||||||
@@ -806,22 +809,22 @@ static status_t process_request(private_task_manager_t *this,
|
|||||||
iterator = this->passive_tasks->create_iterator(this->passive_tasks, TRUE);
|
iterator = this->passive_tasks->create_iterator(this->passive_tasks, TRUE);
|
||||||
while (iterator->iterate(iterator, (void*)&task))
|
while (iterator->iterate(iterator, (void*)&task))
|
||||||
{
|
{
|
||||||
switch (task->process(task, message))
|
switch (task->process(task, message))
|
||||||
{
|
{
|
||||||
case SUCCESS:
|
case SUCCESS:
|
||||||
/* task completed, remove it */
|
/* task completed, remove it */
|
||||||
iterator->remove(iterator);
|
iterator->remove(iterator);
|
||||||
task->destroy(task);
|
task->destroy(task);
|
||||||
break;
|
break;
|
||||||
case NEED_MORE:
|
case NEED_MORE:
|
||||||
/* processed, but task needs at least another call to build() */
|
/* processed, but task needs at least another call to build() */
|
||||||
break;
|
break;
|
||||||
case FAILED:
|
case FAILED:
|
||||||
default:
|
default:
|
||||||
/* critical failure, destroy IKE_SA */
|
/* critical failure, destroy IKE_SA */
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
iterator->destroy(iterator);
|
iterator->destroy(iterator);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user