1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

cleanup connections when terminate server.

This commit is contained in:
winlin 2015-06-08 14:03:16 +08:00
parent 573495a19f
commit d7e5df2578
6 changed files with 48 additions and 31 deletions

View file

@ -514,17 +514,7 @@ void SrsServer::destroy()
{
srs_warn("start destroy server");
_srs_config->unsubscribe(this);
close_listeners(SrsListenerRtmpStream);
close_listeners(SrsListenerHttpApi);
close_listeners(SrsListenerHttpStream);
#ifdef SRS_AUTO_INGEST
ingester->dispose();
#endif
SrsSource::dispose_all();
dispose();
#ifdef SRS_AUTO_HTTP_API
srs_freep(http_api_mux);
@ -550,32 +540,35 @@ void SrsServer::destroy()
srs_freep(signal_manager);
srs_freep(handler);
// @remark never destroy the connections,
// for it's still alive.
// @remark never destroy the source,
// when we free all sources, the fmle publish may retry
// and segment fault.
#ifdef SRS_MEM_WATCH
srs_memory_report();
#endif
}
void SrsServer::dispose()
{
_srs_config->unsubscribe(this);
// prevent fresh clients.
close_listeners(SrsListenerRtmpStream);
close_listeners(SrsListenerHttpApi);
close_listeners(SrsListenerHttpStream);
close_listeners(SrsListenerMpegTsOverUdp);
close_listeners(SrsListenerRtsp);
close_listeners(SrsListenerFlv);
#ifdef SRS_AUTO_INGEST
ingester->dispose();
srs_trace("gracefully dispose ingesters");
#endif
SrsSource::dispose_all();
srs_trace("gracefully dispose sources");
srs_trace("terminate server");
while (!conns.empty()) {
std::vector<SrsConnection*>::iterator it;
for (it = conns.begin(); it != conns.end(); ++it) {
SrsConnection* conn = *it;
conn->dispose();
}
st_usleep(100 * 1000);
}
#ifdef SRS_MEM_WATCH
srs_memory_report();