Hi Alexey,

This patch fixes my simple read()/write() tests, nice one. The behaviour
also now matches BSD (someone kindly donated me a FreeBSD shell for
testing).

Unfortunately, I discovered a bug with SO_SNDTIMEO/sendfile():

- Connect an AF_INET, SOCK_STREAM socket to a local listening socket.
- Set 5 seconds SO_SNDTIMEO on the connected socket
- Do a sendfile() from a big file down the connected socket. Make sure the
size is big (e.g. 1Mb) so the call blocks.
--> BUG!! The call blocks indefinitely rather than being interrupted after
5 seconds.

Cheers
Chris

On Sat, 17 Feb 2001 [EMAIL PROTECTED] wrote:

> Hello!
>
> > Unfortunately, it seems to be very buggy. Here are two buggy scenarios.
>
>
> --- ../vger3-010210/linux/net/ipv4/tcp.c      Sat Feb 10 23:16:51 2001
> +++ linux/net/ipv4/tcp.c      Sat Feb 17 23:27:43 2001
> @@ -691,6 +691,8 @@
>
>               set_current_state(TASK_INTERRUPTIBLE);
>
> +             if (!timeo)
> +                     break;
>               if (signal_pending(current))
>                       break;
>               if (tcp_memory_free(sk) && !vm_wait)
> --- ../vger3-010210/linux/net/core/sock.c     Tue Jan 30 21:20:16 2001
> +++ linux/net/core/sock.c     Sat Feb 17 23:27:44 2001
> @@ -727,6 +727,8 @@
>       clear_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags);
>       add_wait_queue(sk->sleep, &wait);
>       for (;;) {
> +             if (!timeo)
> +                     break;
>               if (signal_pending(current))
>                       break;
>               set_bit(SOCK_NOSPACE, &sk->socket->flags);
>


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to