static int supervisor_post_select(struct sched *s, struct task *t)
{
struct supervisor_task *svt = task_context(t);
+ int ret = task_status(ct->task);
- if (ct->task.error < 0)
- return ct->task.error;
+ if (ret < 0)
+ return ret;
if (!svt->stdout_task_started && ct->status == CL_EXECUTING) {
stdout_task_register(&sot, s);
svt->stdout_task_started = true;
}, &sched);
ret = schedule(&sched);
- if (ret >= 0 && ct->task.error < 0) {
- switch(ct->task.error) {
- /* these are not errors */
- case -E_SERVER_CMD_SUCCESS:
- case -E_EOF:
- case -E_SERVER_EOF:
- case -E_BTR_EOF:
- ret = 0;
- break;
- default: ret = -E_SERVER_CMD_FAILURE;
+ if (ret >= 0) {
+ ret = task_status(ct->task);
+ if (ret < 0) {
+ switch (ret) {
+ /* these are not errors */
+ case -E_SERVER_CMD_SUCCESS:
+ case -E_EOF:
+ case -E_SERVER_EOF:
+ case -E_BTR_EOF:
+ ret = 0;
+ break;
+ default: ret = -E_SERVER_CMD_FAILURE;
+ }
}
}
sched_shutdown(&sched);