ws.c

Branch


Log

Author Commit Date CI Message
icy17 628f39bb 2024-08-12T10:00:44 ws: fix potential NULL pointer dereference
Dmitry Ilyin 00c94bea 2024-07-22T21:47:53 ws: allow Upgrade in Connection header anywhere This will make it work for Firefox, which uses "Connection: keep-alive, Upgrade" Reimplemented our own evutil_ascii_strcasestr function (same as non-portable strcasestr)
Calin Culianu 15b9b6f0 2023-10-17T12:45:33 Apply suggestions from code review Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
Calin Culianu b828c4ab 2023-10-16T15:25:12 Added 10MiB recv limit for WS frames, also a small nit - Added WS_MAX_RECV_FRAME_SZ, if a received frame exceeds this limit (10 MiB), error out. This is a DoS prevention measure. - Also redid the unmasking code in get_ws_frame(), to avoid assumptions about the size of an unsigned int and some casting, and avoid memcpy(), just use the mask bytes from the buffer that are already there to unmask.
Calin Culianu 7fbbe86f 2023-10-14T23:53:36 Fix unaligned access + missing frame length get_ws_frame: - had potentially unaligned access; fixed. - was not reading the full 8 bytes in the 64-bit case (was using the incorrect htons); fixed. make_ws_frame: - wasn't writing the length in the 8-byte case. Also switched both functions to use size_t rather than int where appropriate.
DmiTriy Fedchenko 0797e207 2023-08-02T18:37:42 Fixed misaligned address access
Dmitry Ilyin f39ad1c4 2023-08-31T22:38:41 ws: replace evws_send with evws_send_text/evws_send_binary (ABI breakage) (#1500) Replace evws_send with evws_send_text, and introduce new API - evws_send_binary, that can be used to send binary frames. But note, that this commit breaks the ABI compatibility, but it should be OK, since there was only alpha release with evws_send, and nobody should rely on this, and I hope nobody does (we decided to go this way to avoid supporting deprecated API).
Azat Khuzhin 56d380b9 2022-11-12T18:45:13 ws: ignore case while comparing values of Upgrade/Connection headers Cc: @widgetii Fixes: #1373
Leon George 3ec3b469 2022-10-23T13:47:23 ws: fix compile error on centos 7 - very old compiler (#1359) * http: fix typo * ws: fix comile error On CentOS: CC ws.lo ws.c: In function 'get_ws_frame': ws.c:244:3: error: 'for' loop initial declarations are only allowed in C99 mode for (int i = 0; i < payload_len; i++) { ^ ws.c:244:3: note: use option -std=c99 or -std=gnu99 to compile your code
Dmitry Ilyin e8f5a61d 2022-10-12T22:15:21 Remove bad copy-paste
Dmitry Ilyin c2ecb4ac 2022-10-12T14:13:44 Add locks for server WS, fixes #1357
Dmitry Ilyin 53f9c420 2022-09-14T13:33:13 Fix conflict with SHA1 function from openssl
Dmitry Ilyin e8313084 2022-09-12T22:16:56 Add minimal WebSocket server implementation for evhttp (#1322) This adds few functions to use evhttp-based webserver to handle incoming WebSockets connections. We've tried to use both libevent and libwebsockets in our application, but found that we need to have different ports at the same time to handle standard HTTP and WebSockets traffic. This change can help to stick only with libevent library. Implementation was inspired by modified Libevent source code in ipush project [1]. [1]: https://github.com/sqfasd/ipush/tree/master/deps/libevent-2.0.21-stable Also, WebSocket-based chat server was added as a sample.