@@ -50,7 +50,7 @@ using namespace std;
50
50
#include < srs_core_autofree.hpp>
51
51
52
52
// pre-declare
53
- int run (SrsServer* svr);
53
+ srs_error_t run (SrsServer* svr);
54
54
int run_master (SrsServer* svr);
55
55
void show_macro_features ();
56
56
string srs_getenv (const char * name);
@@ -182,16 +182,14 @@ int main(int argc, char** argv)
182
182
SrsServer* svr = new SrsServer ();
183
183
SrsAutoFree (SrsServer, svr);
184
184
185
- /* *
186
- * we do nothing in the constructor of server,
187
- * and use initialize to create members, set hooks for instance the reload handler,
188
- * all initialize will done in this stage.
189
- */
190
- if ((ret = svr->initialize (NULL )) != ERROR_SUCCESS) {
191
- return ret;
185
+ srs_error_t err = run (svr);
186
+ if (err != srs_success) {
187
+ srs_error (" Failed, %s" , srs_error_desc (err).c_str ());
192
188
}
193
189
194
- return run (svr);
190
+ ret = srs_error_code (err);
191
+ srs_freep (err);
192
+ return ret;
195
193
}
196
194
197
195
/* *
@@ -363,28 +361,40 @@ string srs_getenv(const char* name)
363
361
return " " ;
364
362
}
365
363
366
- int run (SrsServer* svr)
364
+ srs_error_t run (SrsServer* svr)
367
365
{
366
+ int ret = ERROR_SUCCESS;
367
+ srs_error_t err = srs_success;
368
+
369
+ /* *
370
+ * we do nothing in the constructor of server,
371
+ * and use initialize to create members, set hooks for instance the reload handler,
372
+ * all initialize will done in this stage.
373
+ */
374
+ if ((err = svr->initialize (NULL )) != srs_success) {
375
+ return srs_error_wrap (err, " server initialize" );
376
+ }
377
+
368
378
// if not deamon, directly run master.
369
379
if (!_srs_config->get_deamon ()) {
370
- return run_master (svr);
380
+ if ((ret = run_master (svr)) != ERROR_SUCCESS) {
381
+ return srs_error_new (ret, " run master" );
382
+ }
383
+ return srs_success;
371
384
}
372
385
373
386
srs_trace (" start deamon mode..." );
374
387
375
388
int pid = fork ();
376
389
377
390
if (pid < 0 ) {
378
- srs_error (" create process error. ret=-1" ); // ret=0
379
- return -1 ;
391
+ return srs_error_new (-1 , " fork father process" );
380
392
}
381
393
382
394
// grandpa
383
395
if (pid > 0 ) {
384
396
int status = 0 ;
385
- if (waitpid (pid, &status, 0 ) == -1 ) {
386
- srs_error (" wait child process error! ret=-1" ); // ret=0
387
- }
397
+ waitpid (pid, &status, 0 );
388
398
srs_trace (" grandpa process exit." );
389
399
exit (0 );
390
400
}
@@ -393,19 +403,22 @@ int run(SrsServer* svr)
393
403
pid = fork ();
394
404
395
405
if (pid < 0 ) {
396
- srs_error (" create process error. ret=0" );
397
- return -1 ;
406
+ return srs_error_new (-1 , " fork child process" );
398
407
}
399
408
400
409
if (pid > 0 ) {
401
- srs_trace (" father process exit. ret=0 " );
410
+ srs_trace (" father process exit" );
402
411
exit (0 );
403
412
}
404
413
405
414
// son
406
415
srs_trace (" son(deamon) process running." );
407
416
408
- return run_master (svr);
417
+ if ((ret = run_master (svr)) != ERROR_SUCCESS) {
418
+ return srs_error_new (ret, " daemon run master" );
419
+ }
420
+
421
+ return srs_success;
409
422
}
410
423
411
424
int run_master (SrsServer* svr)
0 commit comments