On Fri, 18 Aug 2023 13:30:54 GMT, Weibing Xiao <[email protected]> wrote:
>> Please refer to JDK-8314063.
>>
>> The failure scenario is due to the setting of connection timeout. It is
>> either too small or not an optimal value for the system. When the client
>> tries to connect to the server with LDAPs protocol. It requires the
>> handshake after the socket is created and connected, but it fails due to
>> connection timeout and leaves the socket open. It is not closed properly due
>> to the exception handling in the JDK code.
>>
>> The change is adding a try/catch block and closing the socket in the catch
>> block, and the format of the code got changed consequently.
>
> Weibing Xiao has updated the pull request incrementally with one additional
> commit since the last revision:
>
> re-write close method
Changes requested by aefimov (Reviewer).
src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java line 293:
> 291: } else { // NO SocketFactory
> 292: // create a connected socket without factory
> 293: createConnectionSocket(endpoint, connectTimeout);
A socket returned by `createConnectionSocket` here needs to be saved to the
`socket` variable - currently almost all of the tests that are not using a
custom socket factory - fails with:
Caused by: java.lang.NullPointerException: Cannot invoke
"java.net.Socket.getInputStream()" because "this.sock" is null
at java.naming/com.sun.jndi.ldap.Connection.<init>(Connection.java:238)
-------------
PR Review: https://git.openjdk.org/jdk/pull/15294#pullrequestreview-1585010623
PR Review Comment: https://git.openjdk.org/jdk/pull/15294#discussion_r1298730216