Commit ff225114 by 夏楚 Committed by GitHub

修复rtsp服务可能无法发送rtp给nat内播放器的bug (#2737 #2740)

在udp connect rtsp播放器内网端口后,可能导致过滤掉其公网端口发送的打洞包;
从未无法完成与rtsp播放器udp端口的双向通信。
Socket::bindPeerAddr修改成软绑定时,只是保存发送目标地址,不会导致打洞包的过滤。
parent 2935bc19
ZLToolKit @ d2016522
Subproject commit 79db405ba43c29453c60c3e054d863ce6bd1ef29
Subproject commit d2016522a0e4b1d8df51a78b7415fe148f7245ca
......@@ -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);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论