Re: recvmsg() "short receive" after FIONREAD
- Reply: Mark Johnston : "Re: recvmsg() "short receive" after FIONREAD"
- In reply to: Andriy Gapon : "Re: recvmsg() "short receive" after FIONREAD"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 11 Sep 2021 08:15:12 UTC
On 10/09/2021 22:40, Andriy Gapon wrote: > On 10/09/2021 22:38, Andriy Gapon wrote: >> On 10/09/2021 22:35, Mark Johnston wrote: >>> Indeed, I suspect that this is the problem. Note that for >>> kevent(EVFILT_READ) we subtract the number of control message bytes from >>> the returned value, see filt_soread(). I wonder if FIONREAD should do >>> the same thing. >> >> Thank you for the suggestion. >> I think that it is a reasonable expectation that FIONREAD returns a number of >> bytes that can be actually read. >> I'll look at filt_soread(). > > kn_data = sbavail(&so->so_rcv) - so->so_rcv.sb_ctl; > Is this it? > Looks simple enough for a quick test :) Works perfectly. Should I just commit it or is a larger discussion needed? -- Andriy Gapon