RFR: 8285515: (dc) DatagramChannel.disconnect fails with "Invalid argument" on macOS 12.4 beta2

Jaikiran Pai jpai at openjdk.java.net
Thu Apr 28 09:44:23 UTC 2022


Can I please get a review of this change with proposes to address the issue reported in https://bugs.openjdk.java.net/browse/JDK-8285515?

We have noticed that in the latest 12.4 Beta2 version of MacOSX, the implementation of `DatagramChannelImpl.disconnect` fails with an unexpected error. 

Internally, the disconnect is implemented as a call to `connect` by passing it a "null" address as suggested in the documentation of `man connect`. In previous versions of MacOSX, this call used to return a `EADDRNOTAVAIL` errno and at the same time would correctly dissolve the connected association. The `EADDRNOTAVAIL` was then caught and intentionally ignored by the code in the JNI layer in `DatagramChannelImpl.disconnect0`.

In MacOSX 12.4 Beta 2 we are now seeing this `connect` call return `EINVAL`. This change in behaviour is noticed only for IPv4-mapped IPv6 addresses.

The `man connect` documentation on MacOSX states that even `disconnectx` can be used to disconnect datagram sockets. The commit here does that change to use `disconnectx` for MacOSX. Tests have been successfully run on some older Mac setups  to make sure this change passes there as well.

Currently `tier1`, `tier2` and `tier3` run is in progress across various OS.

No additional tests have been added for this change since the many existing (failing) tests already cover this use case.

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

Commit messages:
 - 8285515: use disconnectx to disconnect a datagram socket on __APPLE__ systems

Changes: https://git.openjdk.java.net/jdk/pull/8445/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8445&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8285515
  Stats: 25 lines in 1 file changed: 16 ins; 8 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/8445.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/8445/head:pull/8445

PR: https://git.openjdk.java.net/jdk/pull/8445


More information about the nio-dev mailing list