Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
4.4.1
-
None
Description
I'm seeing an interesting behavior with HttpClient 4.4.1 GA (latest release as of the writing of this issue) when trying to make http requests with no keep-alive.
First, let me post my code for the case in which I try to request using keep-alive.
Java code for keepalive test with httpclient 4.4.1 GA
With the code above, everything works great. All my requests are done one the same connection and we get a nice graceful close with a couple FIN ACKs at the end. The capture is here:
Capture of keepalive test with httpclient 4.4.1 GA
However, when I try to do the same thing without using keepalive (I set "Connection: close" in the httpclient and make sure I call close on the httpclient as well at the end of each request), I see I the client send a reset (RST) signal to the server at the end of the connection.
The code for the non keepalive test is here:
Java code for no keepalive test with httpclient 4.4.1 GA
And its capture is here:
Capture of no keepalive test with httpclient 4.4.1 GA
I don't understand why the test with non persistent connections isn't gracefully closing the connection as it does with the persistent use case by sending a FIN,ACK to the server. It instead chooses to send a RST. Am I doing something wrong?
I tried the same test for no keep-alive with our legacy code using the now deprecated "commons-httpclient-3.1.jar" library. I see a proper connection close there.
Capture of no keepalive test with commons-httpclient-3.1
I've attached as much info as I can think of but if the wire logs or any other info is needed, I'd be more than happy to append it.