From 0b21ece801c6f950c7b9d291020002d635d643bc Mon Sep 17 00:00:00 2001 From: xia-chu <771730766@qq.com> Date: Sun, 29 Jun 2025 17:56:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96rtp=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Rtp/Decoder.cpp | 2 +- src/Rtp/PSDecoder.cpp | 2 +- src/Rtp/RtpServer.cpp | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Rtp/Decoder.cpp b/src/Rtp/Decoder.cpp index dec48958..42abe783 100644 --- a/src/Rtp/Decoder.cpp +++ b/src/Rtp/Decoder.cpp @@ -151,7 +151,7 @@ void DecoderImp::onTrack(int index, const Track::Ptr &track) { track->setIndex(index); auto &ref = _tracks[index]; if (ref.first) { - WarnL << "Already existed a same track: " << index << ", codec: " << track->getCodecName(); + // WarnL << "Already existed a same track: " << index << ", codec: " << track->getCodecName(); return; } ref.first = track; diff --git a/src/Rtp/PSDecoder.cpp b/src/Rtp/PSDecoder.cpp index 21014b4b..d7961869 100644 --- a/src/Rtp/PSDecoder.cpp +++ b/src/Rtp/PSDecoder.cpp @@ -56,7 +56,7 @@ ssize_t PSDecoder::input(const uint8_t *data, size_t bytes) { const char *PSDecoder::onSearchPacketTail(const char *data, size_t len) { try { auto ret = ps_demuxer_input(static_cast(_ps_demuxer), reinterpret_cast(data), len); - if (ret >= 0) { + if (ret >= 0 && ret <= (ssize_t)len) { // 解析成功全部或部分 [AUTO-TRANSLATED:a8085d34] // Parse successful, all or part return data + ret; diff --git a/src/Rtp/RtpServer.cpp b/src/Rtp/RtpServer.cpp index 580f8159..70656fdf 100644 --- a/src/Rtp/RtpServer.cpp +++ b/src/Rtp/RtpServer.cpp @@ -62,7 +62,12 @@ public: RtpProcess::Ptr getProcess() const { return _process; } void onRecvRtp(const Socket::Ptr &sock, const Buffer::Ptr &buf, struct sockaddr *addr) { - _process->inputRtp(true, sock, buf->data(), buf->size(), addr); + try { + _process->inputRtp(true, sock, buf->data(), buf->size(), addr); + } catch (std::exception &ex) { + _process->onDetach(SockException(Err_shutdown, ex.what())); + return; + } // 统计rtp接受情况,用于发送rr包 [AUTO-TRANSLATED:bd2fbe7e] // Count RTP reception status, used to send RR packets auto header = (RtpHeader *)buf->data();