For #1657, refine code

pull/2023/head
winlin 4 years ago
parent 5709ee1b63
commit 32c1832d64

@ -143,6 +143,9 @@ srs_error_t SrsAppCasterFlv::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessa
SrsDynamicHttpConn::SrsDynamicHttpConn(ISrsResourceManager* cm, srs_netfd_t fd, SrsHttpServeMux* m, string cip, int cport) SrsDynamicHttpConn::SrsDynamicHttpConn(ISrsResourceManager* cm, srs_netfd_t fd, SrsHttpServeMux* m, string cip, int cport)
{ {
// Create a identify for this client.
_srs_context->set_id(_srs_context->generate_id());
manager = cm; manager = cm;
sdk = NULL; sdk = NULL;
pprint = SrsPithyPrint::create_caster(); pprint = SrsPithyPrint::create_caster();

@ -1676,6 +1676,9 @@ srs_error_t SrsGoApiTcmalloc::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMess
SrsHttpApi::SrsHttpApi(bool https, ISrsResourceManager* cm, srs_netfd_t fd, SrsHttpServeMux* m, string cip, int port) SrsHttpApi::SrsHttpApi(bool https, ISrsResourceManager* cm, srs_netfd_t fd, SrsHttpServeMux* m, string cip, int port)
{ {
// Create a identify for this client.
_srs_context->set_id(_srs_context->generate_id());
manager = cm; manager = cm;
skt = new SrsTcpConnection(fd); skt = new SrsTcpConnection(fd);
@ -1703,20 +1706,22 @@ srs_error_t SrsHttpApi::on_start()
{ {
srs_error_t err = srs_success; srs_error_t err = srs_success;
srs_utime_t starttime = srs_update_system_time();
string crt_file = _srs_config->get_https_api_ssl_cert();
string key_file = _srs_config->get_https_api_ssl_key();
if (ssl && (err = ssl->handshake(key_file, crt_file)) != srs_success) {
return srs_error_wrap(err, "handshake");
}
if ((err = conn->set_jsonp(true)) != srs_success) { if ((err = conn->set_jsonp(true)) != srs_success) {
return srs_error_wrap(err, "set jsonp"); return srs_error_wrap(err, "set jsonp");
} }
int cost = srsu2msi(srs_update_system_time() - starttime); if (ssl) {
srs_trace("https: api server done, use key %s and cert %s, cost=%dms", srs_utime_t starttime = srs_update_system_time();
key_file.c_str(), crt_file.c_str(), cost); string crt_file = _srs_config->get_https_api_ssl_cert();
string key_file = _srs_config->get_https_api_ssl_key();
if ((err = ssl->handshake(key_file, crt_file)) != srs_success) {
return srs_error_wrap(err, "handshake");
}
int cost = srsu2msi(srs_update_system_time() - starttime);
srs_trace("https: api server done, use key %s and cert %s, cost=%dms",
key_file.c_str(), crt_file.c_str(), cost);
}
return err; return err;
} }

@ -305,6 +305,9 @@ void SrsHttpConn::expire()
SrsResponseOnlyHttpConn::SrsResponseOnlyHttpConn(bool https, ISrsResourceManager* cm, srs_netfd_t fd, ISrsHttpServeMux* m, string cip, int port) SrsResponseOnlyHttpConn::SrsResponseOnlyHttpConn(bool https, ISrsResourceManager* cm, srs_netfd_t fd, ISrsHttpServeMux* m, string cip, int port)
{ {
// Create a identify for this client.
_srs_context->set_id(_srs_context->generate_id());
manager = cm; manager = cm;
skt = new SrsTcpConnection(fd); skt = new SrsTcpConnection(fd);
@ -373,16 +376,18 @@ srs_error_t SrsResponseOnlyHttpConn::on_start()
{ {
srs_error_t err = srs_success; srs_error_t err = srs_success;
srs_utime_t starttime = srs_update_system_time(); if (ssl) {
string crt_file = _srs_config->get_https_stream_ssl_cert(); srs_utime_t starttime = srs_update_system_time();
string key_file = _srs_config->get_https_stream_ssl_key(); string crt_file = _srs_config->get_https_stream_ssl_cert();
if (ssl && (err = ssl->handshake(key_file, crt_file)) != srs_success) { string key_file = _srs_config->get_https_stream_ssl_key();
return srs_error_wrap(err, "handshake"); if ((err = ssl->handshake(key_file, crt_file)) != srs_success) {
} return srs_error_wrap(err, "handshake");
}
int cost = srsu2msi(srs_update_system_time() - starttime); int cost = srsu2msi(srs_update_system_time() - starttime);
srs_trace("https: stream server done, use key %s and cert %s, cost=%dms", srs_trace("https: stream server done, use key %s and cert %s, cost=%dms",
key_file.c_str(), crt_file.c_str(), cost); key_file.c_str(), crt_file.c_str(), cost);
}
return err; return err;
} }

@ -106,6 +106,9 @@ SrsClientInfo::~SrsClientInfo()
SrsRtmpConn::SrsRtmpConn(SrsServer* svr, srs_netfd_t c, string cip, int cport) SrsRtmpConn::SrsRtmpConn(SrsServer* svr, srs_netfd_t c, string cip, int cport)
{ {
// Create a identify for this client.
_srs_context->set_id(_srs_context->generate_id());
server = svr; server = svr;
stfd = c; stfd = c;
@ -117,7 +120,7 @@ SrsRtmpConn::SrsRtmpConn(SrsServer* svr, srs_netfd_t c, string cip, int cport)
clk = new SrsWallClock(); clk = new SrsWallClock();
kbps = new SrsKbps(clk); kbps = new SrsKbps(clk);
kbps->set_io(skt, skt); kbps->set_io(skt, skt);
trd = new SrsSTCoroutine("rtmp", this); trd = new SrsSTCoroutine("rtmp", this, _srs_context->get_id());
rtmp = new SrsRtmpServer(skt); rtmp = new SrsRtmpServer(skt);
refer = new SrsRefer(); refer = new SrsRefer();

@ -1609,6 +1609,9 @@ srs_error_t SrsServer::fd_to_resource(SrsListenerType type, srs_netfd_t stfd, IS
} }
} }
// The context id may change during creating the bellow objects.
SrsContextRestore(_srs_context->get_id());
if (type == SrsListenerRtmpStream) { if (type == SrsListenerRtmpStream) {
*pr = new SrsRtmpConn(this, stfd, ip, port); *pr = new SrsRtmpConn(this, stfd, ip, port);
} else if (type == SrsListenerHttpApi) { } else if (type == SrsListenerHttpApi) {

Loading…
Cancel
Save