chiark / gitweb /
do ignore sigpipe; move inndcommfail
authorIan Jackson <ian@liberator.(none)>
Wed, 7 Apr 2010 20:10:34 +0000 (21:10 +0100)
committerIan Jackson <ian@liberator.(none)>
Wed, 7 Apr 2010 20:10:34 +0000 (21:10 +0100)
backends/innduct.c

index 33adaf8..c83a02c 100644 (file)
@@ -1542,11 +1542,6 @@ static void *statemc_check_oldinput_done(oop_source *lp,
 
 static pid_t inndcomm_child;
 
-static void inndcommfail(const char *what) {
-  syswarn("error communicating with innd: %s failed: %s", what, ICCfailure);
-  exit(INNDCOMMCHILD_ESTATUS_FAIL);
-}
-
 static void *inndcomm_event(oop_source *lp, int fd, oop_event e, void *u) {
   assert(inndcomm_child);
   int status= xwaitpid(&inndcomm_child, "inndcomm");
@@ -1593,6 +1588,11 @@ static void *inndcomm_event(oop_source *lp, int fd, oop_event e, void *u) {
   sms= sm_FLUSHFAIL;;
 }
 
+static void inndcommfail(const char *what) {
+  syswarn("error communicating with innd: %s failed: %s", what, ICCfailure);
+  exit(INNDCOMMCHILD_ESTATUS_FAIL);
+}
+
 void spawn_inndcomm_flush(void) {
   int pipefds[2];
 
@@ -1680,7 +1680,8 @@ EVERY(period, {PERIOD_SECONDS,0}, {
 });
 
 main {
-  ignore sigpipe;
+  if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
+    sysdie("could not ignore SIGPIPE");
   if (!filemon_init())
     filepoll_schedule();
   period_schedule();