Isaac Cruz Ballesteros created HTTPCORE-719:
-----------------------------------------------
Summary: Infinite loop when setIOSessionDecorator() is used
Key: HTTPCORE-719
URL: https://issues.apache.org/jira/browse/HTTPCORE-719
Project: HttpComponents HttpCore
Issue Type: Bug
Components: HttpCore NIO
Affects Versions: 5.1.4
Reporter: Isaac Cruz Ballesteros
Attachments: infiniteLoop.zip
Initializing an async HTTPS server with setIOSessionDecorator makes library to
enter on an infinite loop with following exception when client closes
connection abruptly:
{noformat}
java.net.SocketException: Connection reset
at
sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:367)
~[?:?]
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:383) ~[?:?]
at org.apache.hc.core5.reactor.IOSessionImpl.read(IOSessionImpl.java:202)
~[httpcore5-5.1.4.jar:5.1.4]
at
org.apache.hc.core5.reactor.ssl.SSLIOSession.receiveEncryptedData(SSLIOSession.java:519)
~[httpcore5-5.1.4.jar:5.1.4]
at
org.apache.hc.core5.reactor.ssl.SSLIOSession.access$200(SSLIOSession.java:72)
~[httpcore5-5.1.4.jar:5.1.4]
at
org.apache.hc.core5.reactor.ssl.SSLIOSession$1.inputReady(SSLIOSession.java:170)
~[httpcore5-5.1.4.jar:5.1.4]
at
org.apache.hc.core5.reactor.InternalDataChannel.onIOEvent(InternalDataChannel.java:133)
[httpcore5-5.1.4.jar:5.1.4]
at
org.apache.hc.core5.reactor.InternalChannel.handleIOEvent(InternalChannel.java:51)
[httpcore5-5.1.4.jar:5.1.4]
at
org.apache.hc.core5.reactor.SingleCoreIOReactor.processEvents(SingleCoreIOReactor.java:178)
[httpcore5-5.1.4.jar:5.1.4]
at
org.apache.hc.core5.reactor.SingleCoreIOReactor.doExecute(SingleCoreIOReactor.java:127)
[httpcore5-5.1.4.jar:5.1.4]
at
org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:85)
[httpcore5-5.1.4.jar:5.1.4]
at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44)
[httpcore5-5.1.4.jar:5.1.4]
at java.lang.Thread.run(Thread.java:832) [?:?]{noformat}
I have attached a maven project with a simple example, it initializes server
and connects from a client. It reproduces when client does not consume what
server writes.
If you comment out line 75 of HttpsServer.java, then it works correctly.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]