|
|
|
@ -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();
|
|
|
|
|