At 01:15 AM 9/3/01, you wrote:
>Beware: take this with a BIG grain of salt.
>
>After an hour of staring at TCP implementation in kernels 2.2.18 (~RH
>6.2) and 2.4.4 (~RH7) (i.e. tcp_recvmsg() in \linux\net\ipv4\tcp.c it
>looks like it's exactly how they work.
>
>In 2.2.18 if len = 0 it will return 0/no error and there is a
>enlightning comment near that code:
> /*
> * BUG BUG BUG
> * This violates 1003.1g compliance. We must wait for
> * data to exist even if we read none!
> */
>
>In 2.4.4 it will try to read the data anyway and if there is no data and
>socket is NOBLOCK (timeo==0) it'll return EAGAIN=EWOULDBLOCK.
>
>So presumably that was a bug in 2.2.x fixed in 2.4.x.
Bummer, I liked the behavior of the bug better!
Truly Yon, thanks for looking this up for me, and if I some other
questions, it is these: how did you know where to look, what tools do you
use to navigate the lower levels of linux, and can you recommend a "gentle"
introduction to lower levels within the kernel?
Thanks once more,
Jerry
=====================================================
Jerry Asher [EMAIL PROTECTED]
1678 Shattuck Avenue Suite 161 Tel: (510) 549-2980
Berkeley, CA 94709 Fax: (877) 311-8688