1183. [bug] Handle ENOSR error when writing to the internal

control pipe. [RT #2395]
This commit is contained in:
Mark Andrews 2002-01-22 02:38:34 +00:00
parent 8569ab045a
commit 852fa3b2e3
2 changed files with 14 additions and 1 deletions

View file

@ -1,3 +1,6 @@
1183. [bug] Handle ENOSR error when writing to the internal
control pipe. [RT #2395]
1182. [bug] The server could throw an assertion failure when
constructing a negative response packet.

View file

@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: socket.c,v 1.219 2001/12/19 05:51:34 marka Exp $ */
/* $Id: socket.c,v 1.220 2002/01/22 02:38:34 marka Exp $ */
#include <config.h>
@ -378,6 +378,16 @@ select_poke(isc_socketmgr_t *mgr, int fd, int msg) {
do {
cc = write(mgr->pipe_fds[1], buf, sizeof(buf));
#ifdef ENOSR
/*
* Treat ENOSR as EAGAIN but loop slowly as it is
* unlikely to clear fast.
*/
if (cc < 0 && errno == ENOSR) {
sleep(1);
errno = EAGAIN;
}
#endif
} while (cc < 0 && SOFT_ERROR(errno));
if (cc < 0) {