On Thu, 22 Apr 2021 04:13:54 GMT, Xue-Lei Andrew Fan <xue...@openjdk.org> wrote:
>> As described in the bug, by connecting the SSLEngine with a misbehaving peer >> SSL implementation, it can get into a state where it calling `wrap` reports >> getStatus == OK, getHandshakeStatus === NEED_WRAP but still doesn't produce >> any further output. It happens when the output bound is not empty. >> >> It is caused by a mismatching condition in the SSLEngineOutputRecord. The >> use hasAlert() method should be replaced with isEmpty(). Otherwise, there >> is conflicts of the closing status while checking with >> OutputRecord.isEmpty() in TransportContext.getHandshakeStatus() >> implementation. It is safe to remove hasAlert() method, as we don't allow >> creation of new output record if the closure is in progress, thus isEmpty() >> could be used instead. >> >> The patch passed the test provided by the bug submitter. > > Xue-Lei Andrew Fan has updated the pull request with a new target base due to > a merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains three additional > commits since the last revision: > > - Merge > - improved fix > - 8263779: SSLEngine reports NEED_WRAP continuously without producing any > further output SSLEngineOutputRecord.java: Missing copyright date update. SSLEngineOutputRecord:77 Unnecessary extra line added. Please remove. src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java line 1694: > 1692: if (cause instanceof SocketException) { > 1693: try { > 1694: throw conContext.fatal(alert, cause); Why did you change to a throw here? Isn't everything from fatal() going to be thrown anyway? src/java.base/share/classes/sun/security/ssl/TransportContext.java line 587: > 585: } > 586: > 587: // Note: HandshakeStatus.FINISHED status is retrieved in other > places. I now see that v1 of this change had quite a few changes here, and what's left is now just compacting a line and making some old comment corrections. ------------- Marked as reviewed by wetmore (Reviewer). PR: https://git.openjdk.java.net/jdk/pull/3292