When calling setsockopt with SO_RECVBUF, then turning around and calling getsockopt with SO_RECVBUF, it appears to be telling me that it sets the buffer size to twice what I requested it to be set to. Anybody know why that may be?
code in question:
https://gist.github.com/rdp/8443238
output:
setting it as 2222
[udp @ 0x1a72ec0] end receive buffer size reported is 4444
Only in linux, on other OS's seem to report it as the value I set it to. Thank you.
Excerpt from Linux man page for socket
SO_SNDBUF
Sets or gets the maximum socket send buffer in bytes. The kernel doubles this value (to allow space for bookkeeping overhead) when it is set using setsockopt(2), and this doubled value is returned by getsockopt(2). The default value is set by the /proc/sys/net/core/wmem_default file and the maximum allowed value is set by the /proc/sys/net/core/wmem_max file. The minimum (doubled) value for this option is 2048.
So, kernel doubles the value you set for it's internal purpose.