summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_socket.c
diff options
context:
space:
mode:
authorkbyanc <kbyanc@FreeBSD.org>2002-11-01 21:27:59 +0000
committerkbyanc <kbyanc@FreeBSD.org>2002-11-01 21:27:59 +0000
commitc70af01e8027513cb16aa9d60244c105336fe3e6 (patch)
tree75bdbba0cb4efffc7b7ecf3d41097ddbf79ca0f5 /sys/kern/uipc_socket.c
parent678a0e633139a3b295d83cad803fdd19b2a492b9 (diff)
downloadFreeBSD-src-c70af01e8027513cb16aa9d60244c105336fe3e6.zip
FreeBSD-src-c70af01e8027513cb16aa9d60244c105336fe3e6.tar.gz
Track the number of non-data chararacters stored in socket buffers so that
the data value returned by kevent()'s EVFILT_READ filter on non-TCP sockets accurately reflects the amount of data that can be read from the sockets by applications. PR: 30634 Reviewed by: -net, -arch Sponsored by: NTT Multimedia Communications Labs MFC after: 2 weeks
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r--sys/kern/uipc_socket.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index e07e581..7a6c2b5 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -1784,7 +1784,7 @@ filt_soread(struct knote *kn, long hint)
{
struct socket *so = (struct socket *)kn->kn_fp->f_data;
- kn->kn_data = so->so_rcv.sb_cc;
+ kn->kn_data = so->so_rcv.sb_cc - so->so_rcv.sb_ctl;
if (so->so_state & SS_CANTRCVMORE) {
kn->kn_flags |= EV_EOF;
kn->kn_fflags = so->so_error;
OpenPOWER on IntegriCloud