diff --git a/src/Common/config.cpp b/src/Common/config.cpp index 58d4eb05..2216639a 100644 --- a/src/Common/config.cpp +++ b/src/Common/config.cpp @@ -158,10 +158,13 @@ onceToken token([](){ namespace Rtsp { #define RTSP_FIELD "rtsp." const char kAuthBasic[] = RTSP_FIELD"authBasic"; - +const char kHandshakeSecond[] = RTSP_FIELD"handshakeSecond"; +const char kKeepAliveSecond[] = RTSP_FIELD"keepAliveSecond"; onceToken token([](){ //默认Md5方式认证 mINI::Instance()[kAuthBasic] = 0; + mINI::Instance()[kHandshakeSecond] = 15; + mINI::Instance()[kKeepAliveSecond] = 15; },nullptr); } //namespace Rtsp @@ -170,10 +173,15 @@ onceToken token([](){ namespace Rtmp { #define RTMP_FIELD "rtmp." const char kModifyStamp[] = RTMP_FIELD"modifyStamp"; +const char kHandshakeSecond[] = RTMP_FIELD"handshakeSecond"; +const char kKeepAliveSecond[] = RTMP_FIELD"keepAliveSecond"; onceToken token([](){ mINI::Instance()[kModifyStamp] = true; + mINI::Instance()[kHandshakeSecond] = 15; + mINI::Instance()[kKeepAliveSecond] = 15; },nullptr); + } //namespace RTMP diff --git a/src/Common/config.h b/src/Common/config.h index 07ef98c8..0dc5639c 100644 --- a/src/Common/config.h +++ b/src/Common/config.h @@ -194,12 +194,19 @@ extern const char kMaxReqSize[]; namespace Rtsp { //是否优先base64方式认证?默认Md5方式认证 extern const char kAuthBasic[]; +//握手超时时间,默认15秒 +extern const char kHandshakeSecond[]; +//维持链接超时时间,默认15秒 +extern const char kKeepAliveSecond[]; } //namespace Rtsp ////////////RTMP服务器配置/////////// namespace Rtmp { extern const char kModifyStamp[]; - +//握手超时时间,默认15秒 +extern const char kHandshakeSecond[]; +//维持链接超时时间,默认15秒 +extern const char kKeepAliveSecond[]; } //namespace RTMP diff --git a/src/Rtmp/RtmpSession.cpp b/src/Rtmp/RtmpSession.cpp index 7c4120aa..2c06342a 100644 --- a/src/Rtmp/RtmpSession.cpp +++ b/src/Rtmp/RtmpSession.cpp @@ -63,14 +63,17 @@ void RtmpSession::onError(const SockException& err) { } void RtmpSession::onManager() { - if (_ticker.createdTime() > 15 * 1000) { + GET_CONFIG(uint32_t,handshake_sec,Rtmp::kKeepAliveSecond); + GET_CONFIG(uint32_t,keep_alive_sec,Rtmp::kKeepAliveSecond); + + if (_ticker.createdTime() > handshake_sec * 1000) { if (!_pRingReader && !_pPublisherSrc) { shutdown(SockException(Err_timeout,"illegal connection")); } } if (_pPublisherSrc) { //publisher - if (_ticker.elapsedTime() > 15 * 1000) { + if (_ticker.elapsedTime() > keep_alive_sec * 1000) { shutdown(SockException(Err_timeout,"recv data from rtmp pusher timeout")); } } diff --git a/src/Rtsp/RtspSession.cpp b/src/Rtsp/RtspSession.cpp index 6a7a9f2b..194191f9 100644 --- a/src/Rtsp/RtspSession.cpp +++ b/src/Rtsp/RtspSession.cpp @@ -111,7 +111,10 @@ void RtspSession::onError(const SockException& err) { } void RtspSession::onManager() { - if (_ticker.createdTime() > 15 * 1000) { + GET_CONFIG(uint32_t,handshake_sec,Rtsp::kKeepAliveSecond); + GET_CONFIG(uint32_t,keep_alive_sec,Rtsp::kKeepAliveSecond); + + if (_ticker.createdTime() > handshake_sec * 1000) { if (_strSession.size() == 0) { shutdown(SockException(Err_timeout,"illegal connection")); return; @@ -119,7 +122,7 @@ void RtspSession::onManager() { } - if ((_rtpType == Rtsp::RTP_UDP || _pushSrc ) && _ticker.elapsedTime() > 15 * 1000) { + if ((_rtpType == Rtsp::RTP_UDP || _pushSrc ) && _ticker.elapsedTime() > keep_alive_sec * 1000) { //如果是推流端或者rtp over udp类型的播放端,那么就做超时检测 shutdown(SockException(Err_timeout,"rtp over udp session timeouted")); return;