mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
res/res_http_websocket: Don't send HTTP response fragmented.
This change makes it so that when accepting a WebSocket connection the HTTP response is sent as one packet instead of fragmented. Browsers don't like it when you send it fragmented. ASTERISK-25103 Change-Id: I9b82c4ec2949b0bce692ad0bf6f7cea9709e7f69
This commit is contained in:
@@ -781,13 +781,6 @@ int AST_OPTIONAL_API_NAME(ast_websocket_uri_cb)(struct ast_tcptls_session_instan
|
||||
return 0;
|
||||
}
|
||||
|
||||
fprintf(ser->f, "HTTP/1.1 101 Switching Protocols\r\n"
|
||||
"Upgrade: %s\r\n"
|
||||
"Connection: Upgrade\r\n"
|
||||
"Sec-WebSocket-Accept: %s\r\n",
|
||||
upgrade,
|
||||
websocket_combine_key(key, base64, sizeof(base64)));
|
||||
|
||||
/* RFC 6455, Section 4.1:
|
||||
*
|
||||
* 6. If the response includes a |Sec-WebSocket-Protocol| header
|
||||
@@ -798,11 +791,23 @@ int AST_OPTIONAL_API_NAME(ast_websocket_uri_cb)(struct ast_tcptls_session_instan
|
||||
* Connection_.
|
||||
*/
|
||||
if (protocol) {
|
||||
fprintf(ser->f, "Sec-WebSocket-Protocol: %s\r\n",
|
||||
fprintf(ser->f, "HTTP/1.1 101 Switching Protocols\r\n"
|
||||
"Upgrade: %s\r\n"
|
||||
"Connection: Upgrade\r\n"
|
||||
"Sec-WebSocket-Accept: %s\r\n"
|
||||
"Sec-WebSocket-Protocol: %s\r\n\r\n",
|
||||
upgrade,
|
||||
websocket_combine_key(key, base64, sizeof(base64)),
|
||||
protocol);
|
||||
} else {
|
||||
fprintf(ser->f, "HTTP/1.1 101 Switching Protocols\r\n"
|
||||
"Upgrade: %s\r\n"
|
||||
"Connection: Upgrade\r\n"
|
||||
"Sec-WebSocket-Accept: %s\r\n\r\n",
|
||||
upgrade,
|
||||
websocket_combine_key(key, base64, sizeof(base64)));
|
||||
}
|
||||
|
||||
fprintf(ser->f, "\r\n");
|
||||
fflush(ser->f);
|
||||
} else {
|
||||
|
||||
|
Reference in New Issue
Block a user