winlin

auto open atc for bravo_atc set

... ... @@ -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.
... ...
... ... @@ -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);
};
/**
... ...
... ... @@ -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;
... ...
... ... @@ -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"
... ...