websocks: Fix flush buffer order

This commit is contained in:
Oleksii Shevchuk 2018-10-11 19:21:41 +03:00
parent c3b89b27bd
commit f31b2e1b29
1 changed files with 11 additions and 3 deletions

View File

@ -265,9 +265,10 @@ class PupyWebSocketClient(PupyWebSocketTransport):
payload += "Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n"
payload += "Sec-WebSocket-Version: 13\r\n\r\n"
self.downstream.write(payload)
if __debug__:
logger.debug('Send upgrade request')
time.sleep(1)
self.downstream.write(payload)
def upstream_recv(self, data):
"""
@ -400,6 +401,9 @@ class PupyWebSocketServer(PupyWebSocketTransport):
"""
if not self.upgraded:
if __debug__:
logger.debug('WS: Wait for upgrade requet')
d = data.peek()
# Handle HTTP GET requests, strip websocket keys, verify UA etc
if not d.startswith('GET '):
@ -449,13 +453,17 @@ class PupyWebSocketServer(PupyWebSocketTransport):
data.drain(d.index('\r\n\r\n') + 4)
if __debug__:
logger.debug('Flush upgrade response')
self.downstream.write(payload)
if self.upgraded_buf:
if __debug__:
logger.debug('Flush buffer %d', len(self.upgraded_buf))
self.upgraded_buf.write_to(self.downstream)
self.downstream.write(payload)
self.upgraded = True