lkml.org 
[lkml]   [2003]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectPossible socket problem?
I'm seeing some strange behaviour with sockets under 2.4.20, and the
same thing on 2.4.18. I haven't tried any other kernel versions though or
done any more investigation, but all signs seem to point to a socket problem
in the kernel.

My program is reading from a socket produced like this:
sock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
I connect() the socket to an external server (an IMAP mail server). The server
throws lots of data down the line. The indication is that if the socket's
receive buffer fills up, I can no longer read from the socket, the read
just blocks forever. Same if I select() on the socket, it never reports data
is ready. I can tcpdump and see plenty of data having arrived after
the point where the last read succeeded.

The problem goes away if I do this:
i=4096;
j=setsockopt(sock,SOL_SOCKET,SO_RCVBUF,&i,sizeof(i));

It still occured when I set the RCVBUF size to 50000.

When the freeze happens I can find the last data received from the socket
in the tcpdump log, and it always is the last bytes in a single tcp packet.
More tcp packets follow, but they don't cause the read() to return.

I'm not doing any ioctl's or weird stuff, and I only read() or write() to the
socket.

-Dave

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

\
 
 \ /
  Last update: 2005-03-22 13:33    [W:0.018 / U:0.336 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site