Review request for OPENJDK6-38: java.net.Socket getTcpNoDelay/setTcpNoDelay work incorrectly on Windows
Vladislav Karnaukhov
vladislav at azulsystems.com
Fri Jul 18 08:09:33 UTC 2014
Hello,
please review the fix for OPENJDK6-38: java.net.Socket getTcpNoDelay/setTcpNoDelay work incorrectly on Windows
webrev: http://cr.openjdk.java.net/~vkarnauk/OPENJDK6-38/webrev.00/
The root cause of the issue is an incorrectly placed 'case' clauses for TCP_NODELAY and SO_OOBINLINE flags passed into the java.net.DualStackPlainSocketImpl.socketSetOption() function. This lead to incorrect fall-through, and the above flags actually never were set. Hence, consecutive calls to java.net.Socket setTcpNoRelay/getTcpNoRelay functions would never return expected values, and TCP_NODELAY flag is broken for Windows sockets.
According to mercurial history the bug was introduced in JDK7 by the fix for "7170730: Improve Windows network stack support" and later was fixed in JDK7 by the fix "8010213: Some api/javax_net/SocketFactory tests fail in 7u25 nightly build". However, 8010213 was never backported into OpenJDK6.
I fixed the bug independently from the fix 8010213, though the fixes are identical. I don't mind at all if my fix will be marked as a backport of 8010213 for consistency.
Regards,
- Vlad
More information about the jdk6-dev
mailing list