diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp index cd0849b6d..271a7ad13 100644 --- a/trunk/src/app/srs_app_server.cpp +++ b/trunk/src/app/srs_app_server.cpp @@ -586,14 +586,14 @@ srs_error_t SrsServer::initialize(ISrsServerCycle* cycle_handler) return err; } -int SrsServer::initialize_st() +srs_error_t SrsServer::initialize_st() { int ret = ERROR_SUCCESS; + srs_error_t err = srs_success; // init st if ((ret = srs_st_init()) != ERROR_SUCCESS) { - srs_error("init st failed. ret=%d", ret); - return ret; + return srs_error_new(ret, "initialize st failed"); } // @remark, st alloc segment use mmap, which only support 32757 threads, @@ -601,11 +601,11 @@ int SrsServer::initialize_st() // TODO: FIXME: maybe can use "sysctl vm.max_map_count" to refine. #define __MMAP_MAX_CONNECTIONS 32756 if (_srs_config->get_max_connections() > __MMAP_MAX_CONNECTIONS) { - ret = ERROR_ST_EXCEED_THREADS; srs_error("st mmap for stack allocation must <= %d threads, " "@see Makefile of st for MALLOC_STACK, please build st manually by " - "\"make EXTRA_CFLAGS=-DMALLOC_STACK linux-debug\", ret=%d", __MMAP_MAX_CONNECTIONS, ret); - return ret; + "\"make EXTRA_CFLAGS=-DMALLOC_STACK linux-debug\"", __MMAP_MAX_CONNECTIONS); + return srs_error_new(ERROR_ST_EXCEED_THREADS, "%d exceed max %d threads", + _srs_config->get_max_connections(), __MMAP_MAX_CONNECTIONS); } // set current log id. @@ -614,22 +614,20 @@ int SrsServer::initialize_st() // initialize the conponents that depends on st. #ifdef SRS_AUTO_KAFKA if ((ret = srs_initialize_kafka()) != ERROR_SUCCESS) { - srs_error("initialize kafka failed, ret=%d", ret); - return ret; + return srs_error_new(ret, "initialize kafka"); } #endif // check asprocess. bool asprocess = _srs_config->get_asprocess(); if (asprocess && ppid == 1) { - ret = ERROR_SYSTEM_ASSERT_FAILED; - srs_error("for asprocess, ppid should never be init(1), ret=%d", ret); - return ret; + return srs_error_new(ERROR_SYSTEM_ASSERT_FAILED, "ppid=%d illegal for asprocess", ppid); } - srs_trace("server main cid=%d, pid=%d, ppid=%d, asprocess=%d", - _srs_context->get_id(), ::getpid(), ppid, asprocess); - return ret; + srs_trace("server main cid=%d, pid=%d, ppid=%d, asprocess=%d", + _srs_context->get_id(), ::getpid(), ppid, asprocess); + + return err; } int SrsServer::initialize_signal() diff --git a/trunk/src/app/srs_app_server.hpp b/trunk/src/app/srs_app_server.hpp index 8a58e9a9d..77be38a8b 100644 --- a/trunk/src/app/srs_app_server.hpp +++ b/trunk/src/app/srs_app_server.hpp @@ -302,7 +302,7 @@ public: * @remark user must free the cycle handler. */ virtual srs_error_t initialize(ISrsServerCycle* cycle_handler); - virtual int initialize_st(); + virtual srs_error_t initialize_st(); virtual int initialize_signal(); virtual int acquire_pid_file(); virtual int listen(); diff --git a/trunk/src/main/srs_main_server.cpp b/trunk/src/main/srs_main_server.cpp index 14680244b..3808e1de9 100644 --- a/trunk/src/main/srs_main_server.cpp +++ b/trunk/src/main/srs_main_server.cpp @@ -51,7 +51,7 @@ using namespace std; // pre-declare srs_error_t run(SrsServer* svr); -int run_master(SrsServer* svr); +srs_error_t run_master(SrsServer* svr); void show_macro_features(); string srs_getenv(const char* name); @@ -342,7 +342,7 @@ void show_macro_features() #if VERSION_MAJOR > VERSION_STABLE #warning "Current branch is unstable." - srs_warn("Develop is unstable, please use branch: git checkout %s", VERSION_STABLE_BRANCH); + srs_warn("Develop is unstable, please use branch: git checkout -b %s origin/%s", VERSION_STABLE_BRANCH, VERSION_STABLE_BRANCH); #endif #if defined(SRS_PERF_SO_SNDBUF_SIZE) && !defined(SRS_PERF_MW_SO_SNDBUF) @@ -377,8 +377,8 @@ srs_error_t run(SrsServer* svr) // if not deamon, directly run master. if (!_srs_config->get_deamon()) { - if ((ret = run_master(svr)) != ERROR_SUCCESS) { - return srs_error_new(ret, "run master"); + if ((err = run_master(svr)) != srs_success) { + return srs_error_wrap(err, "run master"); } return srs_success; } @@ -414,49 +414,50 @@ srs_error_t run(SrsServer* svr) // son srs_trace("son(deamon) process running."); - if ((ret = run_master(svr)) != ERROR_SUCCESS) { - return srs_error_new(ret, "daemon run master"); + if ((err = run_master(svr)) != srs_success) { + return srs_error_wrap(err, "daemon run master"); } return srs_success; } -int run_master(SrsServer* svr) +srs_error_t run_master(SrsServer* svr) { int ret = ERROR_SUCCESS; + srs_error_t err = srs_success; - if ((ret = svr->initialize_st()) != ERROR_SUCCESS) { - return ret; + if ((err = svr->initialize_st()) != srs_success) { + return srs_error_wrap(err, "initialize st"); } if ((ret = svr->initialize_signal()) != ERROR_SUCCESS) { - return ret; + return srs_error_new(ret, "initialize signal"); } if ((ret = svr->acquire_pid_file()) != ERROR_SUCCESS) { - return ret; + return srs_error_new(ret, "acquire pid file"); } if ((ret = svr->listen()) != ERROR_SUCCESS) { - return ret; + return srs_error_new(ret, "listen"); } if ((ret = svr->register_signal()) != ERROR_SUCCESS) { - return ret; + return srs_error_new(ret, "register signal"); } if ((ret = svr->http_handle()) != ERROR_SUCCESS) { - return ret; + return srs_error_new(ret, "http handle"); } if ((ret = svr->ingest()) != ERROR_SUCCESS) { - return ret; + return srs_error_new(ret, "ingest"); } if ((ret = svr->cycle()) != ERROR_SUCCESS) { - return ret; + return srs_error_new(ret, "main cycle"); } - return 0; + return err; }