*** syslogd.c.1.59.2.28 Wed Jan 26 18:30:28 2005 --- syslogd.c Wed Jan 26 18:51:21 2005 *************** *** 103,108 **** --- 103,109 ---- #include #include #include + #include #include #include #include *************** *** 1153,1158 **** --- 1154,1167 ---- } if (writev(f->f_file, iov, 7) < 0) { int e = errno; + if (e == EWOULDBLOCK) { + /* Pipe may just be full, so give logging + * subprocess a chance to empty the pipe + * before assuming that the subprocess hung */ + sched_yield(); + if (writev(f->f_file, iov, 7) >= 0) + break; + } (void)close(f->f_file); if (f->f_un.f_pipe.f_pid > 0) deadq_enter(f->f_un.f_pipe.f_pid,