Ticket #1774: twisted-web-proxy.patch

File twisted-web-proxy.patch, 2.6 KB (added by ironfroggy, 11 years ago)

fixes GET command for http protocol server and clients

  • web/client.py

     
    3434
    3535    def connectionMade(self):
    3636        method = getattr(self.factory, 'method', 'GET')
    37         self.sendCommand(method, self.factory.path)
     37        addr = (self.factory.host, self.factory.port)
     38        if getattr(self.transport, 'addr', addr) == addr:
     39            getpath = self.factory.path
     40        else:
     41            getpath = "%s://%s:%s%s" % (self.factory.scheme,
     42                                        self.factory.host,
     43                                        self.factory.port,
     44                                        self.factory.path)
     45        self.sendCommand(method, getpath)
    3846        self.sendHeader('Host', self.factory.headers.get("host", self.factory.host))
    3947        self.sendHeader('User-Agent', self.factory.agent)
    4048        if self.factory.cookies:
    4149            l=[]
    42             for cookie, cookval in self.factory.cookies.items(): 
     50            for cookie, cookval in self.factory.cookies.items():
    4351                l.append('%s=%s' % (cookie, cookval))
    4452            self.sendHeader('Cookie', '; '.join(l))
    4553        data = getattr(self.factory, 'postdata', None)
  • web/http.py

     
    559559
    560560        self.method, self.uri = command, path
    561561        self.clientproto = version
    562         x = self.uri.split('?')
     562       
     563        if '://' in path:
     564            path = '/'+path.split('/', 3)[-1]
     565       
     566        x = path.split('?')
    563567
    564568        if len(x) == 1:
    565             self.path = self.uri
     569            self.path = path
    566570        else:
    567571            if len(x) != 2:
    568572                log.msg("May ignore parts of this invalid URI: %s"
     
    597601                        self.channel.transport.loseConnection()
    598602                        return
    599603                    raise
    600 
     604       
    601605        self.process()
    602606
    603607    def __repr__(self):
  • web/proxy.py

     
    113113            headers['host'] = host
    114114        self.content.seek(0, 0)
    115115        s = self.content.read()
    116         clientFactory = class_(self.method, rest, self.clientproto, headers,
     116        clientFactory = class_(self.method, self.uri, self.clientproto, headers,
    117117                               s, self)
    118118        reactor.connectTCP(host, port, clientFactory)
    119119