multiplex: Fix bug in rtcp_reader, finding correct handler when remote SSRC is not manually set
This commit is contained in:
parent
b17fa3d0ba
commit
10c14b9f99
|
@ -73,13 +73,16 @@ void uvgrtp::rtcp_reader::rtcp_report_reader() {
|
|||
{
|
||||
uint32_t sender_ssrc = ntohl(*(uint32_t*)&buffer.get()[0 + RTCP_HEADER_SIZE]);
|
||||
map_mutex_.lock();
|
||||
for (auto& p : rtcps_map_) {
|
||||
std::shared_ptr<uvgrtp::rtcp> rtcp_ptr = p.second;
|
||||
if (sender_ssrc == p.first.get()->load()) {
|
||||
(void)rtcp_ptr->handle_incoming_packet(nullptr, 0, buffer.get(), (size_t)nread, nullptr);
|
||||
}
|
||||
else if (p.first.get()->load() == 0) {
|
||||
(void)rtcp_ptr->handle_incoming_packet(nullptr, 0, buffer.get(), (size_t)nread, nullptr);
|
||||
if (rtcps_map_.size() == 1) {
|
||||
auto& ptr = rtcps_map_.begin()->second;
|
||||
(void)ptr->handle_incoming_packet(nullptr, 0, buffer.get(), (size_t)nread, nullptr);
|
||||
}
|
||||
else {
|
||||
for (auto& p : rtcps_map_) {
|
||||
std::shared_ptr<uvgrtp::rtcp> rtcp_ptr = p.second;
|
||||
if (sender_ssrc == p.first.get()->load()) {
|
||||
(void)rtcp_ptr->handle_incoming_packet(nullptr, 0, buffer.get(), (size_t)nread, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
map_mutex_.unlock();
|
||||
|
|
Loading…
Reference in New Issue