X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afs.c;h=1f3fafacec1c757b47659c77d2bf2da1062e3cbf;hp=a1381e738a40cf644abeb16cf8356e7c578839a6;hb=5edb8fd098c2f392702a7b07bda664f1acf4b350;hpb=1745a87654ce08b57c46ce0870d8571eacbe27c9 diff --git a/afs.c b/afs.c index a1381e73..1f3fafac 100644 --- 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;