Ticket #1774: twisted-web-proxy.patch

File twisted-web-proxy.patch, 2.6 KB (added by ironfroggy, 9 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