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

merge from 2.0

This commit is contained in:
winlin 2015-05-24 15:19:50 +08:00
commit f540ce307b
6 changed files with 49 additions and 18 deletions

View file

@ -1854,15 +1854,18 @@ int SrsHttpServer::http_mount(SrsSource* s, SrsRequest* r)
sflvs[sid] = entry;
// start http stream cache thread
if ((ret = entry->cache->start()) != ERROR_SUCCESS) {
srs_error("http: start stream cache failed. ret=%d", ret);
// mount the http flv stream.
// we must register the handler, then start the thread,
// for the thread will cause thread switch context.
// @see https://github.com/simple-rtmp-server/srs/issues/404
if ((ret = mux.handle(mount, entry->stream)) != ERROR_SUCCESS) {
srs_error("http: mount flv stream for vhost=%s failed. ret=%d", sid.c_str(), ret);
return ret;
}
// mount the http flv stream.
if ((ret = mux.handle(mount, entry->stream)) != ERROR_SUCCESS) {
srs_error("http: mount flv stream for vhost=%s failed. ret=%d", sid.c_str(), ret);
// start http stream cache thread
if ((ret = entry->cache->start()) != ERROR_SUCCESS) {
srs_error("http: start stream cache failed. ret=%d", ret);
return ret;
}
srs_trace("http: mount flv stream for vhost=%s, mount=%s", sid.c_str(), mount.c_str());

View file

@ -786,6 +786,13 @@ int SrsServer::http_handle()
return ret;
}
#endif
#ifdef SRS_AUTO_HTTP_SERVER
// for SRS go-sharp to detect the status of HTTP server of SRS HTTP FLV Cluster.
if ((ret = http_stream_mux->mux.handle("/api/v1/versions", new SrsGoApiVersion())) != ERROR_SUCCESS) {
return ret;
}
#endif
return ret;
}

View file

@ -134,7 +134,9 @@ int SrsFlvEncoder::write_metadata(char type, char* data, int size)
tag_stream->write_3bytes(size);
if ((ret = write_tag(tag_header, sizeof(tag_header), data, size)) != ERROR_SUCCESS) {
srs_error("write flv data tag failed. ret=%d", ret);
if (!srs_is_client_gracefully_close(ret)) {
srs_error("write flv data tag failed. ret=%d", ret);
}
return ret;
}
@ -168,7 +170,9 @@ int SrsFlvEncoder::write_audio(int64_t timestamp, char* data, int size)
tag_stream->write_1bytes((timestamp >> 24) & 0xFF);
if ((ret = write_tag(tag_header, sizeof(tag_header), data, size)) != ERROR_SUCCESS) {
srs_error("write flv audio tag failed. ret=%d", ret);
if (!srs_is_client_gracefully_close(ret)) {
srs_error("write flv audio tag failed. ret=%d", ret);
}
return ret;
}
@ -221,13 +225,17 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* tag, int tag_s
// write tag header.
if ((ret = _fs->write(header, header_size, NULL)) != ERROR_SUCCESS) {
srs_error("write flv tag header failed. ret=%d", ret);
if (!srs_is_client_gracefully_close(ret)) {
srs_error("write flv tag header failed. ret=%d", ret);
}
return ret;
}
// write tag data.
if ((ret = _fs->write(tag, tag_size, NULL)) != ERROR_SUCCESS) {
srs_error("write flv tag failed. ret=%d", ret);
if (!srs_is_client_gracefully_close(ret)) {
srs_error("write flv tag failed. ret=%d", ret);
}
return ret;
}
@ -238,7 +246,9 @@ int SrsFlvEncoder::write_tag(char* header, int header_size, char* tag, int tag_s
}
tag_stream->write_4bytes(tag_size + header_size);
if ((ret = _fs->write(pre_size, sizeof(pre_size), NULL)) != ERROR_SUCCESS) {
srs_error("write flv previous tag size failed. ret=%d", ret);
if (!srs_is_client_gracefully_close(ret)) {
srs_error("write flv previous tag size failed. ret=%d", ret);
}
return ret;
}