소스 검색

Fix crash if the data is split between CR and LF (cf. irclog commit 68c577bc)

master
JustAnotherArchivist 3 년 전
부모
커밋
899cc26dd3
1개의 변경된 파일3개의 추가작업 그리고 4개의 파일을 삭제
  1. +3
    -4
      http2irc.py

+ 3
- 4
http2irc.py 파일 보기

@@ -495,13 +495,12 @@ class IRCClientProtocol(asyncio.Protocol):

def data_received(self, data):
self.logger.debug(f'Data received: {data!r}')
# Split received data on CRLF. If there's any data left in the buffer, prepend it to the first message and process that.
# If there's any data left in the buffer, prepend it to the data. Split on CRLF.
# Then, process all messages except the last one (since data might not end on a CRLF) and keep the remainder in the buffer.
# If data does end with CRLF, all messages will have been processed and the buffer will be empty again.
messages = data.split(b'\r\n')
if self.buffer:
self.message_received(self.buffer + messages[0])
messages = messages[1:]
data = self.buffer + data
messages = data.split(b'\r\n')
for message in messages[:-1]:
self.message_received(message)
self.buffer = messages[-1]


불러오는 중...
취소
저장