X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afs.c;h=3d0d2d77c4b24ac712f4ebc4d3bfff058414fb55;hp=d889ec771c9cc0d5c10860621528752faa778888;hb=f9493096f9c10a4f6431bbb0b14ffa79b05c14b1;hpb=a21f92eaa30b57eb353f88e92f39688700d04dcc diff --git a/afs.c b/afs.c index d889ec77..3d0d2d77 100644 --- a/afs.c +++ b/afs.c @@ -709,6 +709,9 @@ static void signal_pre_select(struct sched *s, struct task *t) static void signal_post_select(struct sched *s, struct task *t) { struct signal_task *st = t->private_data; + t->ret = -E_AFS_PARENT_DIED; + if (getppid() == 1) + goto err; t->ret = 1; if (!FD_ISSET(st->fd, &s->rfds)) return; @@ -719,10 +722,14 @@ static void signal_post_select(struct sched *s, struct task *t) if (st->signum == SIGHUP) { close_afs_tables(); t->ret = open_afs_tables(); + /* FIXME: Restore current mood or playlist */ + if (t->ret < 0) + goto err; return; } - PARA_NOTICE_LOG("caught signal %d\n", st->signum); t->ret = -E_AFS_SIGNAL; +err: + PARA_NOTICE_LOG("%s\n", PARA_STRERROR(-t->ret)); unregister_tasks(); }