diff --git a/server/WebApi.cpp b/server/WebApi.cpp index 33ed0cbd..7f2de674 100644 --- a/server/WebApi.cpp +++ b/server/WebApi.cpp @@ -762,19 +762,23 @@ void installWebApi() { CHECK_ARGS("port", "enable_tcp", "stream_id"); auto stream_id = allArgs["stream_id"]; + + lock_guard lck(s_rtpServerMapMtx); + if(s_rtpServerMap.find(stream_id) != s_rtpServerMap.end()) { + //为了防止RtpProcess所有权限混乱的问题,不允许重复添加相同的stream_id + throw InvalidArgsException("该stream_id已存在"); + } + RtpServer::Ptr server = std::make_shared(); server->start(allArgs["port"], stream_id, allArgs["enable_tcp"].as()); - server->setOnDetach([stream_id]() { //设置rtp超时移除事件 lock_guard lck(s_rtpServerMapMtx); s_rtpServerMap.erase(stream_id); }); - lock_guard lck(s_rtpServerMapMtx); - //保存对象,强制覆盖 - s_rtpServerMap[stream_id] = server; - + //保存对象 + s_rtpServerMap.emplace(stream_id, server); //回复json val["port"] = server->getPort(); });