Re: mod_proxy and HTTP 302 response

Peter Van Biesen <[email protected]>
Newsgroups gmane.comp.apache.mod-proxy
Organization VFSIPH
Message-ID <[email protected]>
Hi, I think I found the problem, try this patch, let me know if it
solves your problem :

*** proxy_http.c        Fri Jun 14 19:14:57 2002
--- proxy_http_new.c    Mon Aug 19 13:52:28 2002
***************
*** 734,744 ****
                              "server: ", buffer, NULL));
              }
              backasswards = 0;

              buffer[12] = '\0';
              r->status = atoi(&buffer[9]);

!             buffer[12] = ' ';
              r->status_line = apr_pstrdup(p, &buffer[9]);

              /* read the headers. */
--- 734,749 ----
                              "server: ", buffer, NULL));
              }
              backasswards = 0;
+           //Store byte 12 in buffer[0] for safekeeping
+           buffer[0] = buffer[12];

              buffer[12] = '\0';
              r->status = atoi(&buffer[9]);

!           //Put back position 12 and reset buffer[0] to 'H'
!             buffer[12] = buffer[0];
!           buffer[0] = 'H';
!
              r->status_line = apr_pstrdup(p, &buffer[9]);

              /* read the headers. */

What does it do ? When a HTTP header is received without a description,
byte 12 will be \0. In this case, the old code would overwrite the \0
with a space, adding garbage at the end. This will probably be
interpreted by the outputwriter as a newline, thus the creation of the
problem. Is this correct ? Can anybody check this ?

Thanks !

Peter.

Peter Van Biesen wrote:
> 
> Hi,
> 
> I've investigated further and I see strange things happening :
> 
> Direct conntection :
> 
> # wget -S --proxy=off http://www.argenta.be
> --11:29:28--  http://www.argenta.be/
>            => `index.html.2'
> Resolving www.argenta.be... done.
> Connecting to www.argenta.be[62.233.1.156]:80... connected.
> HTTP request sent, awaiting response...
>  1 HTTP/1.1 200
>  2 Date: Mon, 19 Aug 2002 09:27:03 GMT
>  3 Server: web server
>  4 Set-Cookie: ASPSESSIONIDQQGGGQLW=GIHBKICAKHGMILKNGEHDOBLI; path=/
>  5 cache-control: private
>  6 Connection: close
>  7 Content-Type: text/html
> 
> Through the proxy :
> 
> wget -S http://www.argenta.be
> --11:28:22--  http://www.argenta.be/
>            => `index.html.1'
> Resolving vlafo3... done.
> Connecting to vlafo3[193.190.145.66]:80... connected.
> Proxy request sent, awaiting response...
>  1 HTTP/1.1 200
>  2
>  3 Date: Mon, 19 Aug 2002 09:28:22 GMT
>  4 Server: web server
>  5 Set-Cookie: ASPSESSIONIDQQGGGQLW=PHHBKICAHBJJACKGMCPAJPAC; path=/
>  6 cache-control: private
>  7 Content-Type: text/html; charset=ISO-8859-1
>  8 Via: 1.0 www.argenta.be
>  9 Content-Length: 758
> 10 Connection: close
> 
> Notice the extra empty line when going through the proxy. Something I
> also notice that is different is the HTTP line : on other sites, the
> line includes " OK", but here it is not present. I know some regexp's
> will fail on this line ...
> 
> I'll check the code if I have the time !
> 
> Anyway, I haven't tested the 302 response, what http headerline must I
> send to the server to get a 302 response ?
> 
> Cheers,
> 
> Peter.
> Brett Hutley wrote:
> >
> > J.D. Silvester wrote:
> > *snip*
> >
> > >I just looked at the source for that web page and this is what I got:
> > >
> > >Date: Fri, 16 Aug 2002 14:03:26 GMT
> > >Server: RealPage 2700
> > >Location: http://server1.someserver.com/webpage.html
> > >Content-Type: text/html
> > >X-Cache: MISS from xxx.xxx.xxx.xxx
> > >Transfer-Encoding: chunked
> > >
> > >9d
> > ><HTML><HEAD><TITLE></TITLE></HEAD><BODY>
> > ><H2></H2>
> > > <A HREF="http://server1.someserver.com/webpage.html"> </A>
> > ><P></BODY></HTML>
> > >
> > >0
> > >
> > >
> > >That is exactly how it appears in the Netscape source viewer.  I
> > >especially like the "space link". So, I'm guessing that the extra junk at
> > >the bottom after the headers is what is causing the problem?
> > >
> > >
> > >
> > What you need to do is have a look at the HTTP headers that the server
> > that is doing the redirect sends BEFORE they hit your proxy server. An
> > easy way to do this is to use 'wget -S' (I wish I'd known this the other
> > day - I was using tcpdump to sniff the packets...). For example, when I
> > fire it at my host:
> >
> > wget -S host.example.com
> >
> > I get back:
> >
> > HTTP request sent, awaiting response...
> >  1 HTTP/1.0 200 OK
> >  2 Server: Zope/(Zope 2.5.1b1 (OpenBSD package zope-2.5.1b1)
> >  3 , python 2.1.2, openbsd3) ZServer/1.1b1
> >  4 Date: Fri, 16 Aug 2002 22:52:44 GMT
> >  5 Connection: Keep-Alive
> >  6 Content-Type: text/html
> >  7 Etag:
> >  8 Content-Length: 289
> >
> > ... and you can immediately see the bad line number 3, without the
> > all-important colon.
> >
> > Cheers, Brett
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.