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
2015-06-09 11:51:49 +0800
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
bf9166dbece7d0d3ec6f2c1615f045805e106f74
bf9166db
2 parents
00d1fdde
969ed7b0
Merge branch '2.0release' into develop
隐藏空白字符变更
内嵌
并排对比
正在显示
11 个修改的文件
包含
94 行增加
和
42 行删除
trunk/auto/summary.sh
trunk/src/app/srs_app_conn.hpp
trunk/src/app/srs_app_http_hooks.cpp
trunk/src/app/srs_app_server.cpp
trunk/src/app/srs_app_server.hpp
trunk/src/app/srs_app_thread.cpp
trunk/src/kernel/srs_kernel_error.hpp
trunk/src/kernel/srs_kernel_flv.cpp
trunk/src/kernel/srs_kernel_flv.hpp
trunk/src/main/srs_main_server.cpp
trunk/src/protocol/srs_rtmp_stack.cpp
trunk/auto/summary.sh
查看文件 @
bf9166d
...
...
@@ -37,11 +37,12 @@ echo -e "\${GREEN}build summary:\${BLACK}"
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
echo -e " |${SrsGperfSummaryColor}gperf @see: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_GPERF\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}gmc @see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}gmc: gperf memory check\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}env PPROF_PATH=./objs/pprof HEAPCHECK=normal ./objs/srs -c conf/console.conf # start gmc\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}gmc: gperf memory check, or memory leak detect\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}env PPROF_PATH=./objs/pprof HEAPCHECK=normal ./objs/srs -c conf/console.conf 2>gmc.log # start gmc\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}killall -2 srs # or CTRL+C to stop gmc\${BLACK}"
echo -e " | ${SrsGperfMCSummaryColor}cat gmc.log # to analysis memory leak\${BLACK}"
echo -e " | ${SrsGperfMPSummaryColor}gmp @see: http://google-perftools.googlecode.com/svn/trunk/doc/heapprofile.html\${BLACK}"
echo -e " | ${SrsGperfMPSummaryColor}gmp: gperf memory profile\${BLACK}"
echo -e " | ${SrsGperfMPSummaryColor}gmp: gperf memory profile
, similar to gcp
\${BLACK}"
echo -e " | ${SrsGperfMPSummaryColor}rm -f gperf.srs.gmp*; ./objs/srs -c conf/console.conf # start gmp\${BLACK}"
echo -e " | ${SrsGperfMPSummaryColor}killall -2 srs # or CTRL+C to stop gmp\${BLACK}"
echo -e " | ${SrsGperfMPSummaryColor}./objs/pprof --text objs/srs gperf.srs.gmp* # to analysis memory profile\${BLACK}"
...
...
trunk/src/app/srs_app_conn.hpp
查看文件 @
bf9166d
...
...
@@ -86,7 +86,7 @@ protected:
/**
* whether the connection is disposed,
* when disposed, connection should stop cycle and cleanup itself.
*/
;
*/
bool
disposed
;
public
:
SrsConnection
(
IConnectionManager
*
cm
,
st_netfd_t
c
);
...
...
trunk/src/app/srs_app_http_hooks.cpp
查看文件 @
bf9166d
...
...
@@ -433,10 +433,36 @@ int SrsHttpHooks::do_post(std::string url, std::string req, int& code, string& r
return
ERROR_HTTP_STATUS_INVLIAD
;
}
// TODO: FIXME: parse json.
if
(
res
.
empty
()
||
res
!=
SRS_HTTP_RESPONSE_OK
)
{
if
(
res
.
empty
())
{
return
ERROR_HTTP_DATA_INVLIAD
;
}
// parse string res to json.
SrsJsonAny
*
info
=
SrsJsonAny
::
loads
((
char
*
)
res
.
c_str
());
SrsAutoFree
(
SrsJsonAny
,
info
);
// if res is number of error code
if
(
!
info
->
is_object
())
{
if
(
res
!=
SRS_HTTP_RESPONSE_OK
)
{
return
ERROR_HTTP_DATA_INVLIAD
;
}
return
ret
;
}
// if res is json obj, like: {"code": 0, "data": ""}
SrsJsonObject
*
res_info
=
info
->
to_object
();
SrsJsonAny
*
res_code
=
NULL
;
if
((
res_code
=
res_info
->
ensure_property_integer
(
"code"
))
==
NULL
)
{
ret
=
ERROR_RESPONSE_CODE
;
srs_error
(
"res code error, ret=%d"
,
ret
);
return
ret
;
}
if
((
res_code
->
to_integer
())
!=
ERROR_SUCCESS
)
{
ret
=
ERROR_RESPONSE_CODE
;
srs_error
(
"res code error, ret=%d, code=%d"
,
ret
,
code
);
return
ret
;
}
return
ret
;
}
...
...
trunk/src/app/srs_app_server.cpp
查看文件 @
bf9166d
...
...
@@ -374,8 +374,6 @@ SrsSignalManager::SrsSignalManager(SrsServer* server)
SrsSignalManager
::~
SrsSignalManager
()
{
srs_freep
(
pthread
);
srs_close_stfd
(
signal_read_stfd
);
if
(
sig_pipe
[
0
]
>
0
)
{
...
...
@@ -384,18 +382,32 @@ SrsSignalManager::~SrsSignalManager()
if
(
sig_pipe
[
1
]
>
0
)
{
::
close
(
sig_pipe
[
1
]);
}
srs_freep
(
pthread
);
}
int
SrsSignalManager
::
initialize
()
{
int
ret
=
ERROR_SUCCESS
;
/* Create signal pipe */
if
(
pipe
(
sig_pipe
)
<
0
)
{
ret
=
ERROR_SYSTEM_CREATE_PIPE
;
srs_error
(
"create signal manager pipe failed. ret=%d"
,
ret
);
return
ret
;
}
if
((
signal_read_stfd
=
st_netfd_open
(
sig_pipe
[
0
]))
==
NULL
)
{
ret
=
ERROR_SYSTEM_CREATE_PIPE
;
srs_error
(
"create signal manage st pipe failed. ret=%d"
,
ret
);
return
ret
;
}
return
ret
;
}
int
SrsSignalManager
::
start
()
{
int
ret
=
ERROR_SUCCESS
;
/**
* Note that if multiple processes are used (see below),
* the signal pipe should be initialized after the fork(2) call
...
...
@@ -403,13 +415,6 @@ int SrsSignalManager::start()
*/
struct
sigaction
sa
;
/* Create signal pipe */
if
(
pipe
(
sig_pipe
)
<
0
)
{
ret
=
ERROR_SYSTEM_CREATE_PIPE
;
srs_error
(
"create signal manager pipe failed. ret=%d"
,
ret
);
return
ret
;
}
/* Install sig_catcher() as a signal handler */
sa
.
sa_handler
=
SrsSignalManager
::
sig_catcher
;
sigemptyset
(
&
sa
.
sa_mask
);
...
...
@@ -439,10 +444,6 @@ int SrsSignalManager::start()
int
SrsSignalManager
::
cycle
()
{
int
ret
=
ERROR_SUCCESS
;
if
(
signal_read_stfd
==
NULL
)
{
signal_read_stfd
=
st_netfd_open
(
sig_pipe
[
0
]);
}
int
signo
;
...
...
@@ -538,8 +539,6 @@ void SrsServer::destroy()
}
srs_freep
(
signal_manager
);
srs_freep
(
handler
);
}
void
SrsServer
::
dispose
()
...
...
@@ -852,6 +851,7 @@ int SrsServer::cycle()
#else
srs_warn
(
"main cycle terminated, system quit normally."
);
dispose
();
srs_trace
(
"srs terminated"
);
exit
(
0
);
#endif
...
...
trunk/src/app/srs_app_server.hpp
查看文件 @
bf9166d
...
...
@@ -293,10 +293,14 @@ private:
virtual
void
dispose
();
// server startup workflow, @see run_master()
public:
/**
* initialize server with callback handler.
* @remark user must free the cycle handler.
*/
virtual
int
initialize
(
ISrsServerCycle
*
cycle_handler
);
virtual
int
initialize_st
();
virtual
int
initialize_signal
();
virtual
int
acquire_pid_file
();
virtual
int
initialize_st
();
virtual
int
listen
();
virtual
int
register_signal
();
virtual
int
http_handle
();
...
...
trunk/src/app/srs_app_thread.cpp
查看文件 @
bf9166d
...
...
@@ -129,19 +129,20 @@ namespace internal {
if
(
ret
)
{
srs_warn
(
"core: ignore join thread failed."
);
}
}
// wait the thread actually terminated.
// sometimes the thread join return -1, for example,
// when thread use st_recvfrom, the thread join return -1.
// so here, we use a variable to ensure the thread stopped.
// @remark even the thread not joinable, we must ensure the thread stopped when stop.
while
(
!
really_terminated
)
{
st_usleep
(
10
*
1000
);
// wait the thread actually terminated.
// sometimes the thread join return -1, for example,
// when thread use st_recvfrom, the thread join return -1.
// so here, we use a variable to ensure the thread stopped.
while
(
!
really_terminated
)
{
st_usleep
(
10
*
1000
);
if
(
really_terminated
)
{
break
;
}
srs_warn
(
"core: wait thread to actually terminated"
);
if
(
really_terminated
)
{
break
;
}
srs_warn
(
"core: wait thread to actually terminated"
);
}
tid
=
NULL
;
...
...
trunk/src/kernel/srs_kernel_error.hpp
查看文件 @
bf9166d
...
...
@@ -223,6 +223,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define ERROR_HDS_OPEN_FRAGMENT_FAILED 3060
#define ERROR_HDS_WRITE_FRAGMENT_FAILED 3061
#define ERROR_HLS_NO_STREAM 3062
#define ERROR_JSON_LOADS 3063
#define ERROR_RESPONSE_CODE 3064
///////////////////////////////////////////////////////
// HTTP/StreamCaster protocol error.
...
...
@@ -262,6 +264,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// user-define error.
///////////////////////////////////////////////////////
#define ERROR_USER_START 9000
#define ERROR_USER_DISCONNECT 9001
#define ERROR_SOURCE_NOT_FOUND 9002
#define ERROR_USER_END 9999
/**
...
...
trunk/src/kernel/srs_kernel_flv.cpp
查看文件 @
bf9166d
...
...
@@ -166,6 +166,18 @@ SrsCommonMessage::~SrsCommonMessage()
srs_freep
(
payload
);
}
void
SrsCommonMessage
::
create_payload
(
int
size
)
{
srs_freep
(
payload
);
payload
=
new
char
[
size
];
srs_verbose
(
"create payload for RTMP message. size=%d"
,
size
);
#ifdef SRS_MEM_WATCH
srs_memory_watch
(
payload
,
"RTMP.msg.payload"
,
size
);
#endif
}
SrsSharedPtrMessage
::
SrsSharedPtrPayload
::
SrsSharedPtrPayload
()
{
payload
=
NULL
;
...
...
trunk/src/kernel/srs_kernel_flv.hpp
查看文件 @
bf9166d
...
...
@@ -283,8 +283,12 @@ public:
char
*
payload
;
public
:
SrsCommonMessage
();
public
:
virtual
~
SrsCommonMessage
();
public
:
/**
* alloc the payload to specified size of bytes.
*/
virtual
void
create_payload
(
int
size
);
};
/**
...
...
trunk/src/main/srs_main_server.cpp
查看文件 @
bf9166d
...
...
@@ -254,6 +254,11 @@ int main(int argc, char** argv)
"it is not possible to run both the heap-checker and heap profiler at the same time"
);
#endif
// never use gmp to check memory leak.
#ifdef SRS_AUTO_GPERF_MP
#warning "gmp is not used for memory leak, please use gmc instead."
#endif
// never use srs log(srs_trace, srs_error, etc) before config parse the option,
// which will load the log config and apply it.
if
((
ret
=
_srs_config
->
parse_options
(
argc
,
argv
))
!=
ERROR_SUCCESS
)
{
...
...
trunk/src/protocol/srs_rtmp_stack.cpp
查看文件 @
bf9166d
...
...
@@ -30,7 +30,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_kernel_utility.hpp>
#include <srs_protocol_buffer.hpp>
#include <srs_rtmp_utility.hpp>
#include <srs_core_mem_watch.hpp>
// for srs-librtmp, @see https://github.com/simple-rtmp-server/srs/issues/213
#ifndef _WIN32
...
...
@@ -1411,11 +1410,7 @@ int SrsProtocol::read_message_payload(SrsChunkStream* chunk, SrsCommonMessage**
// create msg payload if not initialized
if
(
!
chunk
->
msg
->
payload
)
{
chunk
->
msg
->
payload
=
new
char
[
chunk
->
header
.
payload_length
];
srs_verbose
(
"create payload for RTMP message. size=%d"
,
chunk
->
header
.
payload_length
);
#ifdef SRS_MEM_WATCH
srs_memory_watch
(
chunk
->
msg
->
payload
,
"msg.payload"
,
chunk
->
header
.
payload_length
);
#endif
chunk
->
msg
->
create_payload
(
chunk
->
header
.
payload_length
);
}
// read payload to buffer
...
...
请
注册
或
登录
后发表评论