diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index ccc4738c7..c82963fb7 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -2656,6 +2656,29 @@ string SrsConfig::get_vhost_http_dir(string vhost) return conf->arg0(); } +void SrsConfig::set_atc(std::string vhost, bool atc) +{ + SrsConfDirective* conf = get_vhost(vhost); + if (!conf) { + return; + } + + // create if not exists + if (conf->get("atc") == NULL) { + SrsConfDirective* o = new SrsConfDirective(); + o->name = "atc"; + conf->directives.push_back(o); + } + + // get the atc node + conf = conf->get("atc"); + srs_assert(conf); + + // refresh + conf->directives.clear(); + conf->args.push_back((atc? "true":"false")); +} + bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b) { // both NULL, equal. diff --git a/trunk/src/app/srs_app_config.hpp b/trunk/src/app/srs_app_config.hpp index d5d43f98b..330a193d9 100644 --- a/trunk/src/app/srs_app_config.hpp +++ b/trunk/src/app/srs_app_config.hpp @@ -269,6 +269,9 @@ public: virtual bool get_vhost_http_enabled(std::string vhost); virtual std::string get_vhost_http_mount(std::string vhost); virtual std::string get_vhost_http_dir(std::string vhost); +// setter in memory +public: + virtual void set_atc(std::string vhost, bool atc); }; /** diff --git a/trunk/src/app/srs_app_source.cpp b/trunk/src/app/srs_app_source.cpp index 2f0f09c7e..f660abf6c 100644 --- a/trunk/src/app/srs_app_source.cpp +++ b/trunk/src/app/srs_app_source.cpp @@ -822,6 +822,14 @@ int SrsSource::on_meta_data(SrsMessage* msg, SrsOnMetaDataPacket* metadata) } } + // if bravo-atc, open atc for vhost. + if ((prop = metadata->metadata->get_property("bravo_atc")) != NULL) { + if (prop->is_string() && prop->to_str() == "true") { + atc = true; + _srs_config->set_atc(_req->vhost, true); + } + } + // encode the metadata to payload int size = 0; char* payload = NULL; diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index 1c4eb6481..6f213c446 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // current release version #define VERSION_MAJOR "0" #define VERSION_MINOR "9" -#define VERSION_REVISION "82" +#define VERSION_REVISION "83" #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION // server info. #define RTMP_SIG_SRS_KEY "srs"