uvgRTP icon indicating copy to clipboard operation
uvgRTP copied to clipboard

rtcp: deepcopy APP packet data and handle it internally

Open wowaser opened this issue 2 years ago • 0 comments

Currently, this function only creates a shallow copy of the name and payload, so if the original pointers are deleted it leads to undefined behavior.

rtp_error_t uvgrtp::rtcp::send_app_packet(const char* name, uint8_t subtype,
    size_t payload_len, const uint8_t* payload)
{
    std::string str(name);
    rtcp_app_packet packet = { name, subtype, payload_len, payload };
    packet_mutex_.lock();
    if (!app_packets_[name].empty())
    {
        LOG_WARN("Adding a new APP packet for sending when %llu packets are waiting to be sent",
            app_packets_[name].size());
    }
    app_packets_[name].push_back(packet);
    packet_mutex_.unlock();

    return RTP_OK;
}

My implementation handles allocation/deallocation internally.

wowaser avatar Jul 21 '22 15:07 wowaser