diff --git a/src/decoder/gb28181/rtp2/RTPReceiver2.cpp b/src/decoder/gb28181/rtp2/RTPReceiver2.cpp index 84565b5..478e5e0 100644 --- a/src/decoder/gb28181/rtp2/RTPReceiver2.cpp +++ b/src/decoder/gb28181/rtp2/RTPReceiver2.cpp @@ -16,6 +16,13 @@ const int MAX_RTP_BUFFER_SIZE = 1024*1024*10; #define Server_cache_max_size 4194304 // 1M = 1 * 1024 * 1024 = 1048576 字节 #define Server_rtp_max_size 1800 +static long long get_cur_time_second(){ + chrono::time_point tpMicro + = chrono::time_point_cast(chrono::system_clock::now()); + + return tpMicro.time_since_epoch().count(); +} + RTPReceiver2::RTPReceiver2() { @@ -209,6 +216,8 @@ int RTPReceiver2::tcp_server() { bool bFilter = false; + long long last_time = get_cur_time_second(); + while (!m_bRtpExit) { // LOG_INFO("阻塞监听新连接..."); @@ -221,11 +230,20 @@ int RTPReceiver2::tcp_server() { LOG_WARN("accept connection warn"); bFilter = true; } + + long long cur_time = get_cur_time_second(); + if (cur_time - last_time > 300) { + // 5分钟未能建立新连接,退出 + m_bRtpExit = true; + break; + } std::this_thread::sleep_for(std::chrono::milliseconds(5)); continue; } // 阻塞接收请求 end + + last_time = get_cur_time_second(); LOG_INFO("发现新连接:clientFd={}", clientFd); bFilter = false;