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/