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): def shutdown(self, *args, **kwargs):
self.socket.shutdown(*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: else:
SSLTransport = None SSLTransport = None
@ -270,9 +277,9 @@ def proxy_info_request(self, handler, target_domain=None, target_port=None, **re
handler.validate(request) handler.validate(request)
ws = handler.send(request) ws = handler.send(request)
ws.send('proxy_info') ws.send('proxy_info')
socks_info = ws.recv() proxy_info = ws.recv()
ws.close() ws.close()
return json.loads(socks_info) return json.loads(proxy_info)
class HTTPProxyWebSocketSecureTestContext(HTTPProxyWebSocketTestContext): class HTTPProxyWebSocketSecureTestContext(HTTPProxyWebSocketTestContext):

View File

@ -250,6 +250,13 @@ def setsockopt(self, *args, **kwargs):
def shutdown(self, *args, **kwargs): def shutdown(self, *args, **kwargs):
self.unwrap() self.unwrap()
self.socket.shutdown(*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: else:
WebsocketsSSLTransport = None WebsocketsSSLTransport = None