patch SSLTransport to return b'' instead of 0 as EOF

Websockets only treats b'' as EOF
This commit is contained in:
coletdjnz 2024-05-18 11:41:36 +12:00
parent db14294b5c
commit 0efd83b31a
No known key found for this signature in database
GPG Key ID: 91984263BB39894A
2 changed files with 16 additions and 2 deletions

View File

@ -118,6 +118,13 @@ def _io_refs(self, value):
def shutdown(self, *args, **kwargs):
self.socket.shutdown(*args, **kwargs)
def _wrap_ssl_read(self, *args, **kwargs):
res = super()._wrap_ssl_read(*args, **kwargs)
if res == 0:
# Websockets does not treat 0 as an EOF, rather only b''
return b''
return res
else:
SSLTransport = None
@ -270,9 +277,9 @@ def proxy_info_request(self, handler, target_domain=None, target_port=None, **re
handler.validate(request)
ws = handler.send(request)
ws.send('proxy_info')
socks_info = ws.recv()
proxy_info = ws.recv()
ws.close()
return json.loads(socks_info)
return json.loads(proxy_info)
class HTTPProxyWebSocketSecureTestContext(HTTPProxyWebSocketTestContext):

View File

@ -250,6 +250,13 @@ def setsockopt(self, *args, **kwargs):
def shutdown(self, *args, **kwargs):
self.unwrap()
self.socket.shutdown(*args, **kwargs)
def _wrap_ssl_read(self, *args, **kwargs):
res = super()._wrap_ssl_read(*args, **kwargs)
if res == 0:
# Websockets does not treat 0 as an EOF, rather only b''
return b''
return res
else:
WebsocketsSSLTransport = None