mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +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