[ https://issues.apache.org/jira/browse/HTTPCORE-482?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16130459#comment-16130459 ]
ASF subversion and git services commented on HTTPCORE-482: ---------------------------------------------------------- Commit a5f3bb9e989a232d864d986d7a1d2145032c59c6 in httpcomponents-core's branch refs/heads/4.4.x from [~garydgregory] [ https://git-wip-us.apache.org/repos/asf?p=httpcomponents-core.git;h=a5f3bb9 ] [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