>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: [EMAIL PROTECTED] >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:[EMAIL PROTECTED]:port. The server will send a head: GET ftp://user:[EMAIL PROTECTED]:port Host: user:[EMAIL PROTECTED]: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:
