You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Dongbo Bu <do...@usa.net> on 1997/09/02 13:30:03 UTC
mod_proxy/1085: ProxyRemote make a dead cycle.
>Number: 1085
>Category: mod_proxy
>Synopsis: ProxyRemote make a dead cycle.
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: apache (Apache HTTP Project)
>State: open
>Class: sw-bug
>Submitter-Id: apache
>Arrival-Date: Tue Sep 2 04:30:02 1997
>Originator: dongbobu@usa.net
>Organization:
apache
>Release: 1.2.0 1.2.4
>Environment:
AIX rock 1 4 001DEB36E000
GNU cc
>Description:
In Apache 1.2.0:
In the file proxy_http.c, line 172,
url +=7; /* skip http:// */
It is a bug for proxyremote ftp:// and others.
In Apache 1.2.4:
It still has a bug that the desthost is NOT correct when
proxyremote ftp://user:passwd@host.domain:port. The server will
send a head:
GET ftp://user:passwd@host.domain:port
Host: user:passwd@host.domain:port
In Apache 1.2.4:
When a cluster host who make proxyremote a cycle, then all
the machine will consume the resource and will be down.
I have a solution that add an extended header called PathPassed to
record all the host the request travelled, then when a machine found
that he has already been added in the PathPassed, then he would refuse
serve the request, so the cycle is cut off.
For an example:
In host tango:
(httpd.conf)
ProxyRemote ftp http://rock.ncic.ac.cn
In host rock:
(httpd.conf)
ProxyRemote ftp http://tango.ncic.ac.cn
A cycle is made!
But when PathPassed added, rock will forward
PathPassed: rock.ncic.ac.cn
to tango. And tango forward
PathPassed: rock.ncic.ac.cn, tango.ncic.ac.cn
to rock. But rock found that he is already included in the headers,
so he would NOT forward the request to tango. Then enevythingis OK.
Is it right?
ever
Dongbo Bu
>How-To-Repeat:
For an example:
In host tango:
(httpd.conf)
ProxyRemote ftp http://rock.ncic.ac.cn
In host rock:
(httpd.conf)
ProxyRemote ftp http://tango.ncic.ac.cn
A dead cycle is made!
>Fix:
I have a solution that add an extended header called PathPassed to
record all the host the request travelled, then when a machine found
that he has already been added in the PathPassed, then he would refuse
serve the request, so the cycle is cut off.
For an example:
In host tango:
(httpd.conf)
ProxyRemote ftp http://rock.ncic.ac.cn
In host rock:
(httpd.conf)
ProxyRemote ftp http://tango.ncic.ac.cn
A cycle is made!
But when PathPassed added, rock will forward
PathPassed: rock.ncic.ac.cn
to tango. And tango forward
PathPassed: rock.ncic.ac.cn, tango.ncic.ac.cn
to rock. But rock found that he is already included in the headers,
so he would NOT forward the request to tango. Then enevythingis OK.
%0
>Audit-Trail:
>Unformatted: