multiplex: Fix bug in rtcp_reader, finding correct handler when remote SSRC is not manually set

This commit is contained in:
Heikki Tampio 2023-07-31 09:39:52 +03:00
parent b17fa3d0ba
commit 10c14b9f99
1 changed files with 10 additions and 7 deletions

View File

@ -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();
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);
}
else if (p.first.get()->load() == 0) {
(void)rtcp_ptr->handle_incoming_packet(nullptr, 0, buffer.get(), (size_t)nread, nullptr);
}
}
map_mutex_.unlock();