From: Fredrik Tolf Date: Sun, 3 Feb 2013 02:16:55 +0000 (+0100) Subject: Merge branch 'master' of git.dolda2000.com:/srv/git/r/ashd X-Git-Tag: 0.12~7 X-Git-Url: http://www.dolda2000.com/gitweb/?p=ashd.git;a=commitdiff_plain;h=de6c0353aa0aad39c680a0b99c15fcafd6f0df24;hp=ca92a4e582bcece21332497b426f4302d4abd3d2 Merge branch 'master' of git.dolda2000.com:/srv/git/r/ashd --- diff --git a/src/htparser.c b/src/htparser.c index 8d0b515..1dbb8ee 100644 --- a/src/htparser.c +++ b/src/htparser.c @@ -405,8 +405,9 @@ static void plexwatch(struct muth *muth, va_list args) { vavar(int, fd); char *buf; - int i, ret; + int i, s, ret; + s = 0; while(1) { if(block(fd, EV_READ, 0) == 0) break; @@ -416,6 +417,7 @@ static void plexwatch(struct muth *muth, va_list args) flog(LOG_WARNING, "received error on rootplex read channel: %s", strerror(errno)); exit(1); } else if(ret == 0) { + s = 1; free(buf); break; } @@ -423,15 +425,16 @@ static void plexwatch(struct muth *muth, va_list args) * some day... */ free(buf); } - close(plex); - plex = -1; + shutdown(plex, SHUT_RDWR); for(i = 0; i < listeners.d; i++) { if(listeners.b[i] == muth) bufdel(listeners, i); } - flog(LOG_INFO, "root handler exited, so shutting down listening..."); - while(listeners.d > 0) - resume(listeners.b[0], 0); + if(s) { + flog(LOG_INFO, "root handler exited, so shutting down listening..."); + while(listeners.d > 0) + resume(listeners.b[0], 0); + } } static void initroot(void *uu)