mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-25 20:27:34 +08:00
端口池分配端口改成无序分配
解决zlmediakit重启后端口重复分配导致国标串流问题
This commit is contained in:
parent
0c80f0c13c
commit
895e93cb6a
@ -8,12 +8,13 @@
|
|||||||
* may be found in the AUTHORS file in the root of the source tree.
|
* may be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cinttypes>
|
||||||
|
#include <random>
|
||||||
#include "Rtsp.h"
|
#include "Rtsp.h"
|
||||||
#include "Common/Parser.h"
|
#include "Common/Parser.h"
|
||||||
#include "Common/config.h"
|
#include "Common/config.h"
|
||||||
#include "Network/Socket.h"
|
#include "Network/Socket.h"
|
||||||
#include <cinttypes>
|
|
||||||
#include <cstdlib>
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace toolkit;
|
using namespace toolkit;
|
||||||
@ -392,9 +393,13 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void setRange(uint16_t start_pos, uint16_t end_pos) {
|
void setRange(uint16_t start_pos, uint16_t end_pos) {
|
||||||
|
std::mt19937 rng(std::random_device {}());
|
||||||
lock_guard<recursive_mutex> lck(_pool_mtx);
|
lock_guard<recursive_mutex> lck(_pool_mtx);
|
||||||
|
auto it = _port_pair_pool.begin();
|
||||||
while (start_pos < end_pos) {
|
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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user