Thread (1 message) 1 message, 1 author, 2002-01-30

Re: BUG: udp socket, getsockopt + setsockopt

From: Val Henson <hidden>
Date: 2002-01-30 00:05:48

When you set SO_RCVBUF with setsockopt, the kernel allocates twice the
memory you set.  This has something to do with BSD compatibility and
storing internal kernel structures in the memory allocated for the
recv buf.  Try getsockopt after you setsockopt.

This is ostensibly a feature, not a bug.  Search the linux-kernel
archives for "so_rcvbuf" and "David Miller".  Hint: you probably won't
convince Dave to change his mind.

-VAL

On Tue, Jan 29, 2002 at 08:49:02AM -0800, David Ashley wrote:
I've found a very strange bug in linux ppc 2.4.17, I think. I'm pulling
udp packets off the LAN and reading them in a user space program. They come
in sets of about 60k bytes all together, then pause for a while. I only can
read the first 48k successfully, then they get lost.

If I have a setsockopt call on the socket, setting SO_RCVBUF to 65535,
then I don't lose any data. But if I do a getsockopt beforehand on
SO_RCVBUF, it reports 65535. Without the setsockopt I get the packet loss,
with it I don't lose any. It is strange because the value doesn't appear
to be changing.

What can be causing this mysterious behaviour?

-Dave
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help