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]);
|
uint32_t sender_ssrc = ntohl(*(uint32_t*)&buffer.get()[0 + RTCP_HEADER_SIZE]);
|
||||||
map_mutex_.lock();
|
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_) {
|
for (auto& p : rtcps_map_) {
|
||||||
std::shared_ptr<uvgrtp::rtcp> rtcp_ptr = p.second;
|
std::shared_ptr<uvgrtp::rtcp> rtcp_ptr = p.second;
|
||||||
if (sender_ssrc == p.first.get()->load()) {
|
if (sender_ssrc == p.first.get()->load()) {
|
||||||
(void)rtcp_ptr->handle_incoming_packet(nullptr, 0, buffer.get(), (size_t)nread, nullptr);
|
(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();
|
map_mutex_.unlock();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue