winlin

fast stop server.

@@ -270,7 +270,9 @@ int SrsTcpListener::cycle() @@ -270,7 +270,9 @@ int SrsTcpListener::cycle()
270 270
271 if(client_stfd == NULL){ 271 if(client_stfd == NULL){
272 // ignore error. 272 // ignore error.
273 - srs_error("ignore accept thread stoppped for accept client error"); 273 + if (errno != EINTR) {
  274 + srs_error("ignore accept thread stoppped for accept client error");
  275 + }
274 return ret; 276 return ret;
275 } 277 }
276 srs_verbose("get a client. fd=%d", st_netfd_fileno(client_stfd)); 278 srs_verbose("get a client. fd=%d", st_netfd_fileno(client_stfd));
@@ -566,26 +566,17 @@ void SrsServer::dispose() @@ -566,26 +566,17 @@ void SrsServer::dispose()
566 close_listeners(SrsListenerRtsp); 566 close_listeners(SrsListenerRtsp);
567 close_listeners(SrsListenerFlv); 567 close_listeners(SrsListenerFlv);
568 568
569 -#ifdef SRS_AUTO_INGEST  
570 - ingester->dispose();  
571 -#endif 569 + // @remark don't dispose ingesters, for too slow.
572 570
573 #ifdef SRS_AUTO_KAFKA 571 #ifdef SRS_AUTO_KAFKA
574 kafka->stop(); 572 kafka->stop();
575 #endif 573 #endif
576 574
  575 + // dispose the source for hls and dvr.
577 SrsSource::dispose_all(); 576 SrsSource::dispose_all();
578 577
579 - while (!conns.empty()) {  
580 - std::vector<SrsConnection*>::iterator it;  
581 - for (it = conns.begin(); it != conns.end(); ++it) {  
582 - SrsConnection* conn = *it;  
583 - conn->dispose();  
584 - }  
585 -  
586 - st_usleep(100 * 1000);  
587 - }  
588 - 578 + // @remark don't dispose all connections, for too slow.
  579 +
589 #ifdef SRS_AUTO_MEM_WATCH 580 #ifdef SRS_AUTO_MEM_WATCH
590 srs_memory_report(); 581 srs_memory_report();
591 #endif 582 #endif
@@ -907,6 +898,7 @@ int SrsServer::cycle() @@ -907,6 +898,7 @@ int SrsServer::cycle()
907 st_usleep(3 * 1000 * 1000); 898 st_usleep(3 * 1000 * 1000);
908 srs_warn("system quit"); 899 srs_warn("system quit");
909 #else 900 #else
  901 + // normally quit with neccessary cleanup by dispose().
910 srs_warn("main cycle terminated, system quit normally."); 902 srs_warn("main cycle terminated, system quit normally.");
911 dispose(); 903 dispose();
912 srs_trace("srs terminated"); 904 srs_trace("srs terminated");