diff --git a/trunk/src/app/srs_app_http_api.cpp b/trunk/src/app/srs_app_http_api.cpp index f9b7c5627..096cec496 100644 --- a/trunk/src/app/srs_app_http_api.cpp +++ b/trunk/src/app/srs_app_http_api.cpp @@ -832,6 +832,7 @@ srs_error_t SrsGoApiRtcPlay::do_serve_http(ISrsHttpResponseWriter* w, ISrsHttpMe // Parse req, the request json object, from body. SrsJsonObject* req = NULL; + SrsAutoFree(SrsJsonObject, req); if (true) { string req_json; if ((err = r->body_read_all(req_json)) != srs_success) { diff --git a/trunk/src/app/srs_app_rtc.cpp b/trunk/src/app/srs_app_rtc.cpp index 4c61a2c64..4cfbae405 100644 --- a/trunk/src/app/srs_app_rtc.cpp +++ b/trunk/src/app/srs_app_rtc.cpp @@ -538,6 +538,9 @@ srs_error_t SrsRtc::on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* forma } if (stream) { + char* stream_data = stream->data(); + SrsAutoFreeA(char, stream_data); + return rtp_opus_muxer->frame_to_packet(shared_audio, format, stream); } diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index a04c2f900..de87fbb83 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -1339,9 +1339,11 @@ void SrsRtcServer::clear() { for (int i = 0; i < (int)mmhdrs.size(); i++) { msghdr* hdr = &mmhdrs[i].msg_hdr; - for (int i = 0; i < (int)hdr->msg_iovlen; i++) { - iovec* iov = hdr->msg_iov + i; - delete (char*)iov->iov_base; + for (int j = (int)hdr->msg_iovlen - 1; j >= 0 ; j--) { + iovec* iov = hdr->msg_iov + j; + char* data = (char*)iov->iov_base; + srs_freep(data); + srs_freep(iov); } }