mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Support address sanitizer for utest and fix some leaks. (#3242)
* MP4: Fix memory leak when error. * Kernel: Support free global objects for utest. * HTTP: Fix memory leak when error. * MP4: Support more sample rate for audio. * RTMP: Support free field for utest. * UTest: Support address sanitizer.
This commit is contained in:
parent
be0241efdb
commit
368356c223
18 changed files with 360 additions and 154 deletions
|
@ -689,12 +689,14 @@ srs_error_t SrsHttpServeMux::handle(std::string pattern, ISrsHttpHandler* handle
|
|||
srs_assert(handler);
|
||||
|
||||
if (pattern.empty()) {
|
||||
srs_freep(handler);
|
||||
return srs_error_new(ERROR_HTTP_PATTERN_EMPTY, "empty pattern");
|
||||
}
|
||||
|
||||
if (entries.find(pattern) != entries.end()) {
|
||||
SrsHttpMuxEntry* exists = entries[pattern];
|
||||
if (exists->explicit_match) {
|
||||
srs_freep(handler);
|
||||
return srs_error_new(ERROR_HTTP_PATTERN_DUPLICATED, "pattern=%s exists", pattern.c_str());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3331,6 +3331,12 @@ SrsCreateStreamPacket::~SrsCreateStreamPacket()
|
|||
srs_freep(command_object);
|
||||
}
|
||||
|
||||
void SrsCreateStreamPacket::set_command_object(SrsAmf0Any* v)
|
||||
{
|
||||
srs_freep(command_object);
|
||||
command_object = v;
|
||||
}
|
||||
|
||||
srs_error_t SrsCreateStreamPacket::decode(SrsBuffer* stream)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
@ -3509,6 +3515,12 @@ SrsFMLEStartPacket::~SrsFMLEStartPacket()
|
|||
srs_freep(command_object);
|
||||
}
|
||||
|
||||
void SrsFMLEStartPacket::set_command_object(SrsAmf0Any* v)
|
||||
{
|
||||
srs_freep(command_object);
|
||||
command_object = v;
|
||||
}
|
||||
|
||||
srs_error_t SrsFMLEStartPacket::decode(SrsBuffer* stream)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
@ -3613,6 +3625,18 @@ SrsFMLEStartResPacket::~SrsFMLEStartResPacket()
|
|||
srs_freep(args);
|
||||
}
|
||||
|
||||
void SrsFMLEStartResPacket::set_args(SrsAmf0Any* v)
|
||||
{
|
||||
srs_freep(args);
|
||||
args = v;
|
||||
}
|
||||
|
||||
void SrsFMLEStartResPacket::set_command_object(SrsAmf0Any* v)
|
||||
{
|
||||
srs_freep(command_object);
|
||||
command_object = v;
|
||||
}
|
||||
|
||||
srs_error_t SrsFMLEStartResPacket::decode(SrsBuffer* stream)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
@ -3691,6 +3715,12 @@ SrsPublishPacket::~SrsPublishPacket()
|
|||
srs_freep(command_object);
|
||||
}
|
||||
|
||||
void SrsPublishPacket::set_command_object(SrsAmf0Any* v)
|
||||
{
|
||||
srs_freep(command_object);
|
||||
command_object = v;
|
||||
}
|
||||
|
||||
srs_error_t SrsPublishPacket::decode(SrsBuffer* stream)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
@ -3961,6 +3991,18 @@ SrsPlayResPacket::~SrsPlayResPacket()
|
|||
srs_freep(desc);
|
||||
}
|
||||
|
||||
void SrsPlayResPacket::set_command_object(SrsAmf0Any* v)
|
||||
{
|
||||
srs_freep(command_object);
|
||||
command_object = v;
|
||||
}
|
||||
|
||||
void SrsPlayResPacket::set_desc(SrsAmf0Object* v)
|
||||
{
|
||||
srs_freep(desc);
|
||||
desc = v;
|
||||
}
|
||||
|
||||
int SrsPlayResPacket::get_prefer_cid()
|
||||
{
|
||||
return RTMP_CID_OverStream;
|
||||
|
@ -4012,6 +4054,12 @@ SrsOnBWDonePacket::~SrsOnBWDonePacket()
|
|||
srs_freep(args);
|
||||
}
|
||||
|
||||
void SrsOnBWDonePacket::set_args(SrsAmf0Any* v)
|
||||
{
|
||||
srs_freep(args);
|
||||
args = v;
|
||||
}
|
||||
|
||||
int SrsOnBWDonePacket::get_prefer_cid()
|
||||
{
|
||||
return RTMP_CID_OverConnection;
|
||||
|
@ -4061,6 +4109,18 @@ SrsOnStatusCallPacket::~SrsOnStatusCallPacket()
|
|||
srs_freep(data);
|
||||
}
|
||||
|
||||
void SrsOnStatusCallPacket::set_args(SrsAmf0Any* v)
|
||||
{
|
||||
srs_freep(args);
|
||||
args = v;
|
||||
}
|
||||
|
||||
void SrsOnStatusCallPacket::set_data(SrsAmf0Object* v)
|
||||
{
|
||||
srs_freep(data);
|
||||
data = v;
|
||||
}
|
||||
|
||||
int SrsOnStatusCallPacket::get_prefer_cid()
|
||||
{
|
||||
return RTMP_CID_OverStream;
|
||||
|
@ -4111,6 +4171,12 @@ SrsOnStatusDataPacket::~SrsOnStatusDataPacket()
|
|||
srs_freep(data);
|
||||
}
|
||||
|
||||
void SrsOnStatusDataPacket::set_data(SrsAmf0Object* v)
|
||||
{
|
||||
srs_freep(data);
|
||||
data = v;
|
||||
}
|
||||
|
||||
int SrsOnStatusDataPacket::get_prefer_cid()
|
||||
{
|
||||
return RTMP_CID_OverStream;
|
||||
|
@ -4198,6 +4264,12 @@ SrsOnMetaDataPacket::~SrsOnMetaDataPacket()
|
|||
srs_freep(metadata);
|
||||
}
|
||||
|
||||
void SrsOnMetaDataPacket::set_metadata(SrsAmf0Object* v)
|
||||
{
|
||||
srs_freep(metadata);
|
||||
metadata = v;
|
||||
}
|
||||
|
||||
srs_error_t SrsOnMetaDataPacket::decode(SrsBuffer* stream)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
|
|
@ -908,6 +908,8 @@ public:
|
|||
public:
|
||||
SrsCreateStreamPacket();
|
||||
virtual ~SrsCreateStreamPacket();
|
||||
public:
|
||||
void set_command_object(SrsAmf0Any* v);
|
||||
// Decode functions for concrete packet to override.
|
||||
public:
|
||||
virtual srs_error_t decode(SrsBuffer* stream);
|
||||
|
@ -982,6 +984,8 @@ public:
|
|||
public:
|
||||
SrsFMLEStartPacket();
|
||||
virtual ~SrsFMLEStartPacket();
|
||||
public:
|
||||
void set_command_object(SrsAmf0Any* v);
|
||||
// Decode functions for concrete packet to override.
|
||||
public:
|
||||
virtual srs_error_t decode(SrsBuffer* stream);
|
||||
|
@ -1014,6 +1018,9 @@ public:
|
|||
public:
|
||||
SrsFMLEStartResPacket(double _transaction_id);
|
||||
virtual ~SrsFMLEStartResPacket();
|
||||
public:
|
||||
void set_args(SrsAmf0Any* v);
|
||||
void set_command_object(SrsAmf0Any* v);
|
||||
// Decode functions for concrete packet to override.
|
||||
public:
|
||||
virtual srs_error_t decode(SrsBuffer* stream);
|
||||
|
@ -1057,6 +1064,8 @@ public:
|
|||
public:
|
||||
SrsPublishPacket();
|
||||
virtual ~SrsPublishPacket();
|
||||
public:
|
||||
void set_command_object(SrsAmf0Any* v);
|
||||
// Decode functions for concrete packet to override.
|
||||
public:
|
||||
virtual srs_error_t decode(SrsBuffer* stream);
|
||||
|
@ -1181,6 +1190,9 @@ public:
|
|||
public:
|
||||
SrsPlayResPacket();
|
||||
virtual ~SrsPlayResPacket();
|
||||
public:
|
||||
void set_command_object(SrsAmf0Any* v);
|
||||
void set_desc(SrsAmf0Object* v);
|
||||
// Encode functions for concrete packet to override.
|
||||
public:
|
||||
virtual int get_prefer_cid();
|
||||
|
@ -1204,6 +1216,8 @@ public:
|
|||
public:
|
||||
SrsOnBWDonePacket();
|
||||
virtual ~SrsOnBWDonePacket();
|
||||
public:
|
||||
void set_args(SrsAmf0Any* v);
|
||||
// Encode functions for concrete packet to override.
|
||||
public:
|
||||
virtual int get_prefer_cid();
|
||||
|
@ -1232,6 +1246,9 @@ public:
|
|||
public:
|
||||
SrsOnStatusCallPacket();
|
||||
virtual ~SrsOnStatusCallPacket();
|
||||
public:
|
||||
void set_args(SrsAmf0Any* v);
|
||||
void set_data(SrsAmf0Object* v);
|
||||
// Encode functions for concrete packet to override.
|
||||
public:
|
||||
virtual int get_prefer_cid();
|
||||
|
@ -1255,6 +1272,9 @@ public:
|
|||
public:
|
||||
SrsOnStatusDataPacket();
|
||||
virtual ~SrsOnStatusDataPacket();
|
||||
public:
|
||||
void set_data(SrsAmf0Object* v);
|
||||
SrsAmf0Object* get_data();
|
||||
// Encode functions for concrete packet to override.
|
||||
public:
|
||||
virtual int get_prefer_cid();
|
||||
|
@ -1303,6 +1323,8 @@ public:
|
|||
public:
|
||||
SrsOnMetaDataPacket();
|
||||
virtual ~SrsOnMetaDataPacket();
|
||||
public:
|
||||
void set_metadata(SrsAmf0Object* v);
|
||||
// Decode functions for concrete packet to override.
|
||||
public:
|
||||
virtual srs_error_t decode(SrsBuffer* stream);
|
||||
|
|
|
@ -665,6 +665,17 @@ bool srs_net_device_is_internet(const sockaddr* addr)
|
|||
}
|
||||
|
||||
vector<SrsIPAddress*> _srs_system_ips;
|
||||
void srs_free_global_system_ips()
|
||||
{
|
||||
vector<SrsIPAddress*>& ips = _srs_system_ips;
|
||||
|
||||
// Release previous IPs.
|
||||
for (int i = 0; i < (int)ips.size(); i++) {
|
||||
SrsIPAddress* ip = ips[i];
|
||||
srs_freep(ip);
|
||||
}
|
||||
ips.clear();
|
||||
}
|
||||
|
||||
void discover_network_iface(ifaddrs* cur, vector<SrsIPAddress*>& ips, stringstream& ss0, stringstream& ss1, bool ipv6, bool loopback)
|
||||
{
|
||||
|
@ -702,14 +713,10 @@ void discover_network_iface(ifaddrs* cur, vector<SrsIPAddress*>& ips, stringstre
|
|||
|
||||
void retrieve_local_ips()
|
||||
{
|
||||
vector<SrsIPAddress*>& ips = _srs_system_ips;
|
||||
|
||||
// Release previous IPs.
|
||||
for (int i = 0; i < (int)ips.size(); i++) {
|
||||
SrsIPAddress* ip = ips[i];
|
||||
srs_freep(ip);
|
||||
}
|
||||
ips.clear();
|
||||
srs_free_global_system_ips();
|
||||
|
||||
vector<SrsIPAddress*>& ips = _srs_system_ips;
|
||||
|
||||
// Get the addresses.
|
||||
ifaddrs* ifap;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue