RFR: 8370655: Check EINTR handling InetAddress implementation and NET_ThrowNew [v4]
Alan Bateman
alanb at openjdk.org
Tue Dec 16 14:22:59 UTC 2025
On Tue, 16 Dec 2025 14:20:33 GMT, Michael McMahon <michaelm at openjdk.org> wrote:
>> Hi,
>>
>> This change updates the use of NET_ThrowNew in Inet4AddressImpl.c + Inet6AddressImpl.c (unix).
>> Currently EINTR is incorrectly handled in NET_ThrowNew to throw InterruptedIOException.
>>
>> The only possible places in these files where EINTR can be returned is in the sendto() calls
>> for ping4() and ping6() used by the InetAddress.isReachable() API.
>>
>> The change checks for EINTR returned from those calls and restarts the sendto()
>> if the timeout allows it. If EINTR is detected by NET_ThrowNew it is thrown as an ordinary
>> SocketException, but this should not happen.
>>
>> The fix is only partially tested as it is difficult to make sendto() return EINTR in practice, but
>> I added a unit test for the new native function that checks if the timeout has expired.
>>
>> Thanks,
>> Michael
>
> Michael McMahon has updated the pull request incrementally with one additional commit since the last revision:
>
> whitespace fix
Latest version is much more readability at use-sites, so I think okay.
-------------
Marked as reviewed by alanb (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/28750#pullrequestreview-3583333019
More information about the net-dev
mailing list