From 826e3002d38fdb0e4746984429e0390003f4ff99 Mon Sep 17 00:00:00 2001 From: Hu Chunming <2657262686@qq.com> Date: Wed, 31 Jul 2024 11:38:12 +0800 Subject: [PATCH] 断连后,5分钟未能建立新连接,退出 --- src/decoder/gb28181/rtp2/RTPReceiver2.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+), 0 deletions(-) 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; -- libgit2 0.21.4