Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2014-05-14 09:41:41 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
dc66c525fdf70eb7ae1a859a44308553c3f5893c
dc66c525
1 parent
300f264e
refine autofree, only free object, never free arrays
隐藏空白字符变更
内嵌
并排对比
正在显示
17 个修改的文件
包含
160 行增加
和
155 行删除
trunk/src/app/srs_app_bandwidth.cpp
trunk/src/app/srs_app_config.cpp
trunk/src/app/srs_app_dvr.cpp
trunk/src/app/srs_app_edge.cpp
trunk/src/app/srs_app_hls.cpp
trunk/src/app/srs_app_http_api.cpp
trunk/src/app/srs_app_http_conn.cpp
trunk/src/app/srs_app_rtmp_conn.cpp
trunk/src/app/srs_app_source.cpp
trunk/src/core/srs_core_autofree.hpp
trunk/src/libs/srs_librtmp.cpp
trunk/src/main/srs_main_bandcheck.cpp
trunk/src/rtmp/srs_protocol_handshake.cpp
trunk/src/rtmp/srs_protocol_rtmp.cpp
trunk/src/rtmp/srs_protocol_rtmp_stack.cpp
trunk/src/utest/srs_utest_amf0.cpp
trunk/src/utest/srs_utest_handshake.cpp
trunk/src/app/srs_app_bandwidth.cpp
查看文件 @
dc66c52
...
...
@@ -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
())
{
...
...
trunk/src/app/srs_app_config.cpp
查看文件 @
dc66c52
...
...
@@ -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
;
...
...
trunk/src/app/srs_app_dvr.cpp
查看文件 @
dc66c52
...
...
@@ -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
;
...
...
trunk/src/app/srs_app_edge.cpp
查看文件 @
dc66c52
...
...
@@ -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
;
...
...
trunk/src/app/srs_app_hls.cpp
查看文件 @
dc66c52
...
...
@@ -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
;
...
...
trunk/src/app/srs_app_http_api.cpp
查看文件 @
dc66c52
...
...
@@ -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
)
{
...
...
trunk/src/app/srs_app_http_conn.cpp
查看文件 @
dc66c52
...
...
@@ -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
)
{
...
...
trunk/src/app/srs_app_rtmp_conn.cpp
查看文件 @
dc66c52
...
...
@@ -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
...
...
trunk/src/app/srs_app_source.cpp
查看文件 @
dc66c52
...
...
@@ -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
;
...
...
trunk/src/core/srs_core_autofree.hpp
查看文件 @
dc66c52
...
...
@@ -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
;
}
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
\ No newline at end of file
...
...
trunk/src/libs/srs_librtmp.cpp
查看文件 @
dc66c52
...
...
@@ -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
;
...
...
trunk/src/main/srs_main_bandcheck.cpp
查看文件 @
dc66c52
...
...
@@ -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
);
...
...
trunk/src/rtmp/srs_protocol_handshake.cpp
查看文件 @
dc66c52
...
...
@@ -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
)
{
...
...
trunk/src/rtmp/srs_protocol_rtmp.cpp
查看文件 @
dc66c52
...
...
@@ -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."
);
...
...
trunk/src/rtmp/srs_protocol_rtmp_stack.cpp
查看文件 @
dc66c52
...
...
@@ -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
();
...
...
trunk/src/utest/srs_utest_amf0.cpp
查看文件 @
dc66c52
...
...
@@ -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
());
...
...
trunk/src/utest/srs_utest_handshake.cpp
查看文件 @
dc66c52
...
...
@@ -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
));
...
...
请
注册
或
登录
后发表评论