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:
parent
aebbbadf42
commit
6eae93258a
47 changed files with 1098 additions and 1432 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue