Date: Wed, 28 Aug 2002 11:40:03 -0700 (PDT) From: Daniel Eischen <eischen@pcnet1.pcnet.com> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/42100: libc_r: accept(2) can't handle descriptor being closed/shutdown Message-ID: <200208281840.g7SIe3YB029196@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/42100; it has been noted by GNATS. From: Daniel Eischen <eischen@pcnet1.pcnet.com> To: Archie Cobbs <archie@packetdesign.com> Cc: freebsd-gnats-submit@FreeBSD.org Subject: Re: bin/42100: libc_r: accept(2) can't handle descriptor being closed/shutdown Date: Wed, 28 Aug 2002 14:30:55 -0400 (EDT) Here's a patch that might fix libc_r in the close() case. The original is at home, and I hacked this one up but can't compile it. Please test. Index: uthread_kern.c =================================================================== RCS file: /home/ncvs/src/lib/libc_r/uthread/uthread_kern.c,v retrieving revision 1.41 diff -u -r1.41 uthread_kern.c --- uthread_kern.c 25 Aug 2002 13:06:29 -0000 1.41 +++ uthread_kern.c 28 Aug 2002 18:25:24 -0000 @@ -880,7 +880,8 @@ /* File descriptor read wait: */ case PS_FDR_WAIT: if ((nfds < _thread_dtablesize) && - (_thread_pfd_table[nfds].revents & POLLRDNORM)) { + ((_thread_pfd_table[nfds].revents + & (POLLRDNORM | POLLHUP | POLLERR)) != 0)) { PTHREAD_WAITQ_CLEARACTIVE(); PTHREAD_WORKQ_REMOVE(pthread); PTHREAD_NEW_STATE(pthread,PS_RUNNING); @@ -892,7 +893,8 @@ /* File descriptor write wait: */ case PS_FDW_WAIT: if ((nfds < _thread_dtablesize) && - (_thread_pfd_table[nfds].revents & POLLWRNORM)) { + ((_thread_pfd_table[nfds].revents + & (POLLWRNORM | POLLHUP | POLLERR)) != 0)) { PTHREAD_WAITQ_CLEARACTIVE(); PTHREAD_WORKQ_REMOVE(pthread); PTHREAD_NEW_STATE(pthread,PS_RUNNING); To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200208281840.g7SIe3YB029196>