WS_LOGE("WS: Failed to allocate memory for parser");
return NULL;
}
-
- // 初始化全局缓存
- if (!g_ws_buffer) {
- WS_LOGI("WS: Allocating global buffer (%d bytes)", WS_BUFFER_SIZE);
- g_ws_buffer = (uint8_t*)malloc(WS_BUFFER_SIZE);
- if (!g_ws_buffer) {
+ parser->buffer = (uint8_t*)malloc(WS_BUFFER_SIZE);
+ if (!parser->buffer) {
WS_LOGE("WS: Failed to allocate global buffer");
free(parser);
return NULL;
- }
- }
+ }
g_parser_count++;
WS_LOGI("WS: Parser count: %d", g_parser_count);
// 初始化解析器状态
parser->state = WS_STATE_START;
- parser->buffer = g_ws_buffer;
+
parser->buffer_pos = 0;
parser->payload_remaining = 0;
parser->mask_pos = 0;
// 销毁解析器
void ws_parser_destroy(ws_parser_t* parser) {
if (parser) {
+
+ if(parser->buffer)
+ free(parser->buffer);
+
free(parser);
g_parser_count--;