修复Web服务内存泄露、数据竞争与页面显示bug,适配x86编译
- 修复WebSocket推送无背压导致mongoose发送缓冲无限增长的内存泄露 - 为SystemData增加互斥锁,消除pushSystemData与主线程的数据竞争 - 修复网页状态文本判断反转、漏水告警阈值、FC状态、H2单位等显示bug - 按协议修正电池紧急状态枚举解码(0x3A-0x3D为1-4级报警) - 调整CMake适配系统安装的MOOS/IvP及jsoncpp,删除ARM专用build_debug.sh
This commit is contained in:
@@ -352,7 +352,9 @@ void HttpServer::pushSystemData() {
|
||||
LOG_F(ERROR, "System data pointer is null");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
std::lock_guard<std::mutex> dataLock(m_systemData->m_dataMutex);
|
||||
|
||||
// 序列化系统数据为JSON
|
||||
json j;
|
||||
|
||||
@@ -790,6 +792,9 @@ void HttpServer::pushSystemData() {
|
||||
// 发送给所有WebSocket客户端
|
||||
std::lock_guard<std::mutex> lock(ws_connections_mutex_);
|
||||
for (auto c : ws_connections_) {
|
||||
if (c->send.len > MAX_WS_BACKLOG) {
|
||||
continue;
|
||||
}
|
||||
mg_ws_send(c, msg.c_str(), msg.size(), WEBSOCKET_OP_TEXT);
|
||||
}
|
||||
}
|
||||
@@ -1057,6 +1062,9 @@ void HttpServer::monitorLogFile() {
|
||||
|
||||
std::lock_guard<std::mutex> lock(ws_connections_mutex_);
|
||||
for (auto c : ws_connections_) {
|
||||
if (c->send.len > MAX_WS_BACKLOG) {
|
||||
continue;
|
||||
}
|
||||
mg_ws_send(c, msg.c_str(), msg.size(), WEBSOCKET_OP_TEXT);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user