struct connectdata *conn = data->conn;
struct websocket *wsp = &data->req.p.http->ws;
struct ws_conn *wsc = &conn->proto.ws;
- CURLcode result;
+ CURLcode result = CURLE_OK;
/* Verify the Sec-WebSocket-Accept response.
subprotocol not requested by the client), the client MUST Fail
the WebSocket Connection. */
- /* 4 bytes random */
- result = Curl_rand(data, (unsigned char *)&ws->ws.mask, sizeof(ws->ws.mask));
- if(result)
- return result;
-
- infof(data, "Received 101, switch to WebSocket; mask %02x%02x%02x%02x",
- ws->ws.mask[0], ws->ws.mask[1], ws->ws.mask[2], ws->ws.mask[3]);
+ infof(data, "Received 101, switch to WebSocket");
Curl_dyn_init(&wsc->early, data->set.buffer_size);
if(nread) {
result = Curl_dyn_addn(&wsc->early, mem, nread);
firstbyte);
infof(data, "WS: send payload len %u", (int)len);
+ /* 4 bytes random */
+ {
+ CURLcode result = Curl_rand(data, (unsigned char *)&ws->ws.mask,
+ sizeof(ws->ws.mask));
+ if(result)
+ return 0;
+ }
+
+#ifdef DEBUGBUILD
+ if(getenv("CURL_WS_FORCE_ZERO_MASK"))
+ /* force the bit mask to 0x00000000, effectively disabling masking */
+ memset(&ws->ws.mask, 0, sizeof(ws->ws.mask));
+#endif
+
/* 4 bytes mask */
memcpy(&out[outi], &ws->ws.mask, 4);