[ 
https://issues.apache.org/jira/browse/HTTPCORE-658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17264324#comment-17264324
 ] 

ASF subversion and git services commented on HTTPCORE-658:
----------------------------------------------------------

Commit f7e876bbb9ca165918e5826aa8bbba0f8b6d2268 in httpcomponents-core's branch 
refs/heads/master from Oleg Kalnichevski
[ https://gitbox.apache.org/repos/asf?p=httpcomponents-core.git;h=f7e876b ]

HTTPCORE-658: removed explicit inbound / outbound socket shutdown from the 
`#close` method of classic HTTP connections


> 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
>    Affects Versions: 4.4.13
>            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-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to