RFR: 8267564: JDK-8252971 causes SPECjbb2015 socket exceptions on Windows when MKS is installed [v2]
Alan Bateman
alanb at openjdk.java.net
Fri Jun 4 17:02:57 UTC 2021
On Fri, 4 Jun 2021 11:26:15 GMT, Michael McMahon <michaelm at openjdk.org> wrote:
>> Hi,
>>
>> This fixes a problem where unix domain sockets are available on Windows from third party winsock drivers (other than the Microsoft implementation in Windows 10/2019). These are available (unexpectedly) on earlier Windows releases and are not supported by Java.
>>
>> The fix is to search for the expected winsock service provider ID and specifically use that one when creating sockets. Previously, we just attempted to create a unix domain socket, and once that succeeded we assumed we had the right service provider.
>>
>> I haven't included a regression test because the environment to reproduce the issue is not part of the standard test configuration. Also, the new code is well exercised by existing tests.
>>
>> Thanks,
>> Michael.
>
> Michael McMahon has updated the pull request incrementally with one additional commit since the last revision:
>
> update after Alan's comments
The latest version looks much better. One niggle is that the method to test if Unix domain sockets is supported has a side effect of setting provider. What you would think about renaming to "init" or something better. It can continue to return a boolean to indicate if supported or not.
I should have been clearer in my comment about cmpGuid. I meant that memcmp returns -1, 0 or 1 and it would have been clearer if have it return JNI_FALSE if it returned something != 0 (it was the !memcpy that was awkward). What you have now is okay.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4339
More information about the nio-dev
mailing list