From d35854b25a67b3c072a64be3345efa258e9c45d0 Mon Sep 17 00:00:00 2001 From: Adam Hopkins Date: Tue, 26 Oct 2021 22:57:04 +0300 Subject: [PATCH] Cleanup websocket handchake response concat --- sanic/server/protocols/websocket_protocol.py | 23 +++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/sanic/server/protocols/websocket_protocol.py b/sanic/server/protocols/websocket_protocol.py index 674ec5a378..4f0708341d 100644 --- a/sanic/server/protocols/websocket_protocol.py +++ b/sanic/server/protocols/websocket_protocol.py @@ -133,21 +133,18 @@ async def websocket_handshake( ) raise ServerError(msg, status_code=500) if 100 <= resp.status_code <= 299: - rbody = "".join( - [ - "HTTP/1.1 ", - str(resp.status_code), - " ", - resp.reason_phrase, - "\r\n", - ] + first_line = ( + f"HTTP/1.1 {resp.status_code} {resp.reason_phrase}\r\n" + ).encode() + rbody = bytearray(first_line) + rbody += b"".join( + [f"{k}: {v}\r\n".encode() for k, v in resp.headers.items()] ) - rbody += "".join(f"{k}: {v}\r\n" for k, v in resp.headers.items()) + rbody += b"\r\n" if resp.body is not None: - rbody += f"\r\n{resp.body.decode('utf-8')}\r\n\r\n" - else: - rbody += "\r\n" - await super().send(rbody.encode()) + rbody += resp.body + rbody += b"\r\n\r\n" + await super().send(rbody) else: raise ServerError(resp.body, resp.status_code) self.websocket = WebsocketImplProtocol(