1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

for memory leak detect, move the payload create to message.

This commit is contained in:
winlin 2015-06-09 10:13:25 +08:00
parent 863dddde09
commit f347099fd1
3 changed files with 18 additions and 7 deletions

View file

@ -166,6 +166,18 @@ SrsCommonMessage::~SrsCommonMessage()
srs_freep(payload);
}
void SrsCommonMessage::create_payload(int size)
{
srs_freep(payload);
payload = new char[size];
srs_verbose("create payload for RTMP message. size=%d", size);
#ifdef SRS_MEM_WATCH
srs_memory_watch(payload, "RTMP.msg.payload", size);
#endif
}
SrsSharedPtrMessage::SrsSharedPtrPayload::SrsSharedPtrPayload()
{
payload = NULL;

View file

@ -283,8 +283,12 @@ public:
char* payload;
public:
SrsCommonMessage();
public:
virtual ~SrsCommonMessage();
public:
/**
* alloc the payload to specified size of bytes.
*/
virtual void create_payload(int size);
};
/**

View file

@ -30,7 +30,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_kernel_utility.hpp>
#include <srs_protocol_buffer.hpp>
#include <srs_rtmp_utility.hpp>
#include <srs_core_mem_watch.hpp>
// for srs-librtmp, @see https://github.com/simple-rtmp-server/srs/issues/213
#ifndef _WIN32
@ -1411,11 +1410,7 @@ int SrsProtocol::read_message_payload(SrsChunkStream* chunk, SrsCommonMessage**
// create msg payload if not initialized
if (!chunk->msg->payload) {
chunk->msg->payload = new char[chunk->header.payload_length];
srs_verbose("create payload for RTMP message. size=%d", chunk->header.payload_length);
#ifdef SRS_MEM_WATCH
srs_memory_watch(chunk->msg->payload, "msg.payload", chunk->header.payload_length);
#endif
chunk->msg->create_payload(chunk->header.payload_length);
}
// read payload to buffer