Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/tor2web/t2w.py b/tor2web/t2w.py
- index 72c59a0..cc38ef4 100644
- --- a/tor2web/t2w.py
- +++ b/tor2web/t2w.py
- @@ -432,6 +432,7 @@ class T2WRequest(http.Request):
- self.transport = StringTransport() if queued else self.channel.transport
- self.obj = Tor2webObj()
- + self.upgrade = 0
- self.var = Storage()
- self.var['version'] = __version__
- self.var['basehost'] = config.basehost
- @@ -707,12 +708,21 @@ class T2WRequest(http.Request):
- self.obj.headers.removeHeader(b'x-forwarded-for')
- self.obj.headers.setRawHeaders(b'host', [self.obj.onion])
- - self.obj.headers.setRawHeaders(b'connection', [b'keep-alive'])
- - self.obj.headers.setRawHeaders(b'accept-encoding', [b'gzip, chunked'])
- self.obj.headers.setRawHeaders(b'x-tor2web', [b'1'])
- self.obj.headers.setRawHeaders(b'x-forwarded-host', [req.host])
- self.obj.headers.setRawHeaders(b'x-forwarded-proto', [b'http' if config.transport == 'HTTP' else b'https'])
- + connectionHeaders = request.headers.getRawHeaders(b'connection', [])
- + connectionHeaders = ','.join(connectionHeaders).split(',')
- + connectionHeaders = list(map(lambda x: x.strip(), connectionHeaders))
- + if b'upgrade' in connectionHeaders:
- + self.upgrade = 1
- + # self.obj.headers.setRawHeaders(b'connection', list(set([b'close']).union(request.headers.getRawHeaders(b'connection'))))
- + # self.obj.headers.setRawHeaders(b'connection', [b'upgrade'])
- + else:
- + self.obj.headers.setRawHeaders(b'connection', [b'keep-alive'])
- + self.obj.headers.setRawHeaders(b'accept-encoding', [b'gzip, chunked'])
- +
- return True
- @defer.inlineCallbacks
- @@ -1046,6 +1056,9 @@ class T2WRequest(http.Request):
- self.setHeaders()
- + if self.upgrade == 2:
- + # TODO: Here we want to grab the socket and run.
- +
- # if there's no response, we're done.
- if not response.length:
- self.setHeader(b'content-length', intToBytes(0))
- @@ -1105,6 +1118,14 @@ class T2WRequest(http.Request):
- def processResponseHeaders(self, headers):
- rpc("update_stats", str(self.obj.onion.replace(".onion", "")))
- + connectionHeaders = headers.getRawHeaders(b'connection', [])
- + connectionHeaders = ','.join(connectionHeaders).split(',')
- + connectionHeaders = list(map(lambda x: x.strip(), connectionHeaders))
- + # TODO: The following is bad, die of embarrassment.
- + # if self.upgrade != 1 and and b'upgrade' in connectionHeaders:
- + if self.upgrade == 1 and b'upgrade' in connectionHeaders:
- + self.upgrade = 2
- +
- for key, values in headers.getAllRawHeaders():
- self.handleHeader(key, values)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement