sched: Replace sched_shutdown() by task_notify_all().
[paraslash.git] / afs.c
diff --git a/afs.c b/afs.c
index a1381e738a40cf644abeb16cf8356e7c578839a6..1f3fafacec1c757b47659c77d2bf2da1062e3cbf 100644 (file)
--- a/afs.c
+++ b/afs.c
@@ -744,7 +744,7 @@ static void afs_signal_post_select(struct sched *s, struct task *t)
        }
        PARA_EMERG_LOG("terminating on signal %d\n", signum);
 shutdown:
-       sched_shutdown(s);
+       task_notify_all(s, E_AFS_SIGNAL);
        t->error = -E_AFS_SIGNAL;
 }
 
@@ -921,10 +921,16 @@ static void command_post_select(struct sched *s, struct task *t)
        struct afs_client *client, *tmp;
        int fd, ret;
 
+       ret = task_get_notification(t);
+       if (ret < 0) {
+               t->error = ret;
+               return;
+       }
        ret = execute_server_command(&s->rfds);
        if (ret < 0) {
                PARA_EMERG_LOG("%s\n", para_strerror(-ret));
-               sched_shutdown(s);
+               task_notify_all(s, -ret);
+               t->error = ret;
                return;
        }
        /* Check the list of connected clients. */
@@ -1063,7 +1069,7 @@ int com_init(struct command_context *cc)
        }
        ret = send_callback_request(create_tables_callback, &query,
                afs_cb_result_handler, cc);
-       if (ret < 0)
+       if (ret < 0 && !cc->use_sideband)
                /* ignore return value */
                sc_send_va_buffer(&cc->scc, "%s\n", para_strerror(-ret));
        return ret;