mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 03:41:55 +00:00
refine autofree, only free object, never free arrays
This commit is contained in:
parent
300f264e92
commit
dc66c525fd
17 changed files with 160 additions and 155 deletions
|
@ -203,8 +203,8 @@ int SrsBandwidth::do_bandwidth_check()
|
|||
srs_info("expect final message failed. ret=%d", ret);
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get final message success.");
|
||||
|
||||
if (pkt->is_flash_final()) {
|
||||
|
@ -248,8 +248,8 @@ int SrsBandwidth::check_play(
|
|||
srs_error("expect bandwidth message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bandwidth message succes.");
|
||||
|
||||
if (pkt->is_starting_play()) {
|
||||
|
@ -329,8 +329,8 @@ int SrsBandwidth::check_play(
|
|||
srs_error("expect bandwidth message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bandwidth message succes.");
|
||||
|
||||
if (pkt->is_stopped_play()) {
|
||||
|
@ -372,8 +372,8 @@ int SrsBandwidth::check_publish(
|
|||
srs_error("expect bandwidth message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bandwidth message succes.");
|
||||
|
||||
if (pkt->is_starting_publish()) {
|
||||
|
@ -392,7 +392,7 @@ int SrsBandwidth::check_publish(
|
|||
srs_error("recv message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
publish_bytes = rtmp->get_recv_bytes();
|
||||
|
||||
|
@ -440,8 +440,8 @@ int SrsBandwidth::check_publish(
|
|||
srs_error("expect bandwidth message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bandwidth message succes.");
|
||||
|
||||
if (pkt->is_stopped_publish()) {
|
||||
|
|
|
@ -488,7 +488,7 @@ int SrsConfig::reload()
|
|||
srs_info("config reloader parse file success.");
|
||||
|
||||
SrsConfDirective* old_root = root;
|
||||
SrsAutoFree(SrsConfDirective, old_root, false);
|
||||
SrsAutoFree(SrsConfDirective, old_root);
|
||||
|
||||
root = conf.root;
|
||||
conf.root = NULL;
|
||||
|
|
|
@ -446,7 +446,7 @@ int SrsDvrPlan::on_meta_data(SrsOnMetaDataPacket* metadata)
|
|||
if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(char, payload, true);
|
||||
SrsAutoFree(char, payload);
|
||||
|
||||
if ((ret = enc->write_metadata(payload, size)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
|
@ -835,7 +835,7 @@ int SrsDvrHssPlan::on_meta_data(SrsOnMetaDataPacket* metadata)
|
|||
if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(char, payload, true);
|
||||
SrsAutoFree(char, payload);
|
||||
|
||||
if ((ret = enc.write_metadata(payload, size)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
|
@ -1002,7 +1002,7 @@ int SrsDvr::on_audio(SrsSharedPtrMessage* audio)
|
|||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
SrsAutoFree(SrsSharedPtrMessage, audio, false);
|
||||
SrsAutoFree(SrsSharedPtrMessage, audio);
|
||||
|
||||
if ((ret = plan->on_audio(audio)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
|
@ -1015,7 +1015,7 @@ int SrsDvr::on_video(SrsSharedPtrMessage* video)
|
|||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
SrsAutoFree(SrsSharedPtrMessage, video, false);
|
||||
SrsAutoFree(SrsSharedPtrMessage, video);
|
||||
|
||||
if ((ret = plan->on_video(video)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
|
|
|
@ -186,7 +186,7 @@ int SrsEdgeIngester::ingest()
|
|||
srs_verbose("edge loop recv message. ret=%d", ret);
|
||||
|
||||
srs_assert(msg);
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
if ((ret = process_publish_message(msg)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
|
@ -234,7 +234,7 @@ int SrsEdgeIngester::process_publish_message(SrsMessage* msg)
|
|||
srs_error("decode onMetaData message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsPacket, pkt, false);
|
||||
SrsAutoFree(SrsPacket, pkt);
|
||||
|
||||
if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) {
|
||||
SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt);
|
||||
|
@ -527,7 +527,7 @@ int SrsEdgeForwarder::proxy(SrsMessage* msg)
|
|||
|
||||
// TODO: FIXME: use utility to copy msg to shared ptr msg.
|
||||
SrsSharedPtrMessage* copy = new SrsSharedPtrMessage();
|
||||
SrsAutoFree(SrsSharedPtrMessage, copy, false);
|
||||
SrsAutoFree(SrsSharedPtrMessage, copy);
|
||||
if ((ret = copy->initialize(msg)) != ERROR_SUCCESS) {
|
||||
srs_error("initialize the msg failed. ret=%d", ret);
|
||||
return ret;
|
||||
|
|
|
@ -1388,7 +1388,7 @@ int SrsHls::on_audio(SrsSharedPtrMessage* audio)
|
|||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
SrsAutoFree(SrsSharedPtrMessage, audio, false);
|
||||
SrsAutoFree(SrsSharedPtrMessage, audio);
|
||||
|
||||
if (!hls_enabled) {
|
||||
return ret;
|
||||
|
@ -1432,7 +1432,7 @@ int SrsHls::on_video(SrsSharedPtrMessage* video)
|
|||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
SrsAutoFree(SrsSharedPtrMessage, video, false);
|
||||
SrsAutoFree(SrsSharedPtrMessage, video);
|
||||
|
||||
if (!hls_enabled) {
|
||||
return ret;
|
||||
|
|
|
@ -532,7 +532,7 @@ int SrsHttpApi::do_cycle()
|
|||
srs_assert(req->is_complete());
|
||||
|
||||
// always free it in this scope.
|
||||
SrsAutoFree(SrsHttpMessage, req, false);
|
||||
SrsAutoFree(SrsHttpMessage, req);
|
||||
|
||||
// ok, handle http request.
|
||||
if ((ret = process_request(&skt, req)) != ERROR_SUCCESS) {
|
||||
|
|
|
@ -228,7 +228,7 @@ int SrsHttpVhost::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
|
|||
::lseek(fd, 0, SEEK_SET);
|
||||
|
||||
char* buf = new char[length];
|
||||
SrsAutoFree(char, buf, true);
|
||||
SrsAutoFree(char, buf);
|
||||
|
||||
// TODO: FIXME: use st_read.
|
||||
if (::read(fd, buf, length) < 0) {
|
||||
|
@ -352,7 +352,7 @@ int SrsHttpConn::do_cycle()
|
|||
srs_assert(req->is_complete());
|
||||
|
||||
// always free it in this scope.
|
||||
SrsAutoFree(SrsHttpMessage, req, false);
|
||||
SrsAutoFree(SrsHttpMessage, req);
|
||||
|
||||
// ok, handle http request.
|
||||
if ((ret = process_request(&skt, req)) != ERROR_SUCCESS) {
|
||||
|
|
|
@ -460,7 +460,7 @@ int SrsRtmpConn::playing(SrsSource* source)
|
|||
}
|
||||
|
||||
srs_assert(consumer != NULL);
|
||||
SrsAutoFree(SrsConsumer, consumer, false);
|
||||
SrsAutoFree(SrsConsumer, consumer);
|
||||
srs_verbose("consumer created success.");
|
||||
|
||||
rtmp->set_recv_timeout(SRS_PULSE_TIMEOUT_US);
|
||||
|
@ -595,7 +595,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source)
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
pithy_print.elapse();
|
||||
|
||||
|
@ -614,7 +614,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source)
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsPacket, pkt, false);
|
||||
SrsAutoFree(SrsPacket, pkt);
|
||||
|
||||
if (dynamic_cast<SrsFMLEStartPacket*>(pkt)) {
|
||||
SrsFMLEStartPacket* unpublish = dynamic_cast<SrsFMLEStartPacket*>(pkt);
|
||||
|
@ -671,7 +671,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source)
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
pithy_print.elapse();
|
||||
|
||||
|
@ -690,7 +690,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source)
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsPacket, pkt, false);
|
||||
SrsAutoFree(SrsPacket, pkt);
|
||||
|
||||
// flash unpublish.
|
||||
// TODO: maybe need to support republish.
|
||||
|
@ -754,7 +754,7 @@ int SrsRtmpConn::process_publish_message(SrsSource* source, SrsMessage* msg, boo
|
|||
srs_error("decode onMetaData message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsPacket, pkt, false);
|
||||
SrsAutoFree(SrsPacket, pkt);
|
||||
|
||||
if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) {
|
||||
SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt);
|
||||
|
@ -781,7 +781,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
|
|||
srs_verbose("ignore all empty message.");
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
|
||||
srs_info("ignore all message except amf0/amf3 command.");
|
||||
|
@ -795,7 +795,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
|
|||
}
|
||||
srs_info("decode the amf0/amf3 command packet success.");
|
||||
|
||||
SrsAutoFree(SrsPacket, pkt, false);
|
||||
SrsAutoFree(SrsPacket, pkt);
|
||||
|
||||
// for jwplayer/flowplayer, which send close as pause message.
|
||||
// @see https://github.com/winlinvip/simple-rtmp-server/issues/6
|
||||
|
|
|
@ -898,7 +898,7 @@ int SrsSource::on_audio(SrsMessage* audio)
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
SrsSharedPtrMessage* msg = new SrsSharedPtrMessage();
|
||||
SrsAutoFree(SrsSharedPtrMessage, msg, false);
|
||||
SrsAutoFree(SrsSharedPtrMessage, msg);
|
||||
if ((ret = msg->initialize(audio)) != ERROR_SUCCESS) {
|
||||
srs_error("initialize the audio failed. ret=%d", ret);
|
||||
return ret;
|
||||
|
@ -988,7 +988,7 @@ int SrsSource::on_video(SrsMessage* video)
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
SrsSharedPtrMessage* msg = new SrsSharedPtrMessage();
|
||||
SrsAutoFree(SrsSharedPtrMessage, msg, false);
|
||||
SrsAutoFree(SrsSharedPtrMessage, msg);
|
||||
if ((ret = msg->initialize(video)) != ERROR_SUCCESS) {
|
||||
srs_error("initialize the video failed. ret=%d", ret);
|
||||
return ret;
|
||||
|
|
|
@ -33,23 +33,21 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
/**
|
||||
* auto free the instance in the current scope.
|
||||
*/
|
||||
#define SrsAutoFree(className, instance, is_array) \
|
||||
__SrsAutoFree<className> _auto_free_##instance((className**)&instance, is_array)
|
||||
#define SrsAutoFree(className, instance) \
|
||||
__SrsAutoFree<className> _auto_free_##instance((className**)&instance)
|
||||
|
||||
template<class T>
|
||||
class __SrsAutoFree
|
||||
{
|
||||
private:
|
||||
T** ptr;
|
||||
bool is_array;
|
||||
public:
|
||||
/**
|
||||
* auto delete the ptr.
|
||||
* @is_array a bool value indicates whether the ptr is a array.
|
||||
*/
|
||||
__SrsAutoFree(T** _ptr, bool _is_array){
|
||||
__SrsAutoFree(T** _ptr){
|
||||
ptr = _ptr;
|
||||
is_array = _is_array;
|
||||
}
|
||||
|
||||
virtual ~__SrsAutoFree(){
|
||||
|
@ -57,15 +55,22 @@ public:
|
|||
return;
|
||||
}
|
||||
|
||||
if (is_array) {
|
||||
delete[] *ptr;
|
||||
} else {
|
||||
delete *ptr;
|
||||
}
|
||||
|
||||
*ptr = NULL;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* auto free the array ptrs, for example, MyClass* msgs[10],
|
||||
* which stores 10 MyClass* objects, this class will:
|
||||
* 1. free each MyClass* in array.
|
||||
* 2. free the msgs itself.
|
||||
* @remark, MyClass* msgs[] equals to MyClass**, the ptr array equals ptr to ptr.
|
||||
*/
|
||||
template<class T>
|
||||
class SrsObjectPtrArrayAutoFree
|
||||
{
|
||||
};
|
||||
|
||||
#endif
|
|
@ -291,7 +291,7 @@ int srs_read_packet(srs_rtmp_t rtmp, int* type, u_int32_t* timestamp, char** dat
|
|||
continue;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
if (msg->header.is_audio()) {
|
||||
*type = SRS_RTMP_TYPE_AUDIO;
|
||||
|
|
|
@ -348,8 +348,8 @@ int SrsBandCheckClient::expect_start_play()
|
|||
srs_error("expect bandcheck start play message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bandcheck start play message");
|
||||
|
||||
if (pkt->command_name != SRS_BW_CHECK_START_PLAY) {
|
||||
|
@ -385,8 +385,8 @@ int SrsBandCheckClient::expect_stop_play()
|
|||
srs_error("expect stop play message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bandcheck stop play message");
|
||||
|
||||
if (pkt->command_name == SRS_BW_CHECK_STOP_PLAY) {
|
||||
|
@ -422,8 +422,8 @@ int SrsBandCheckClient::expect_start_pub()
|
|||
srs_error("expect start pub message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bandcheck start pub message");
|
||||
|
||||
if (pkt->command_name == SRS_BW_CHECK_START_PUBLISH) {
|
||||
|
@ -491,8 +491,8 @@ int SrsBandCheckClient::expect_stop_pub()
|
|||
if ((ret = srs_rtmp_expect_message<SrsBandwidthPacket>(this->protocol, &msg, &pkt)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
if (pkt->command_name == SRS_BW_CHECK_STOP_PUBLISH) {
|
||||
return ret;
|
||||
}
|
||||
|
@ -511,13 +511,13 @@ int SrsBandCheckClient::expect_finished()
|
|||
srs_error("expect finished message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
||||
srs_info("get bandcheck finished message");
|
||||
|
||||
if (pkt->command_name == SRS_BW_CHECK_FINISHED) {
|
||||
SrsStream *stream = new SrsStream;
|
||||
SrsAutoFree(SrsStream, stream, false);
|
||||
SrsAutoFree(SrsStream, stream);
|
||||
|
||||
if ((ret = stream->initialize((char*)msg->payload, msg->size)) != ERROR_SUCCESS) {
|
||||
srs_error("initialize stream error. ret=%d", ret);
|
||||
|
|
|
@ -813,7 +813,7 @@ namespace srs
|
|||
}
|
||||
|
||||
srs_assert(digest != NULL);
|
||||
SrsAutoFree(char, digest, true);
|
||||
SrsAutoFree(char, digest);
|
||||
|
||||
if (schema == srs_schema0) {
|
||||
memcpy(block1.digest.digest, digest, 32);
|
||||
|
@ -837,7 +837,7 @@ namespace srs
|
|||
}
|
||||
|
||||
srs_assert(c1_digest != NULL);
|
||||
SrsAutoFree(char, c1_digest, true);
|
||||
SrsAutoFree(char, c1_digest);
|
||||
|
||||
if (schema == srs_schema0) {
|
||||
is_valid = srs_bytes_equals(block1.digest.digest, c1_digest, 32);
|
||||
|
@ -861,7 +861,7 @@ namespace srs
|
|||
}
|
||||
|
||||
srs_assert(s1_digest != NULL);
|
||||
SrsAutoFree(char, s1_digest, true);
|
||||
SrsAutoFree(char, s1_digest);
|
||||
|
||||
if (schema == srs_schema0) {
|
||||
is_valid = srs_bytes_equals(block1.digest.digest, s1_digest, 32);
|
||||
|
@ -917,7 +917,7 @@ namespace srs
|
|||
srs_verbose("calc s1 digest success.");
|
||||
|
||||
srs_assert(s1_digest != NULL);
|
||||
SrsAutoFree(char, s1_digest, true);
|
||||
SrsAutoFree(char, s1_digest);
|
||||
|
||||
if (schema == srs_schema0) {
|
||||
memcpy(block1.digest.digest, s1_digest, 32);
|
||||
|
@ -944,7 +944,7 @@ namespace srs
|
|||
}
|
||||
|
||||
srs_assert(c1s1_joined_bytes != NULL);
|
||||
SrsAutoFree(char, c1s1_joined_bytes, true);
|
||||
SrsAutoFree(char, c1s1_joined_bytes);
|
||||
|
||||
digest = new char[OpensslHashSize];
|
||||
if ((ret = openssl_HMACsha256(c1s1_joined_bytes, 1536 - 32, SrsGenuineFMSKey, 36, digest)) != ERROR_SUCCESS) {
|
||||
|
@ -971,7 +971,7 @@ namespace srs
|
|||
}
|
||||
|
||||
srs_assert(c1s1_joined_bytes != NULL);
|
||||
SrsAutoFree(char, c1s1_joined_bytes, true);
|
||||
SrsAutoFree(char, c1s1_joined_bytes);
|
||||
|
||||
digest = new char[OpensslHashSize];
|
||||
if ((ret = openssl_HMACsha256(c1s1_joined_bytes, 1536 - 32, SrsGenuineFPKey, 30, digest)) != ERROR_SUCCESS) {
|
||||
|
|
|
@ -490,8 +490,8 @@ int SrsRtmpClient::connect_app(string app, string tc_url)
|
|||
srs_error("expect connect app response message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsConnectAppResPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsConnectAppResPacket, pkt);
|
||||
srs_info("get connect app response message");
|
||||
|
||||
return ret;
|
||||
|
@ -517,8 +517,8 @@ int SrsRtmpClient::create_stream(int& stream_id)
|
|||
srs_error("expect create stream response message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsCreateStreamResPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCreateStreamResPacket, pkt);
|
||||
srs_info("get create stream response message");
|
||||
|
||||
stream_id = (int)pkt->stream_id;
|
||||
|
@ -651,8 +651,8 @@ int SrsRtmpClient::fmle_publish(string stream, int& stream_id)
|
|||
srs_error("expect create stream response message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsCreateStreamResPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCreateStreamResPacket, pkt);
|
||||
srs_info("get create stream response message");
|
||||
|
||||
stream_id = (int)pkt->stream_id;
|
||||
|
@ -772,8 +772,8 @@ int SrsRtmpServer::connect_app(SrsRequest* req)
|
|||
srs_error("expect connect app message failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsConnectAppPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsConnectAppPacket, pkt);
|
||||
srs_info("get connect app message");
|
||||
|
||||
SrsAmf0Any* prop = NULL;
|
||||
|
@ -922,7 +922,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
|
||||
srs_trace("identify ignore messages except "
|
||||
|
@ -936,7 +936,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsPacket, pkt, false);
|
||||
SrsAutoFree(SrsPacket, pkt);
|
||||
|
||||
if (dynamic_cast<SrsCreateStreamPacket*>(pkt)) {
|
||||
srs_info("identify client by create stream, play or flash publish.");
|
||||
|
@ -1128,8 +1128,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
}
|
||||
srs_info("recv FCPublish request message success.");
|
||||
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsFMLEStartPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsFMLEStartPacket, pkt);
|
||||
|
||||
fc_publish_tid = pkt->transaction_id;
|
||||
}
|
||||
|
@ -1154,8 +1154,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
}
|
||||
srs_info("recv createStream request message success.");
|
||||
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsCreateStreamPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsCreateStreamPacket, pkt);
|
||||
|
||||
create_stream_tid = pkt->transaction_id;
|
||||
}
|
||||
|
@ -1179,8 +1179,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
|
|||
}
|
||||
srs_info("recv publish request message success.");
|
||||
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsPublishPacket, pkt, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
SrsAutoFree(SrsPublishPacket, pkt);
|
||||
}
|
||||
// publish response onFCPublish(NetStream.Publish.Start)
|
||||
if (true) {
|
||||
|
@ -1310,7 +1310,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
|
||||
srs_trace("identify ignore messages except "
|
||||
|
@ -1324,7 +1324,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsPacket, pkt, false);
|
||||
SrsAutoFree(SrsPacket, pkt);
|
||||
|
||||
if (dynamic_cast<SrsPlayPacket*>(pkt)) {
|
||||
srs_info("level1 identify client by play.");
|
||||
|
|
|
@ -442,7 +442,7 @@ int SrsProtocol::do_send_and_free_message(SrsMessage* msg, SrsPacket* packet)
|
|||
|
||||
// always free msg.
|
||||
srs_assert(msg);
|
||||
SrsAutoFree(SrsMessage, msg, false);
|
||||
SrsAutoFree(SrsMessage, msg);
|
||||
|
||||
// we donot use the complex basic header,
|
||||
// ensure the basic header is 1bytes.
|
||||
|
@ -735,7 +735,7 @@ int SrsProtocol::send_and_free_packet(SrsPacket* packet, int stream_id)
|
|||
int ret = ERROR_SUCCESS;
|
||||
|
||||
srs_assert(packet);
|
||||
SrsAutoFree(SrsPacket, packet, false);
|
||||
SrsAutoFree(SrsPacket, packet);
|
||||
|
||||
int size = 0;
|
||||
char* payload = NULL;
|
||||
|
@ -1274,7 +1274,7 @@ int SrsProtocol::on_recv_message(SrsMessage* msg)
|
|||
srs_assert(packet);
|
||||
|
||||
// always free the packet.
|
||||
SrsAutoFree(SrsPacket, packet, false);
|
||||
SrsAutoFree(SrsPacket, packet);
|
||||
|
||||
switch (msg->header.message_type) {
|
||||
case RTMP_MSG_WindowAcknowledgementSize: {
|
||||
|
@ -2584,7 +2584,7 @@ int SrsPlayPacket::decode(SrsStream* stream)
|
|||
srs_error("amf0 read play reset marker failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
SrsAutoFree(SrsAmf0Any, reset_value, false);
|
||||
SrsAutoFree(SrsAmf0Any, reset_value);
|
||||
|
||||
if (reset_value) {
|
||||
// check if the value is bool or number
|
||||
|
@ -3160,7 +3160,7 @@ int SrsOnMetaDataPacket::decode(SrsStream* stream)
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsAutoFree(SrsAmf0Any, any, false);
|
||||
SrsAutoFree(SrsAmf0Any, any);
|
||||
|
||||
if (any->is_ecma_array()) {
|
||||
SrsAmf0EcmaArray* arr = any->to_ecma_array();
|
||||
|
|
|
@ -52,13 +52,13 @@ VOID TEST(AMF0Test, ScenarioMain)
|
|||
// version: string
|
||||
// srs_sig: string
|
||||
SrsAmf0Object* props = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, props, false);
|
||||
SrsAutoFree(SrsAmf0Object, props);
|
||||
props->set("fmsVer", SrsAmf0Any::str("FMS/3,5,3,888"));
|
||||
props->set("capabilities", SrsAmf0Any::number(253));
|
||||
props->set("mode", SrsAmf0Any::number(123));
|
||||
|
||||
SrsAmf0Object* info = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, info, false);
|
||||
SrsAutoFree(SrsAmf0Object, info);
|
||||
info->set("level", SrsAmf0Any::str("info"));
|
||||
info->set("code", SrsAmf0Any::str("NetStream.Connnect.Success"));
|
||||
info->set("descrption", SrsAmf0Any::str("connected"));
|
||||
|
@ -85,7 +85,7 @@ VOID TEST(AMF0Test, ScenarioMain)
|
|||
EXPECT_EQ(0x03, bytes[0]);
|
||||
EXPECT_EQ(0x09, bytes[nb_bytes - 1]);
|
||||
}
|
||||
SrsAutoFree(char, bytes, true);
|
||||
SrsAutoFree(char, bytes);
|
||||
|
||||
// decoding amf0 object from bytes
|
||||
// when user know the schema
|
||||
|
@ -100,12 +100,12 @@ VOID TEST(AMF0Test, ScenarioMain)
|
|||
// if user know the schema, for instance, it's an amf0 object,
|
||||
// user can use specified object to decoding.
|
||||
SrsAmf0Object* props = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, props, false);
|
||||
SrsAutoFree(SrsAmf0Object, props);
|
||||
EXPECT_EQ(ERROR_SUCCESS, props->read(&s));
|
||||
|
||||
// user can use specified object to decoding.
|
||||
SrsAmf0Object* info = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, info, false);
|
||||
SrsAutoFree(SrsAmf0Object, info);
|
||||
EXPECT_EQ(ERROR_SUCCESS, info->read(&s));
|
||||
|
||||
// use the decoded data.
|
||||
|
@ -150,7 +150,7 @@ VOID TEST(AMF0Test, ScenarioMain)
|
|||
// decoding a amf0 any, for user donot know
|
||||
SrsAmf0Any* any = NULL;
|
||||
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &any));
|
||||
SrsAutoFree(SrsAmf0Any, any, false);
|
||||
SrsAutoFree(SrsAmf0Any, any);
|
||||
|
||||
// for amf0 object
|
||||
if (any->is_object()) {
|
||||
|
@ -192,7 +192,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
EXPECT_EQ(size, SrsAmf0Size::object(o));
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
|
@ -210,7 +210,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number();
|
||||
o->set("age", SrsAmf0Any::number(9));
|
||||
|
@ -220,7 +220,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null();
|
||||
o->set("email", SrsAmf0Any::null());
|
||||
|
@ -230,7 +230,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined();
|
||||
o->set("email", SrsAmf0Any::undefined());
|
||||
|
@ -240,7 +240,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean();
|
||||
o->set("sex", SrsAmf0Any::boolean(true));
|
||||
|
@ -252,7 +252,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
|
||||
}
|
||||
|
@ -260,7 +260,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
|
@ -270,7 +270,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number();
|
||||
o->set("age", SrsAmf0Any::number(9));
|
||||
|
@ -280,7 +280,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null();
|
||||
o->set("email", SrsAmf0Any::null());
|
||||
|
@ -290,7 +290,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined();
|
||||
o->set("email", SrsAmf0Any::undefined());
|
||||
|
@ -300,7 +300,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean();
|
||||
o->set("sex", SrsAmf0Any::boolean(true));
|
||||
|
@ -312,7 +312,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
|
@ -327,7 +327,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
|
@ -349,7 +349,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
|
@ -364,7 +364,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
|
@ -386,7 +386,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+3;
|
||||
SrsAmf0Object* o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
|
@ -408,7 +408,7 @@ VOID TEST(AMF0Test, ApiSize)
|
|||
if (true) {
|
||||
int size = 1+4+3;
|
||||
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
|
@ -434,14 +434,14 @@ VOID TEST(AMF0Test, ApiAnyElem)
|
|||
// string
|
||||
if (true) {
|
||||
o = SrsAmf0Any::str();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_string());
|
||||
EXPECT_STREQ("", o->to_str().c_str());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::str("winlin");
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_string());
|
||||
EXPECT_STREQ("winlin", o->to_str().c_str());
|
||||
|
@ -450,21 +450,21 @@ VOID TEST(AMF0Test, ApiAnyElem)
|
|||
// bool
|
||||
if (true) {
|
||||
o = SrsAmf0Any::boolean();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_boolean());
|
||||
EXPECT_FALSE(o->to_boolean());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::boolean(false);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_boolean());
|
||||
EXPECT_FALSE(o->to_boolean());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::boolean(true);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_boolean());
|
||||
EXPECT_TRUE(o->to_boolean());
|
||||
|
@ -473,21 +473,21 @@ VOID TEST(AMF0Test, ApiAnyElem)
|
|||
// number
|
||||
if (true) {
|
||||
o = SrsAmf0Any::number();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_number());
|
||||
EXPECT_DOUBLE_EQ(0, o->to_number());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::number(100);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_number());
|
||||
EXPECT_DOUBLE_EQ(100, o->to_number());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::number(-100);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_number());
|
||||
EXPECT_DOUBLE_EQ(-100, o->to_number());
|
||||
|
@ -496,7 +496,7 @@ VOID TEST(AMF0Test, ApiAnyElem)
|
|||
// null
|
||||
if (true) {
|
||||
o = SrsAmf0Any::null();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_null());
|
||||
}
|
||||
|
@ -504,7 +504,7 @@ VOID TEST(AMF0Test, ApiAnyElem)
|
|||
// undefined
|
||||
if (true) {
|
||||
o = SrsAmf0Any::undefined();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
ASSERT_TRUE(NULL != o);
|
||||
EXPECT_TRUE(o->is_undefined());
|
||||
}
|
||||
|
@ -525,7 +525,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.current()[2] = 0x09;
|
||||
|
||||
o = SrsAmf0Any::object_eof();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -539,7 +539,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::object_eof();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -554,7 +554,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::str("winlin");
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -577,7 +577,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::number(10);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -596,7 +596,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::boolean(true);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -613,7 +613,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::boolean(false);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -632,7 +632,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::null();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -651,7 +651,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::undefined();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -670,7 +670,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::str("winlin");
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -680,7 +680,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
SrsAmf0Any* po = NULL;
|
||||
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
|
||||
ASSERT_TRUE(NULL != po);
|
||||
SrsAutoFree(SrsAmf0Any, po, false);
|
||||
SrsAutoFree(SrsAmf0Any, po);
|
||||
ASSERT_TRUE(po->is_string());
|
||||
EXPECT_STREQ("winlin", po->to_str().c_str());
|
||||
}
|
||||
|
@ -690,7 +690,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::number(10);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -700,7 +700,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
SrsAmf0Any* po = NULL;
|
||||
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
|
||||
ASSERT_TRUE(NULL != po);
|
||||
SrsAutoFree(SrsAmf0Any, po, false);
|
||||
SrsAutoFree(SrsAmf0Any, po);
|
||||
ASSERT_TRUE(po->is_number());
|
||||
EXPECT_DOUBLE_EQ(10, po->to_number());
|
||||
}
|
||||
|
@ -710,7 +710,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::boolean(true);
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -720,7 +720,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
SrsAmf0Any* po = NULL;
|
||||
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
|
||||
ASSERT_TRUE(NULL != po);
|
||||
SrsAutoFree(SrsAmf0Any, po, false);
|
||||
SrsAutoFree(SrsAmf0Any, po);
|
||||
ASSERT_TRUE(po->is_boolean());
|
||||
EXPECT_TRUE(po->to_boolean());
|
||||
}
|
||||
|
@ -730,7 +730,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::null();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -740,7 +740,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
SrsAmf0Any* po = NULL;
|
||||
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
|
||||
ASSERT_TRUE(NULL != po);
|
||||
SrsAutoFree(SrsAmf0Any, po, false);
|
||||
SrsAutoFree(SrsAmf0Any, po);
|
||||
ASSERT_TRUE(po->is_null());
|
||||
}
|
||||
|
||||
|
@ -749,7 +749,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
s.reset();
|
||||
|
||||
o = SrsAmf0Any::undefined();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(o->total_size(), s.pos());
|
||||
|
@ -759,7 +759,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
|
|||
SrsAmf0Any* po = NULL;
|
||||
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
|
||||
ASSERT_TRUE(NULL != po);
|
||||
SrsAutoFree(SrsAmf0Any, po, false);
|
||||
SrsAutoFree(SrsAmf0Any, po);
|
||||
ASSERT_TRUE(po->is_undefined());
|
||||
}
|
||||
|
||||
|
@ -841,44 +841,44 @@ VOID TEST(AMF0Test, ApiAnyAssert)
|
|||
// any convert
|
||||
if (true) {
|
||||
o = SrsAmf0Any::str();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
EXPECT_TRUE(o->is_string());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::number();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
EXPECT_TRUE(o->is_number());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::boolean();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
EXPECT_TRUE(o->is_boolean());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::null();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
EXPECT_TRUE(o->is_null());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::undefined();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
EXPECT_TRUE(o->is_undefined());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
EXPECT_TRUE(o->is_object());
|
||||
}
|
||||
if (true) {
|
||||
o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
EXPECT_TRUE(o->is_ecma_array());
|
||||
}
|
||||
|
||||
// empty object
|
||||
if (true) {
|
||||
o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
s.reset();
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(1+3, s.pos());
|
||||
|
@ -887,7 +887,7 @@ VOID TEST(AMF0Test, ApiAnyAssert)
|
|||
// empty ecma array
|
||||
if (true) {
|
||||
o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0Any, o, false);
|
||||
SrsAutoFree(SrsAmf0Any, o);
|
||||
s.reset();
|
||||
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
|
||||
EXPECT_EQ(1+4+3, s.pos());
|
||||
|
@ -901,7 +901,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
|
|||
// get/set property
|
||||
if (true) {
|
||||
o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
EXPECT_TRUE(NULL == o->get_property("name"));
|
||||
|
||||
|
@ -917,7 +917,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
|
|||
// index property
|
||||
if (true) {
|
||||
o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
EXPECT_STREQ("name", o->key_at(0).c_str());
|
||||
|
@ -937,7 +937,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
|
|||
// ensure property
|
||||
if (true) {
|
||||
o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
EXPECT_TRUE(NULL == o->ensure_property_string("name"));
|
||||
EXPECT_TRUE(NULL == o->ensure_property_number("age"));
|
||||
|
@ -957,7 +957,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
|
|||
// count
|
||||
if (true) {
|
||||
o = SrsAmf0Any::object();
|
||||
SrsAutoFree(SrsAmf0Object, o, false);
|
||||
SrsAutoFree(SrsAmf0Object, o);
|
||||
|
||||
EXPECT_EQ(0, o->count());
|
||||
|
||||
|
@ -979,7 +979,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
|
|||
// get/set property
|
||||
if (true) {
|
||||
o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
EXPECT_TRUE(NULL == o->get_property("name"));
|
||||
|
||||
|
@ -995,7 +995,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
|
|||
// index property
|
||||
if (true) {
|
||||
o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
o->set("name", SrsAmf0Any::str("winlin"));
|
||||
EXPECT_STREQ("name", o->key_at(0).c_str());
|
||||
|
@ -1015,7 +1015,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
|
|||
// ensure property
|
||||
if (true) {
|
||||
o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
EXPECT_TRUE(NULL == o->ensure_property_string("name"));
|
||||
EXPECT_TRUE(NULL == o->ensure_property_number("age"));
|
||||
|
@ -1035,7 +1035,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
|
|||
// count
|
||||
if (true) {
|
||||
o = SrsAmf0Any::ecma_array();
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o, false);
|
||||
SrsAutoFree(SrsAmf0EcmaArray, o);
|
||||
|
||||
EXPECT_EQ(0, o->count());
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ VOID TEST(HandshakeTest, VerifyFPC0C1)
|
|||
// manually validate the c1
|
||||
// @see: calc_c1_digest
|
||||
char* c1s1_joined_bytes = srs_bytes_join_schema0(c1.time, c1.version, &c1.block0.key, &c1.block1.digest);
|
||||
SrsAutoFree(char, c1s1_joined_bytes, true);
|
||||
SrsAutoFree(char, c1s1_joined_bytes);
|
||||
|
||||
bool is_valid;
|
||||
ASSERT_EQ(ERROR_SUCCESS, c1.c1_validate_digest(is_valid));
|
||||
|
|
Loading…
Reference in a new issue