>Number: 150 >Category: mod_proxy >Synopsis: Proxy fails on incorrect status line format (more info on >PR137) >Confidential: no >Severity: non-critical >Priority: medium >Responsible: gnats-admin (GNATS administrator) >State: open >Class: change-request >Submitter-Id: apache >Arrival-Date: Sun Feb 2 20:10:00 1997 >Originator: [EMAIL PROTECTED] >Organization: apache >Release: 1.2b4 >Environment: Linux 2.0.14. >Description: Problem PR137 described a problem when connecting to the url http://www.stockmaster.com/cgi-bin/graph?sym=intc The server at stockmaster.com (Apache 1.1.1) is returning a status code of 302 to indicate a temporarily moved page. Unfortunately, the status line is not HTTP/1.x compliant and does not have a Reason-Phrase. It returns HTTP/1.0 302 instead of HTTP/1.0 302 Moved Temporarily
The proxy module performs a checkmask using the mask of "HTTP/#.# ### *" which will only match when there is at least a space following the status code. In this case there isn't a space so no headers are recognised (and the response is treated as HTTP/0.9), thus the proxy module starts inserting its own headers. The original headers then appear in the body and a "Location:" header is not processed by the client so no redirection is performed as was intended by the broken page. >How-To-Repeat: Access the url through the proxy module: http://www.stockmaster.com/cgi-bin/graph?sym=intc >Fix: 1) Have the remote site fix their page. 2) The Apache proxy module can be more forgiving in its checkmask call, using a mask of "HTTP/#.# ###*" instead of "HTTP/#.# ### *" (modules/proxy/proxy_http.c, line 268). 3) Recognise a 1.x status line in a bad format, and display an appropriate message (eg 502 Bad Gateway). %0 >Audit-Trail: >Unformatted: