[ https://issues.apache.org/jira/browse/HTTPCORE-475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16072273#comment-16072273 ]
Oleg Kalnichevski commented on HTTPCORE-475: -------------------------------------------- _None_ of these things has _any_ bearing on 204 message handling, which you presume to be the culprit. Connection resets and {{org.apache.http.NoHttpResponseException}} are _perfectly_ normal conditions. They can and will happen due to stale connections on the client side or high load on the server side and many other factors. The real proxy would deal with those by implementing stale connection checks and a reasonable retrial mechanism for requests failed due to I/O errors, but all of these are out scope for a trivial example proxy. The fact that you are not seeing those in the browser means _nothing_. I'll make another attempt at reproducing the problem but unless you can demonstrate what exactly is wrong with 204 message handling I'll close this issue as invalid. Oleg > Occasional issues in handling "204 No Content" > ---------------------------------------------- > > Key: HTTPCORE-475 > URL: https://issues.apache.org/jira/browse/HTTPCORE-475 > Project: HttpComponents HttpCore > Issue Type: Bug > Components: Examples, HttpCore > Affects Versions: 4.4.6 > Environment: Windows, Java 8 > Reporter: M.S. Dousti > Priority: Minor > > While testing {{ElementalReverseProxy}}, I noted that occasionally, some > requests fail. Digging further, it seems that the code has some difficulty in > handling POST requests whose responses have "204 No Content" status. The bug > is intermittent, so it is a bit tricky to reproduce. One way is to run the > proxy against [http://www.bing.com]. (Notice it's HTTP and not HTTPS). Here > are the steps: > 1) Change line 274 of {{ElementalReverseProxy}} to further assist in > debugging, from: > {code:java} > System.err.println("I/O error: " + ex.getMessage()); > {code} > to: > {code:java} > ex.printStackTrace(); System.exit(-1); > {code} > 2) Add the following lines to your {{hosts}} file ({{/etc/hosts}} in Linux, > and {{%SystemRoot%\System32\drivers\etc\hosts}} in Windows): > {code:none} > 127.0.0.1 bing.com > 127.0.0.1 www.bing.com > {code} > 3) Run {{ElementalReverseProxy}} against one of Bing's IP addresses. I used > {{204.79.197.200}}. > 4) Navigate your browser to {{http://www.bing.com:8888}}, and watch the > output of > {{ElementalReverseProxy}}. Here's a sample run: > {noformat} > Listening on port 8888 > Incoming connection from /127.0.0.1 > Outgoing connection to /204.79.197.200 > New connection thread > >> Request URI: / > << Response: HTTP/1.1 200 OK > Incoming connection from /127.0.0.1 > Outgoing connection to /204.79.197.200 > Incoming connection from /127.0.0.1 > New connection thread > >> Request URI: > >> /fd/ls/l?IG=3C1FD9BC348B419DAF07D5D09D135555&CID=3ED5D1926AB96D71082FDB206BCB6CA6&Type=Event.CPT&DATA={%22pp%22:{%22S%22:%22L%22,%22FC%22:-1,%22BC%22:-1,%22SE%22:-1,%22TC%22:-1,%22H%22:116,%22BP%22:134,%22CT%22:169,%22IL%22:1},%22ad%22:[-1,-1,1600,770,1600,770,0]}&P=SERP&DA=Bn2 > Outgoing connection to /204.79.197.200 > New connection thread > >> Request URI: /fd/ls/lsp.aspx? > Incoming connection from /127.0.0.1 > Outgoing connection to /204.79.197.200 > New connection thread > Incoming connection from /127.0.0.1 > >> Request URI: > >> /notifications/render?bnptrigger=%7B%22PartnerId%22%3A%22HomePage%22%2C%22IID%22%3A%22SERP.2000%22%2C%22Attributes%22%3A%7B%22RawRequestURL%22%3A%22%2F%22%7D%7D&IG=3C1FD9BC348B419DAF07D5D09D135555&IID=SERP.2000 > Outgoing connection to /204.79.197.200 > New connection thread > Incoming connection from /127.0.0.1 > >> Request URI: /sa/8_01_0_000000/HpbHeaderPopup.js > << Response: HTTP/1.1 204 OK > Outgoing connection to /204.79.197.200 > New connection thread > >> Request URI: /sa/8_01_0_000000/homepageImgViewer_c.js > << Response: HTTP/1.1 200 OK > << Response: HTTP/1.1 200 OK > << Response: HTTP/1.1 200 OK > >> Request URI: > >> /HPImageArchive.aspx?format=js&idx=0&n=1&nc=1498898493932&pid=hp > org.apache.http.NoHttpResponseException: The target server failed to > respondIncoming connection from /127.0.0.1 > at > org.apache.http.impl.io.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:131) > at > org.apache.http.impl.io.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:53) > at > org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) > at > org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163) > at > org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) > at > org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) > at > ElementalReverseProxy$ProxyHandler.handle(ElementalReverseProxy.java:134) > at > org.apache.http.protocol.HttpService.doService(HttpService.java:437) > at > org.apache.http.protocol.HttpService.handleRequest(HttpService.java:342) > at > ElementalReverseProxy$ProxyThread.run(ElementalReverseProxy.java:262) > {noformat} > I don't know whether the problem lies within {{ElementalReverseProxy}}, or > the way HC handles the requests/responses. > I also wrote a simple PHP/HTML/JavaScript to reproduce the error without > relying on Bing, which I can provide if needed. -- 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