From 5b98a272563e64d09e07c837abfff113607f5d3d Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 2 May 2014 12:44:38 +0800 Subject: [PATCH] fix mem leak in recv message error, always free msg --- trunk/src/rtmp/srs_protocol_rtmp.cpp | 1 - trunk/src/rtmp/srs_protocol_rtmp_stack.cpp | 1 + trunk/src/rtmp/srs_protocol_rtmp_stack.hpp | 4 ++++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/trunk/src/rtmp/srs_protocol_rtmp.cpp b/trunk/src/rtmp/srs_protocol_rtmp.cpp index 3b82e00f6..eaf69bc69 100644 --- a/trunk/src/rtmp/srs_protocol_rtmp.cpp +++ b/trunk/src/rtmp/srs_protocol_rtmp.cpp @@ -454,7 +454,6 @@ int SrsRtmpClient::connect_app(string app, string tc_url) if (true) { SrsConnectAppPacket* pkt = new SrsConnectAppPacket(); - pkt->command_object = SrsAmf0Any::object(); pkt->command_object->set("app", SrsAmf0Any::str(app.c_str())); pkt->command_object->set("swfUrl", SrsAmf0Any::str()); pkt->command_object->set("tcUrl", SrsAmf0Any::str(tc_url.c_str())); diff --git a/trunk/src/rtmp/srs_protocol_rtmp_stack.cpp b/trunk/src/rtmp/srs_protocol_rtmp_stack.cpp index 9aa632fb9..e5587d955 100644 --- a/trunk/src/rtmp/srs_protocol_rtmp_stack.cpp +++ b/trunk/src/rtmp/srs_protocol_rtmp_stack.cpp @@ -382,6 +382,7 @@ int SrsProtocol::recv_message(SrsMessage** pmsg) if (ret != ERROR_SOCKET_TIMEOUT && !srs_is_client_gracefully_close(ret)) { srs_error("recv interlaced message failed. ret=%d", ret); } + srs_freep(msg); return ret; } srs_verbose("entire msg received"); diff --git a/trunk/src/rtmp/srs_protocol_rtmp_stack.hpp b/trunk/src/rtmp/srs_protocol_rtmp_stack.hpp index 012de2113..99a2f4405 100644 --- a/trunk/src/rtmp/srs_protocol_rtmp_stack.hpp +++ b/trunk/src/rtmp/srs_protocol_rtmp_stack.hpp @@ -477,6 +477,10 @@ protected: public: std::string command_name; double transaction_id; + /** + * alloc in packet constructor, + * so, directly use it, never alloc again. + */ SrsAmf0Object* command_object; public: SrsConnectAppPacket();