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

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

Commit ac1dc48bc874bf9b856308430233f9e55df9256c in httpcomponents-core's branch 
refs/heads/HTTPCORE-482 from [~garydgregory]
[ https://git-wip-us.apache.org/repos/asf?p=httpcomponents-core.git;h=ac1dc48 ]

[HTTPCORE-482] org.apache.http.nio.protocol.HttpAsyncService does
returns an empty response when a socket timeout is detected

> org.apache.http.nio.protocol.HttpAsyncService returns an empty response when 
> a socket timeout is detected
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: HTTPCORE-482
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-482
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.4.6
>         Environment: org.apache.http.nio.protocol.HttpAsyncService does 
> returns an empty response when a socket timeout is detected
>            Reporter: Gary Gregory
>            Assignee: Gary Gregory
>             Fix For: 4.4.7
>
>         Attachments: httpcomponents-core-4.4.x.patch
>
>
> org.apache.http.nio.protocol.HttpAsyncService does returns an empty response 
> when a socket timeout is detected.
> When a timeout occurs in an async proxy when an origin server takes too long 
> to reply, HttpAsyncService returns empty response.
> You can reproduce this issue with our async example {{NHttpReverseProxy}}:
> Start it with: http://postman-echo.com 8888
> Then run:
> {noformat}
> curl --verbose --max-time 1000 http://localhost:8888/delay/3
> {noformat}
> and you will get an EMPTY response from the server, no HTTP status code where 
> I would expect a 504 or 500.
> The proxy prints out:
> {noformat}
> Reverse proxy to http://postman-echo.com:80
> [client->proxy] connection open 127.0.0.1:8888<->127.0.0.1:61128
> [client->proxy] 00000001 GET /delay/3 HTTP/1.1
> [client->proxy] 00000001 request completed
> [proxy->origin] connection open 192.168.0.112:61130<->52.44.234.173:80
> [proxy->origin] 00000001 GET /delay/3 HTTP/1.1
> [proxy->origin] 00000001 request completed
> [client->proxy] connection closed 127.0.0.1:8888<->127.0.0.1:61128
> [client<-proxy] 00000001 java.net.SocketTimeoutException
> [proxy->origin] connection released 192.168.0.112:61130<->52.44.234.173:80
> [proxy->origin] [total kept alive: 0; total allocated: 0 of 100]
> [proxy->origin] connection closed 192.168.0.112:61130<->52.44.234.173:80
> {noformat}
> Curl prints:
> {noformat}
> * STATE: INIT => CONNECT handle 0x600057930; line 1410 (connection #-5000)
> * Added connection 0. The cache now contains 1 members
> * STATE: CONNECT => WAITRESOLVE handle 0x600057930; line 1446 (connection #0)
> *   Trying ::1...
> * TCP_NODELAY set
> * STATE: WAITRESOLVE => WAITCONNECT handle 0x600057930; line 1527 (connection 
> #0)
> *   Trying 127.0.0.1...
> * TCP_NODELAY set
> * Connected to localhost (127.0.0.1) port 8888 (#0)
> * STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600057930; line 1579 
> (connection #0)
> * Marked for [keep alive]: HTTP default
> * STATE: SENDPROTOCONNECT => DO handle 0x600057930; line 1597 (connection #0)
> > GET /delay/3 HTTP/1.1
> > Host: localhost:8888
> > User-Agent: curl/7.54.1
> > Accept: */*
> >
> * STATE: DO => DO_DONE handle 0x600057930; line 1676 (connection #0)
> * STATE: DO_DONE => WAITPERFORM handle 0x600057930; line 1801 (connection #0)
> * STATE: WAITPERFORM => PERFORM handle 0x600057930; line 1811 (connection #0)
> * STATE: PERFORM => DONE handle 0x600057930; line 1980 (connection #0)
> * multi_done
> * Empty reply from server
> * Connection #0 to host localhost left intact
> * Expire cleared
> curl: (52) Empty reply from server
> {noformat}
> I have a fix that returns a 504 GATEWAY_TIMEOUT when a socket timeout is 
> detected.
> Please see branch HTTPCORE-482 in git. Build passes with {{mvn clean 
> verify}}. I also attached the changes as a patch in 
> {{httpcomponents-core-4.4.x.patch}}.
> I have not created a unit test patch but the above scenario now works.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to