Fixes a bug in WebRTC NACK packet recovery mechanism where recovered packets were being discarded instead of processed. In `SrsRtcRecvTrack::on_nack()`, when a retransmitted packet arrived (found in NACK receiver), the method would: 1. ✅ Remove the packet from NACK receiver (correct) 2. ❌ Return early without adding the packet to RTP queue (BUG) This caused recovered packets to be lost, defeating the purpose of the NACK mechanism and potentially causing media quality issues. Restructured the control flow in `on_nack()` to ensure both new and recovered packets reach the packet insertion logic: - **Before**: Early return for recovered packets → packets discarded - **After**: Conditional NACK management + unified packet processing → all packets queued Closes #3820 --------- Co-authored-by: Haibo Chen <495810242@qq.com> Co-authored-by: OSSRS-AI <winlinam@gmail.com> |
||
|---|---|---|
| .. | ||
| 3rdparty | ||
| auto | ||
| conf | ||
| doc | ||
| etc/init.d | ||
| gdb | ||
| ide/srs_clion | ||
| packaging/redhat | ||
| research | ||
| scripts | ||
| src | ||
| usr/lib/systemd/system | ||
| .gitignore | ||
| AUTHORS.md | ||
| AUTHORS.txt | ||
| configure | ||
| Dockerfile.builds | ||
| Dockerfile.cov | ||
| Dockerfile.pkg | ||
| Dockerfile.test | ||