On Sat, 19 Sep 2026 08:39:11 GMT, Jaikiran Pai <[email protected]> wrote:

>> Can I please get a review of this change which addresses the issue noted in 
>> https://bugs.openjdk.org/browse/JDK-8392732?
>> 
>> On macos 27, it appears that the limit imposed by the OS for the `SO_LINGER` 
>> socket option has changed. It now fails with a `EDOM` (Numerical argument 
>> out of domain) error for values greater than 32767. 
>> 
>> The commit in this PR updates the JDK's code to limit the user provided 
>> value for linger to 32767. If the provided value is greater than 32767, then 
>> `SO_LINGER` will be set to 32767. The `Socket.setSoLinger(...)` already 
>> states that:
>> 
>>> The maximum timeout value is platform specific.  
>> 
>> so this change doesn't require additional specification changes. 
>> Furthermore, the change applies this new limit to all versions of macos 
>> since the 32767 value is large enough for practical uses of lingering on 
>> close of a socket.
>> 
>> tier testing with this change has completed without any issues (on all 
>> platforms and on macos older versions as well as macos 27).
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Jaikiran Pai has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   add 8392732 to @bug of the test

src/java.base/unix/native/libnet/net_util_md.c line 418:

> 416: #ifdef MACOSX
> 417:     /* macOS stores linger values as signed shorts in the kernel. */
> 418:     if (level == SOL_SOCKET && opt == SO_LINGER) {

I wonder why `SO_LINGER_SEC` had not been used on mac throughout, which is the 
true equivalent of other platforms `SO_LINGER` (SO_LINGER on mac works on ticks 
as units not seconds). But that would a breaking change in another hand.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/32961#discussion_r4053171204

Reply via email to