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

For #913, APP support complex error.

This commit is contained in:
winlin 2018-01-01 19:39:57 +08:00
parent aebbbadf42
commit 6eae93258a
47 changed files with 1098 additions and 1432 deletions

View file

@ -62,14 +62,13 @@ SrsVodStream::~SrsVodStream()
srs_error_t SrsVodStream::serve_flv_stream(ISrsHttpResponseWriter* w, ISrsHttpMessage* r, string fullpath, int offset)
{
int ret = ERROR_SUCCESS;
srs_error_t err = srs_success;
SrsFileReader fs;
// open flv file
if ((ret = fs.open(fullpath)) != ERROR_SUCCESS) {
return srs_error_new(ret, "open file");
if ((err = fs.open(fullpath)) != srs_success) {
return srs_error_wrap(err, "open file");
}
if (offset > fs.filesize()) {
@ -80,16 +79,16 @@ srs_error_t SrsVodStream::serve_flv_stream(ISrsHttpResponseWriter* w, ISrsHttpMe
SrsFlvVodStreamDecoder ffd;
// open fast decoder
if ((ret = ffd.initialize(&fs)) != ERROR_SUCCESS) {
return srs_error_new(ret, "init ffd");
if ((err = ffd.initialize(&fs)) != srs_success) {
return srs_error_wrap(err, "init ffd");
}
// save header, send later.
char flv_header[13];
// send flv header
if ((ret = ffd.read_header_ext(flv_header)) != ERROR_SUCCESS) {
return srs_error_new(ret, "ffd read header");
if ((err = ffd.read_header_ext(flv_header)) != srs_success) {
return srs_error_wrap(err, "ffd read header");
}
// save sequence header, send later
@ -99,8 +98,8 @@ srs_error_t SrsVodStream::serve_flv_stream(ISrsHttpResponseWriter* w, ISrsHttpMe
if (true) {
// send sequence header
int64_t start = 0;
if ((ret = ffd.read_sequence_header_summary(&start, &sh_size)) != ERROR_SUCCESS) {
return srs_error_new(ret, "ffd read sps");
if ((err = ffd.read_sequence_header_summary(&start, &sh_size)) != srs_success) {
return srs_error_wrap(err, "ffd read sps");
}
if (sh_size <= 0) {
return srs_error_new(ERROR_HTTP_REMUX_SEQUENCE_HEADER, "no sequence, size=%d", sh_size);
@ -108,8 +107,8 @@ srs_error_t SrsVodStream::serve_flv_stream(ISrsHttpResponseWriter* w, ISrsHttpMe
}
sh_data = new char[sh_size];
SrsAutoFreeA(char, sh_data);
if ((ret = fs.read(sh_data, sh_size, NULL)) != ERROR_SUCCESS) {
return srs_error_new(ret, "fs read");
if ((err = fs.read(sh_data, sh_size, NULL)) != srs_success) {
return srs_error_wrap(err, "fs read");
}
// seek to data offset
@ -120,16 +119,16 @@ srs_error_t SrsVodStream::serve_flv_stream(ISrsHttpResponseWriter* w, ISrsHttpMe
w->header()->set_content_type("video/x-flv");
// write flv header and sequence header.
if ((ret = w->write(flv_header, sizeof(flv_header))) != ERROR_SUCCESS) {
return srs_error_new(ret, "write flv header");
if ((err = w->write(flv_header, sizeof(flv_header))) != srs_success) {
return srs_error_wrap(err, "write flv header");
}
if (sh_size > 0 && (ret = w->write(sh_data, sh_size)) != ERROR_SUCCESS) {
return srs_error_new(ret, "write sequence");
if (sh_size > 0 && (err = w->write(sh_data, sh_size)) != srs_success) {
return srs_error_wrap(err, "write sequence");
}
// write body.
if ((ret = ffd.seek2(offset)) != ERROR_SUCCESS) {
return srs_error_new(ret, "ffd seek");
if ((err = ffd.seek2(offset)) != srs_success) {
return srs_error_wrap(err, "ffd seek");
}
// send data
@ -142,7 +141,6 @@ srs_error_t SrsVodStream::serve_flv_stream(ISrsHttpResponseWriter* w, ISrsHttpMe
srs_error_t SrsVodStream::serve_mp4_stream(ISrsHttpResponseWriter* w, ISrsHttpMessage* r, string fullpath, int start, int end)
{
int ret = ERROR_SUCCESS;
srs_error_t err = srs_success;
srs_assert(start >= 0);
@ -151,8 +149,8 @@ srs_error_t SrsVodStream::serve_mp4_stream(ISrsHttpResponseWriter* w, ISrsHttpMe
SrsFileReader fs;
// open flv file
if ((ret = fs.open(fullpath)) != ERROR_SUCCESS) {
return srs_error_new(ret, "fs open");
if ((err = fs.open(fullpath)) != srs_success) {
return srs_error_wrap(err, "fs open");
}
// parse -1 to whole file.
@ -204,7 +202,6 @@ SrsHttpStaticServer::~SrsHttpStaticServer()
srs_error_t SrsHttpStaticServer::initialize()
{
int ret = ERROR_SUCCESS;
srs_error_t err = srs_success;
bool default_root_exists = false;
@ -220,8 +217,8 @@ srs_error_t SrsHttpStaticServer::initialize()
string pmount;
string vhost = conf->arg0();
if ((ret = mount_vhost(vhost, pmount)) != ERROR_SUCCESS) {
return srs_error_new(ret, "mount vhost");
if ((err = mount_vhost(vhost, pmount)) != srs_success) {
return srs_error_wrap(err, "mount vhost");
}
if (pmount == "/") {
@ -243,19 +240,18 @@ srs_error_t SrsHttpStaticServer::initialize()
return err;
}
int SrsHttpStaticServer::mount_vhost(string vhost, string& pmount)
srs_error_t SrsHttpStaticServer::mount_vhost(string vhost, string& pmount)
{
int ret = ERROR_SUCCESS;
srs_error_t err = srs_success;
// when vhost disabled, ignore.
if (!_srs_config->get_vhost_enabled(vhost)) {
return ret;
return err;
}
// when vhost http_static disabled, ignore.
if (!_srs_config->get_vhost_http_enabled(vhost)) {
return ret;
return err;
}
std::string mount = _srs_config->get_vhost_http_mount(vhost);
@ -275,28 +271,22 @@ int SrsHttpStaticServer::mount_vhost(string vhost, string& pmount)
// mount the http of vhost.
if ((err = mux.handle(mount, new SrsVodStream(dir))) != srs_success) {
// TODO: FIXME: Use error.
ret = srs_error_code(err);
srs_freep(err);
srs_error("http: mount dir=%s for vhost=%s failed. ret=%d", dir.c_str(), vhost.c_str(), ret);
return ret;
return srs_error_wrap(err, "mux handle");
}
srs_trace("http: vhost=%s mount to %s at %s", vhost.c_str(), mount.c_str(), dir.c_str());
pmount = mount;
return ret;
return err;
}
srs_error_t SrsHttpStaticServer::on_reload_vhost_added(string vhost)
{
int ret = ERROR_SUCCESS;
srs_error_t err = srs_success;
string pmount;
if ((ret = mount_vhost(vhost, pmount)) != ERROR_SUCCESS) {
return srs_error_new(ret, "mount vhost");
if ((err = mount_vhost(vhost, pmount)) != srs_success) {
return srs_error_wrap(err, "mount vhost");
}
return err;