2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-29 13:38:26 +00:00

2846. [bug] EOF on unix domain sockets was not being handled

correctly. [RT #20731]
This commit is contained in:
Mark Andrews 2010-01-31 23:18:03 +00:00
parent 834a31a021
commit ebaf977ecf
2 changed files with 19 additions and 6 deletions

View File

@ -1,3 +1,6 @@
2846. [bug] EOF on unix domain sockets was not being handled
correctly. [RT #20731]
2845. [bug] RFC 5011 client could crash on shutdown. [RT #20903]
2844. [doc] notify-delay default in ARM was wrong. It should have

View File

@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: socket.c,v 1.326 2009/11/13 00:41:58 each Exp $ */
/* $Id: socket.c,v 1.327 2010/01/31 23:18:03 marka Exp $ */
/*! \file */
@ -1674,12 +1674,22 @@ doio_recv(isc__socket_t *sock, isc_socketevent_t *dev) {
}
/*
* On TCP, zero length reads indicate EOF, while on
* UDP, zero length reads are perfectly valid, although
* strange.
* On TCP and UNIX sockets, zero length reads indicate EOF,
* while on UDP sockets, zero length reads are perfectly valid,
* although strange.
*/
if ((sock->type == isc_sockettype_tcp) && (cc == 0))
return (DOIO_EOF);
switch (sock->type) {
case isc_sockettype_tcp:
case isc_sockettype_unix:
if (cc == 0)
return (DOIO_EOF);
break;
case isc_sockettype_udp:
break;
case isc_sockettype_fdwatch:
default:
INSIST(0);
}
if (sock->type == isc_sockettype_udp) {
dev->address.length = msghdr.msg_namelen;