RFR: 8330940: Impossible to create a socket backlog greater than 200 on Windows 8+ [v2]
Daniel Fuchs
dfuchs at openjdk.org
Mon Jun 16 11:19:30 UTC 2025
On Mon, 16 Jun 2025 09:44:13 GMT, Jaikiran Pai <jpai at 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()`.
>
> Jaikiran Pai has updated the pull request incrementally with four additional commits since the last revision:
>
> - include a test for AsynchronousServerSocketChannel
> - System.err instead of System.out
> - trim down code comment
> - > 200 instead of >= 200
test/jdk/java/net/ServerSocket/LargeBacklogTest.java line 96:
> 94: // do not attempt any more connections
> 95: break;
> 96: }
hmm... interesting: so we don't need to leave the socket open to increase the backlog. I guess the server side has to accept the socket and read the FIN, so the backlog won't be decremented until the socket is accepted (even if it's already closed on the client side).
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25819#discussion_r2149696163
More information about the net-dev
mailing list