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:
Tobias Brunner
2012-03-20 17:31:11 +01:00
parent 4394d96844
commit 8cb6f4f979
+8 -3
View File
@@ -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;
} }
/** /**