Don't stop processing tasks if one returns SUCCESS.
Only send a response if at least one of the tasks requires it.
This commit is contained in:
@@ -488,6 +488,7 @@ static status_t process_request(private_task_manager_t *this,
|
|||||||
{
|
{
|
||||||
enumerator_t *enumerator;
|
enumerator_t *enumerator;
|
||||||
task_t *task = NULL;
|
task_t *task = NULL;
|
||||||
|
bool send_response = FALSE;
|
||||||
|
|
||||||
if (this->passive_tasks->get_count(this->passive_tasks) == 0)
|
if (this->passive_tasks->get_count(this->passive_tasks) == 0)
|
||||||
{ /* create tasks depending on request type, if not already some queued */
|
{ /* create tasks depending on request type, if not already some queued */
|
||||||
@@ -530,10 +531,10 @@ static status_t process_request(private_task_manager_t *this,
|
|||||||
/* task completed, remove it */
|
/* task completed, remove it */
|
||||||
this->passive_tasks->remove_at(this->passive_tasks, enumerator);
|
this->passive_tasks->remove_at(this->passive_tasks, enumerator);
|
||||||
task->destroy(task);
|
task->destroy(task);
|
||||||
enumerator->destroy(enumerator);
|
break;
|
||||||
return SUCCESS;
|
|
||||||
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() */
|
||||||
|
send_response = TRUE;
|
||||||
break;
|
break;
|
||||||
case FAILED:
|
case FAILED:
|
||||||
default:
|
default:
|
||||||
@@ -549,7 +550,11 @@ static status_t process_request(private_task_manager_t *this,
|
|||||||
}
|
}
|
||||||
enumerator->destroy(enumerator);
|
enumerator->destroy(enumerator);
|
||||||
|
|
||||||
return build_response(this, message);
|
if (send_response)
|
||||||
|
{
|
||||||
|
return build_response(this, message);
|
||||||
|
}
|
||||||
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user