From 1c5ccaffc71dd8e6877e7977a533c4b3756a7f51 Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 29 May 2020 17:07:49 +0800 Subject: [PATCH] RTC: Fix memory leak --- trunk/src/app/srs_app_rtc_conn.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 0824aa07a..13578b788 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -754,7 +754,10 @@ srs_error_t SrsRtcPlayer::do_send_packets(const std::vector& pkt iovec* iov = new iovec(); SrsAutoFree(iovec, iov); - iov->iov_base = new char[kRtpPacketSize]; + char* iov_base = new char[kRtpPacketSize]; + SrsAutoFreeA(char, iov_base); + + iov->iov_base = iov_base; iov->iov_len = kRtpPacketSize; // Marshal packet to bytes in iovec. @@ -788,6 +791,9 @@ srs_error_t SrsRtcPlayer::do_send_packets(const std::vector& pkt payload->payload = new char[payload->nn_payload]; memcpy((void*)payload->payload, iov->iov_base, iov->iov_len); + nack->shared_msg = new SrsSharedPtrMessage(); + nack->shared_msg->wrap(payload->payload, payload->nn_payload); + if (nack->header.get_ssrc() == video_ssrc) { video_queue_->set(nack->header.get_sequence(), nack); } else {