You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Graham Leggett <mi...@sharp.fm> on 2002/05/29 18:47:20 UTC

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Thomas Eibner wrote:

> Anyone looked at the remaining open bugs in 1.3 and might want to include
> this patch (and bug)?

Only if someone can verify that this patch actually does anything. The
proxy has been largely rewritten since then, so this bug might not still
be outstanding.

There is a release coming out in another day or two, I am stuck offline
- can someone take a look at this fix and see if it works...?

> Would it also be possible to have mod_proxy for 1.3 set the same
> X-Forwarded-* headers as the 2.0 proxy does? Need patches for this?

I thought v1.3.24 already did this - don't remember if I added it to
v1.3 as well, I am sure I did.

Regards,
Graham
-- 
-----------------------------------------
minfrin@sharp.fm		"There's a moon
					over Bourbon Street
						tonight..."

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Thomas Eibner <th...@stderr.net>.
On Wed, May 29, 2002 at 08:18:53PM +0200, Thomas Eibner wrote:
> On Wed, May 29, 2002 at 02:02:53PM -0400, Greg Marr wrote:
> > At 01:30 PM 05/29/2002, Thomas Eibner wrote:
> > >Index: proxy_http.c
> > >===================================================================
> > >RCS file: /home/cvspublic/apache-1.3/src/modules/proxy/proxy_http.c,v
> > >retrieving revision 1.98
> > >diff -u -r1.98 proxy_http.c
> > >--- proxy_http.c        21 Apr 2002 21:16:39 -0000      1.98
> > >+++ proxy_http.c        29 May 2002 17:04:38 -0000
> > >@@ -350,6 +350,20 @@
> > >       * where the original request came from.
> > >       */
> > >      ap_table_mergen(req_hdrs, "X-Forwarded-For", 
> > > r->connection->remote_ip);
> > >+    if (r->proxyreq == PROXY_PASS) {
> > >+        const char *buf;
> > >+        /* Add X-Forwarded-Host: so that upstream knows what the
> > >+         * original request hostname was.
> > >+         */
> > >+        if ((buf - ap_table_get(r->headers_in, "Host"))) {
> > 
> > I think this should be "buf =" instead of "buf -".
> 
> Yup, and:
> 
> +        ap_table_mergen(req_hdrs, "X-Forwarded-Server", r->server_hostname
> 
> Should be r->server->server_hostname too.
> 
> But it seems that getting the Host at this point is already to late.
> buf contains the remote hostname here already.

Which was fixed by the s/-/=/, thanks Greg.

-- 
  Thomas Eibner <http://thomas.eibner.dk/> DnsZone <http://dnszone.org/>
  mod_pointer <http://stderr.net/mod_pointer> <http://photos.eibner.dk/>
  !(C)<http://copywrong.dk/>                  <http://apachegallery.dk/>
          Putting the HEST in .COM <http://www.hestdesign.com/>

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Thomas Eibner <th...@stderr.net>.
On Wed, May 29, 2002 at 02:02:53PM -0400, Greg Marr wrote:
> At 01:30 PM 05/29/2002, Thomas Eibner wrote:
> >Index: proxy_http.c
> >===================================================================
> >RCS file: /home/cvspublic/apache-1.3/src/modules/proxy/proxy_http.c,v
> >retrieving revision 1.98
> >diff -u -r1.98 proxy_http.c
> >--- proxy_http.c        21 Apr 2002 21:16:39 -0000      1.98
> >+++ proxy_http.c        29 May 2002 17:04:38 -0000
> >@@ -350,6 +350,20 @@
> >       * where the original request came from.
> >       */
> >      ap_table_mergen(req_hdrs, "X-Forwarded-For", 
> > r->connection->remote_ip);
> >+    if (r->proxyreq == PROXY_PASS) {
> >+        const char *buf;
> >+        /* Add X-Forwarded-Host: so that upstream knows what the
> >+         * original request hostname was.
> >+         */
> >+        if ((buf - ap_table_get(r->headers_in, "Host"))) {
> 
> I think this should be "buf =" instead of "buf -".

Yup, and:

+        ap_table_mergen(req_hdrs, "X-Forwarded-Server", r->server_hostname

Should be r->server->server_hostname too.

But it seems that getting the Host at this point is already to late.
buf contains the remote hostname here already.

-- 
  Thomas Eibner <http://thomas.eibner.dk/> DnsZone <http://dnszone.org/>
  mod_pointer <http://stderr.net/mod_pointer> <http://photos.eibner.dk/>
  !(C)<http://copywrong.dk/>                  <http://apachegallery.dk/>
          Putting the HEST in .COM <http://www.hestdesign.com/>

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Greg Marr <gr...@alum.wpi.edu>.
At 01:30 PM 05/29/2002, Thomas Eibner wrote:
>Index: proxy_http.c
>===================================================================
>RCS file: /home/cvspublic/apache-1.3/src/modules/proxy/proxy_http.c,v
>retrieving revision 1.98
>diff -u -r1.98 proxy_http.c
>--- proxy_http.c        21 Apr 2002 21:16:39 -0000      1.98
>+++ proxy_http.c        29 May 2002 17:04:38 -0000
>@@ -350,6 +350,20 @@
>       * where the original request came from.
>       */
>      ap_table_mergen(req_hdrs, "X-Forwarded-For", 
> r->connection->remote_ip);
>+    if (r->proxyreq == PROXY_PASS) {
>+        const char *buf;
>+        /* Add X-Forwarded-Host: so that upstream knows what the
>+         * original request hostname was.
>+         */
>+        if ((buf - ap_table_get(r->headers_in, "Host"))) {

I think this should be "buf =" instead of "buf -".

-- 
Greg Marr
gregm@alum.wpi.edu
"We thought you were dead."
"I was, but I'm better now." - Sheridan, "The Summoning"


Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Thomas Eibner <th...@stderr.net>.
On Wed, May 29, 2002 at 07:44:16PM +0200, Graham Leggett wrote:
> Thomas Eibner wrote:
> 
> > Inline patch here, but I'm wondering if you want the X-Forwarded-For
> > header to be stuck inside the conditional too?
> 
> I think it should be... will sort this out later tonight or first thing
> tomorrow, have to leave the internet cafe now to fetch someone.

Good, there was a small mistake in the patch anyway. I'll setup a
test for it later so I can see if it actually works (doh).

-- 
  Thomas Eibner <http://thomas.eibner.dk/> DnsZone <http://dnszone.org/>
  mod_pointer <http://stderr.net/mod_pointer> <http://photos.eibner.dk/>
  !(C)<http://copywrong.dk/>                  <http://apachegallery.dk/>
          Putting the HEST in .COM <http://www.hestdesign.com/>

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Graham Leggett <mi...@sharp.fm>.
Thomas Eibner wrote:

> Inline patch here, but I'm wondering if you want the X-Forwarded-For
> header to be stuck inside the conditional too?

I think it should be... will sort this out later tonight or first thing
tomorrow, have to leave the internet cafe now to fetch someone.

Regards,
Graham
-- 
-----------------------------------------
minfrin@sharp.fm		"There's a moon
					over Bourbon Street
						tonight..."

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Thomas Eibner <th...@stderr.net>.
On Wed, May 29, 2002 at 07:20:17PM +0200, Graham Leggett wrote:
> Thomas Eibner wrote:
> 
> > Ah yes, X-Forwarded-For is there, but not the two others there is in
> > 2.0 (X-Forwarded-Server and X-Forwared-Host) I read in the source that
> > someone thinks it needs to go into the Via header instead. And as I can
> > read from the source, X-Forwarded-For is only sent when it's a reverse
> > proxy request in 2.0, and always sent in 1.3.
> 
> Oh yes... I remember now (memory rusty). If you can get a patch in
> before tomorrow, should be cool :)

Inline patch here, but I'm wondering if you want the X-Forwarded-For
header to be stuck inside the conditional too? 

Index: proxy_http.c
===================================================================
RCS file: /home/cvspublic/apache-1.3/src/modules/proxy/proxy_http.c,v
retrieving revision 1.98
diff -u -r1.98 proxy_http.c
--- proxy_http.c	21 Apr 2002 21:16:39 -0000	1.98
+++ proxy_http.c	29 May 2002 17:04:38 -0000
@@ -350,6 +350,20 @@
      * where the original request came from.
      */
     ap_table_mergen(req_hdrs, "X-Forwarded-For", r->connection->remote_ip);
+    if (r->proxyreq == PROXY_PASS) {
+        const char *buf;
+        /* Add X-Forwarded-Host: so that upstream knows what the
+         * original request hostname was.
+         */
+        if ((buf - ap_table_get(r->headers_in, "Host"))) {
+            ap_table_mergen(req_hdrs, "X-Forwarded-Host", buf);
+        }
+        /* Add X-Forwarded-Server: so that upstream knows what the
+         * name of this proxy server is (if there are more than one)
+         * XXX: This duplicates Via: - do we strictly need it?
+         */
+        ap_table_mergen(req_hdrs, "X-Forwarded-Server", r->server_hostname);
+    } 
 
     /* we don't yet support keepalives - but we will soon, I promise! */
     ap_table_set(req_hdrs, "Connection", "close");


-- 
  Thomas Eibner <http://thomas.eibner.dk/> DnsZone <http://dnszone.org/>
  mod_pointer <http://stderr.net/mod_pointer> <http://photos.eibner.dk/>
  !(C)<http://copywrong.dk/>                  <http://apachegallery.dk/>
          Putting the HEST in .COM <http://www.hestdesign.com/>

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Graham Leggett <mi...@sharp.fm>.
Thomas Eibner wrote:

> Ah yes, X-Forwarded-For is there, but not the two others there is in
> 2.0 (X-Forwarded-Server and X-Forwared-Host) I read in the source that
> someone thinks it needs to go into the Via header instead. And as I can
> read from the source, X-Forwarded-For is only sent when it's a reverse
> proxy request in 2.0, and always sent in 1.3.

Oh yes... I remember now (memory rusty). If you can get a patch in
before tomorrow, should be cool :)

Regards,
Graham
-- 
-----------------------------------------
minfrin@sharp.fm		"There's a moon
					over Bourbon Street
						tonight..."

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Thomas Eibner <th...@stderr.net>.
On Wed, May 29, 2002 at 07:10:25PM +0200, Graham Leggett wrote:
> Thomas Eibner wrote:
> 
> > Looking at apache-1.3 in cvs VS httpd-2.0 there seems to be a few
> > changes, and the X-Forwarded-* headers are some of them. I have a
> > patch ready if needed (with what I believe are your comments in
> > it).
> 
> Just checked - the X-Forwarded-For is definitely there in v1.3. Dunno
> about the send_bytes fix. Can someone check for me?

Ah yes, X-Forwarded-For is there, but not the two others there is in
2.0 (X-Forwarded-Server and X-Forwared-Host) I read in the source that
someone thinks it needs to go into the Via header instead. And as I can
read from the source, X-Forwarded-For is only sent when it's a reverse
proxy request in 2.0, and always sent in 1.3.

-- 
  Thomas Eibner <http://thomas.eibner.dk/> DnsZone <http://dnszone.org/>
  mod_pointer <http://stderr.net/mod_pointer> <http://photos.eibner.dk/>
  !(C)<http://copywrong.dk/>                  <http://apachegallery.dk/>
          Putting the HEST in .COM <http://www.hestdesign.com/>

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Graham Leggett <mi...@sharp.fm>.
Thomas Eibner wrote:

> Looking at apache-1.3 in cvs VS httpd-2.0 there seems to be a few
> changes, and the X-Forwarded-* headers are some of them. I have a
> patch ready if needed (with what I believe are your comments in
> it).

Just checked - the X-Forwarded-For is definitely there in v1.3. Dunno
about the send_bytes fix. Can someone check for me?

Regards,
Graham
-- 
-----------------------------------------
minfrin@sharp.fm		"There's a moon
					over Bourbon Street
						tonight..."

Re: [1.3] Proxy fixes and FWD: Re: [apache-modules] Setting bytes_sent in Request Record while generating all headers by myself in Apache 1.3]

Posted by Thomas Eibner <th...@stderr.net>.
On Wed, May 29, 2002 at 06:47:20PM +0200, Graham Leggett wrote:
> Thomas Eibner wrote:
> 
> > Anyone looked at the remaining open bugs in 1.3 and might want to include
> > this patch (and bug)?
> 
> Only if someone can verify that this patch actually does anything. The
> proxy has been largely rewritten since then, so this bug might not still
> be outstanding.
> 
> There is a release coming out in another day or two, I am stuck offline
> - can someone take a look at this fix and see if it works...?
>
> > Would it also be possible to have mod_proxy for 1.3 set the same
> > X-Forwarded-* headers as the 2.0 proxy does? Need patches for this?
> 
> I thought v1.3.24 already did this - don't remember if I added it to
> v1.3 as well, I am sure I did.

Looking at apache-1.3 in cvs VS httpd-2.0 there seems to be a few
changes, and the X-Forwarded-* headers are some of them. I have a
patch ready if needed (with what I believe are your comments in
it).

-- 
  Thomas Eibner <http://thomas.eibner.dk/> DnsZone <http://dnszone.org/>
  mod_pointer <http://stderr.net/mod_pointer> <http://photos.eibner.dk/>
  !(C)<http://copywrong.dk/>                  <http://apachegallery.dk/>
          Putting the HEST in .COM <http://www.hestdesign.com/>