? identd ? identd.8.manlint Index: identd.c =================================================================== RCS file: /cvs/src/usr.sbin/identd/identd.c,v retrieving revision 1.28 diff -u -p -r1.28 identd.c --- identd.c 27 Mar 2015 07:16:38 -0000 1.28 +++ identd.c 31 Jul 2015 23:02:09 -0000 @@ -362,10 +362,13 @@ parent_rd(int fd, short events, void *ar case EAGAIN: case EINTR: return; + case ECONNRESET: + /* fall down to case 0 */ + break; default: lerr(1, "parent read"); } - break; + /* FALLTHROUGH */ case 0: lerrx(1, "child has gone"); case sizeof(uid): @@ -511,10 +514,13 @@ child_rd(int fd, short events, void *arg case EAGAIN: case EINTR: return; + case ECONNRESET: + /* fall down to case 0 */ + break; default: lerr(1, "child read"); } - break; + /* FALLTHROUGH */ case 0: lerrx(1, "parent has gone"); default: @@ -760,11 +766,14 @@ identd_request(int fd, short events, voi case EINTR: case EAGAIN: return; + case ECONNRESET: + /* fall down to case 0 */ + break; default: lwarn("%s read", gethost(&c->client.ss)); goto fail; } - break; + /* FALLTHROUGH */ case 0: ldebug("%s closed connection", gethost(&c->client.ss)); @@ -865,10 +874,13 @@ identd_resolving(int fd, short events, v case EINTR: case EAGAIN: return; + case ECONNRESET: + /* fall down to case 0 */ + break; default: lerrx(1, "resolving read"); } - /* NOTREACHED */ + /* FALLTHROUGH */ case 0: ldebug("%s closed connection during resolving", gethost(&c->client.ss)); @@ -987,11 +999,14 @@ identd_response(int fd, short events, vo case EINTR: case EAGAIN: /* meh, try a write */ + goto write; + case ECONNRESET: + /* fall down to case 0 */ break; default: lerrx(1, "response read"); } - break; + /* FALLTHROUGH */ case 0: ldebug("%s closed connection during response", gethost(&c->client.ss)); @@ -1006,6 +1021,7 @@ identd_response(int fd, short events, vo } } +write: if (!(events & EV_WRITE)) return; /* try again later */