RFR: 8370655: Check EINTR handling InetAddress implementation and NET_ThrowNew [v2]

Michael McMahon michaelm at openjdk.org
Thu Dec 11 16:27:29 UTC 2025


> 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 five additional commits since the last revision:

 - impl update
 - update
 - header file update
 - impl update
 - removed test updated impl

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/28750/files
  - new: https://git.openjdk.org/jdk/pull/28750/files/6f6189a9..899a4d5c

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=28750&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28750&range=00-01

  Stats: 580 lines in 8 files changed: 21 ins; 521 del; 38 mod
  Patch: https://git.openjdk.org/jdk/pull/28750.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/28750/head:pull/28750

PR: https://git.openjdk.org/jdk/pull/28750


More information about the net-dev mailing list