Commit 895e93cb by xia-chu

端口池分配端口改成无序分配

解决zlmediakit重启后端口重复分配导致国标串流问题
parent 0c80f0c1
......@@ -8,12 +8,13 @@
* may be found in the AUTHORS file in the root of the source tree.
*/
#include <cstdlib>
#include <cinttypes>
#include <random>
#include "Rtsp.h"
#include "Common/Parser.h"
#include "Common/config.h"
#include "Network/Socket.h"
#include <cinttypes>
#include <cstdlib>
using namespace std;
using namespace toolkit;
......@@ -392,9 +393,13 @@ public:
private:
void setRange(uint16_t start_pos, uint16_t end_pos) {
std::mt19937 rng(std::random_device {}());
lock_guard<recursive_mutex> lck(_pool_mtx);
auto it = _port_pair_pool.begin();
while (start_pos < end_pos) {
_port_pair_pool.emplace_back(start_pos++);
// 随机端口排序,防止重启后导致分配的端口重复
_port_pair_pool.insert(it, start_pos++);
it = _port_pair_pool.begin() + (rng() % (1 + _port_pair_pool.size()));
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论