[bug] Entire TCP packet being received as a single command #1
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
async-circe currently uses AsyncReadExt::read() to read a line from the TCP stream, but that method in no way guarantees how many bytes it will read. Effectively, this can lead to a complete desynchronization of the protocol exchange if read() happens to finish even one byte before the CRLF.
Here's an example of circe reading an optimized (by the IRCd) TCP packet containing multiple messages:
where one log message corresponds to many actual IRC messages.
fixed by #df4a7a7ce