On Mon, 16 Jun 2025 06:54:56 GMT, Jaikiran Pai <j...@openjdk.org> wrote:
> Can I please get a review of this change which proposes to enhance the > implementation of `ServerSocket` and `ServerSocketChannel` to allow for > `backlog` values to be greater than 200 on Windows? This addresses > https://bugs.openjdk.org/browse/JDK-8330940. > > As noted in that enhancement request, right now on Windows, if the backlog is > specified to be more than 200, then Windows caps it to a platform internal > `SOMAXCONN`. As noted in the documentation here > https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-listen > applications can increase that limit by using the `SOMAXCONN_HINT` macro. > That macro then adjusts the value to be between 200 and 65535, thus allowing > for a higher backlog of connections. > > The commit in this PR uses this macro when the specified backlog is 200 or > more. A new jtreg test has been introduced to verify this change. This test > and other existing tests in tier1, tier2 and tier3 continue to pass. > > A similar restriction on the backlog value applies in Linux too > https://github.com/torvalds/linux/blob/master/Documentation/networking/ip-sysctl.rst#tcp-variables. > But from what I can see, unlike Windows, it cannot be adjusted when calling > `listen()`. src/java.base/windows/native/libnio/ch/Net.c line 225: > 223: * SOMAXCONN_HINT will adjust the value N to be within the range > (200, 65535). > 224: */ > 225: if (backlog >= 200) { Should this is > 200 rather than >= 200? This is a Windows specific file so the comment can be trimmed down to a one sentence to say that SOMAXCONN_HINT is used when requested backlog is larger than SOMAXCONN. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25819#discussion_r2149261450