-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
websocket: fix message send corruption
- Fix a bug in EAGAIN handling when sending frames that led to a corrupted last byte of the frame sent. - Restore sanity to curl_ws_send() behaviour: - Partial writes are reported as OK with the actual number of payload bytes sent. - CURLE_AGAIN is only returned when none of the payload bytes (or for 0-length frames, not all of the frame header bytes) could be sent. - curl_ws_send() now behaves like a common send() call. - Change 'ws-data' test client to allow concurrent send/recv operations and vary frame sizes and repeat count. - Add DEBUG env var CURL_WS_CHUNK_EAGAIN to simulate blocking after a chunk of an encoded websocket frame has been sent. - Add tests. Prior to this change data corruption may occur when sending websocket messages due to two bugs: 1) 3e64569 (precedes 8.10.0) caused a data corruption bug in the last byte of frame of large messages. 2) curl_ws_send had non-traditional send behavior and could return CURLE_AGAIN with bytes sent and expect the caller to adjust buffer and buflen in a subsequent call. That behavior was not documented. Reported-by: [email protected] Fixes curl#15865 Fixes curl#15865 (comment) Closes curl#15901
- Loading branch information
Showing
7 changed files
with
298 additions
and
224 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.