From ff225114ec64756654f1c535515fdd78e5fedc7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E6=A5=9A?= <771730766@qq.com> Date: Sat, 5 Aug 2023 09:25:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Drtsp=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E6=97=A0=E6=B3=95=E5=8F=91=E9=80=81rtp?= =?UTF-8?q?=E7=BB=99nat=E5=86=85=E6=92=AD=E6=94=BE=E5=99=A8=E7=9A=84bug=20?= =?UTF-8?q?(#2737=20#2740)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在udp connect rtsp播放器内网端口后,可能导致过滤掉其公网端口发送的打洞包; 从未无法完成与rtsp播放器udp端口的双向通信。 Socket::bindPeerAddr修改成软绑定时,只是保存发送目标地址,不会导致打洞包的过滤。 --- 3rdpart/ZLToolKit | 2 +- src/Rtsp/RtspSession.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/3rdpart/ZLToolKit b/3rdpart/ZLToolKit index 79db405b..d2016522 160000 --- a/3rdpart/ZLToolKit +++ b/3rdpart/ZLToolKit @@ -1 +1 @@ -Subproject commit 79db405ba43c29453c60c3e054d863ce6bd1ef29 +Subproject commit d2016522a0e4b1d8df51a78b7415fe148f7245ca diff --git a/src/Rtsp/RtspSession.cpp b/src/Rtsp/RtspSession.cpp index e9c69ac2..a660e6be 100644 --- a/src/Rtsp/RtspSession.cpp +++ b/src/Rtsp/RtspSession.cpp @@ -721,11 +721,11 @@ void RtspSession::handleReq_Setup(const Parser &parser) { auto peerAddr = SockUtil::make_sockaddr(get_peer_ip().data(), ui16RtpPort); //设置rtp发送目标地址 - pr.first->bindPeerAddr((struct sockaddr *) (&peerAddr)); + pr.first->bindPeerAddr((struct sockaddr *) (&peerAddr), 0, true); //设置rtcp发送目标地址 peerAddr = SockUtil::make_sockaddr(get_peer_ip().data(), ui16RtcpPort); - pr.second->bindPeerAddr((struct sockaddr *) (&peerAddr)); + pr.second->bindPeerAddr((struct sockaddr *) (&peerAddr), 0, true); //尝试获取客户端nat映射地址 startListenPeerUdpData(trackIdx);