You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Yannick Dylla (Jira)" <ji...@apache.org> on 2021/01/11 12:03:00 UTC
[jira] [Updated] (HTTPCORE-658) Closing a connection triggers a
javax.net.debug error to be logged
[ https://issues.apache.org/jira/browse/HTTPCORE-658?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yannick Dylla updated HTTPCORE-658:
-----------------------------------
Component/s: HttpCore
> Closing a connection triggers a javax.net.debug error to be logged
> ------------------------------------------------------------------
>
> Key: HTTPCORE-658
> URL: https://issues.apache.org/jira/browse/HTTPCORE-658
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore
> Reporter: Yannick Dylla
> Priority: Minor
> Attachments: tls-close-bug.zip
>
>
> Hi,
> I noticed that on each SSL/TLS Connection closing the following Exception is logged when {{-Djavax.net.debug=ssl}} is enabled:
> {noformat}
> javax.net.ssl|ERROR|01|main|2021-01-11 11:38:11.259 CET|TransportContext.java:318|Fatal (INTERNAL_ERROR): closing inbound before receiving peer's close_notify (
> "throwable" : {
> javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
> at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
> at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
> at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:313)
> at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:269)
> at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:260)
> at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:737)
> at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:716)
> at org.apache.http.impl.BHttpConnectionBase.close(BHttpConnectionBase.java:325)
> at org.apache.http.impl.conn.LoggingManagedHttpClientConnection.close(LoggingManagedHttpClientConnection.java:81)
> at org.apache.http.impl.conn.CPoolEntry.closeConnection(CPoolEntry.java:70)
> at org.apache.http.impl.conn.CPoolEntry.close(CPoolEntry.java:96)
> at org.apache.http.pool.AbstractConnPool.shutdown(AbstractConnPool.java:149)
> at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.shutdown(PoolingHttpClientConnectionManager.java:430)
> at org.apache.http.impl.client.HttpClientBuilder$2.close(HttpClientBuilder.java:1244)
> at org.apache.http.impl.client.InternalHttpClient.close(InternalHttpClient.java:201)
> at TLSCloseBug.main(TLSCloseBug.java:83)}
> )
> {noformat}
> I tracked down the Problem to the BHttpConnectionBase.close code, where socket.shutdownOutput and socket.shutdownInput are called before socket.close().
> Why is that? The code is pretty old so maybe it was required at some point.
> But for the JDK 11 SSLSocketImpl this triggers the error to be logged.
> In general, I think it would be better to remove the shutdownOutput and shutdownInput calls and only rely on the {{Closeable}} contract to clean up the socket.
> For the JDK 11 SSLSocketImpl this would fix the Problem.
> I also wrote a small example app to trigger the error: [^tls-close-bug.zip]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org