1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-13 20:01:56 +00:00

RTC: Fix memory leak

This commit is contained in:
winlin 2020-05-29 17:07:49 +08:00
parent a78b6b8cda
commit 1c5ccaffc7

View file

@ -754,7 +754,10 @@ srs_error_t SrsRtcPlayer::do_send_packets(const std::vector<SrsRtpPacket2*>& pkt
iovec* iov = new iovec(); iovec* iov = new iovec();
SrsAutoFree(iovec, iov); 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; iov->iov_len = kRtpPacketSize;
// Marshal packet to bytes in iovec. // Marshal packet to bytes in iovec.
@ -788,6 +791,9 @@ srs_error_t SrsRtcPlayer::do_send_packets(const std::vector<SrsRtpPacket2*>& pkt
payload->payload = new char[payload->nn_payload]; payload->payload = new char[payload->nn_payload];
memcpy((void*)payload->payload, iov->iov_base, iov->iov_len); 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) { if (nack->header.get_ssrc() == video_ssrc) {
video_queue_->set(nack->header.get_sequence(), nack); video_queue_->set(nack->header.get_sequence(), nack);
} else { } else {