Problem Description: Calling setsockopt() with SO_RCVBUF or SO_SNDBUF after connect() or listen() makes sockets have a horrible performance. Moreover, getsockopt() returns values as if the previous setsockopt() was successful. Solution: 1) Document this somewhere in the man-pages (e.g. socket(7)) 2) Make setsockopt() fail after connect() or listen() If you need an example code, I'll be happy to provide it.
Reply-To: akpm@linux-foundation.org (switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface). On Thu, 12 Mar 2009 10:23:52 -0700 (PDT) bugme-daemon@bugzilla.kernel.org wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=12860 > > Summary: SO_RCVBUF and SO_SNDBUF must be set before connect() or > listen() > Product: Networking > Version: 2.5 > KernelVersion: 2.6.18 > Platform: All > OS/Version: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: IPV4 > AssignedTo: shemminger@linux-foundation.org > ReportedBy: cristiklein@gmail.com > > > Problem Description: > > Calling setsockopt() with SO_RCVBUF or SO_SNDBUF after connect() or listen() > makes sockets have a horrible performance. Moreover, getsockopt() returns > values as if the previous setsockopt() was successful. > > Solution: > > 1) Document this somewhere in the man-pages (e.g. socket(7)) > 2) Make setsockopt() fail after connect() or listen() > > If you need an example code, I'll be happy to provide it. >
Please retest with a kernel somewhat newer than 2.6.18, or if your 2.6.18 is a vendor supplied kernel (eg RHEL, Centos) take the bug up with them. Huge amounts have changed over the years since 2.6.18 was released
I'm not able to reproduce this error on newer kernels.