Skip to content

Commit 116e0b9

Browse files
author
S4Adam
committed
[py] Proxy url handling
1 parent 5a03ca4 commit 116e0b9

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

packages/python-runner/tecemux/proxy.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ async def handle_request(reader, writer, multiplexer):
5050
"""
5151

5252
request_status = await reader.readuntil(b'\r\n')
53-
53+
# Workaround...
54+
request_status = bytes('GET /', encoding='utf-8' )+'/'.join(request_status.decode().split('/')[3:]).encode('utf-8')
5455
tecemux_params, request_headers = HTTPProxy._extract_tecemux_details(await reader.readuntil(b'\r\n\r\n'))
5556

5657
channel = multiplexer.get_channel(tecemux_params.channel_id)
@@ -65,9 +66,17 @@ async def handle_request(reader, writer, multiplexer):
6566
writer.write(raw_response_headers)
6667

6768
headers = HTTPProxy._get_headers_as_dict(raw_response_headers, convert_keys_to_lowercase=True)
68-
69-
raw_response_data = await channel.read(int(headers['content-length']))
70-
writer.write(raw_response_data)
69+
if 'content-length' in headers:
70+
writer.write(await channel.read(int(headers['content-length'])))
71+
elif 'transfer-encoding' in headers and headers['transfer-encoding'] == 'chunked':
72+
while True:
73+
try:
74+
raw_response_data = await asyncio.wait_for(channel.read(8), timeout=3)
75+
if not raw_response_data:
76+
break
77+
writer.write(raw_response_data)
78+
except asyncio.TimeoutError:
79+
break
7180

7281
writer.write(b'\r\n')
7382
await writer.drain()

0 commit comments

Comments
 (0)