diff --git a/src/controller/controller_capabilities.cpp b/src/controller/controller_capabilities.cpp index 215db106..063fc7ff 100644 --- a/src/controller/controller_capabilities.cpp +++ b/src/controller/controller_capabilities.cpp @@ -36,17 +36,25 @@ namespace Controller { if ((*it).substr(0, 7) == "MistOut"){ arg_one = Util::getMyPath() + (*it); conn_args[0] = arg_one.c_str(); - capabilities["connectors"][(*it).substr(7)] = JSON::fromString(Util::Procs::getOutputOf((char**)conn_args)); - if (capabilities["connectors"][(*it).substr(7)].size() < 1){ - capabilities["connectors"].removeMember((*it).substr(7)); + std::string entryName = (*it).substr(7); + capabilities["connectors"][entryName] = JSON::fromString(Util::Procs::getOutputOf((char**)conn_args)); + if (capabilities["connectors"][entryName].size() < 1){ + capabilities["connectors"].removeMember(entryName); + }else if (capabilities["connectors"][entryName]["version"].asStringRef() != PACKAGE_VERSION){ + WARN_MSG("Output %s version mismatch (%s != " PACKAGE_VERSION ")", entryName.c_str(), capabilities["connectors"][entryName]["version"].asStringRef().c_str()); + capabilities["connectors"].removeMember(entryName); } } if ((*it).substr(0, 6) == "MistIn" && (*it) != "MistInfo"){ arg_one = Util::getMyPath() + (*it); conn_args[0] = arg_one.c_str(); - capabilities["inputs"][(*it).substr(6)] = JSON::fromString(Util::Procs::getOutputOf((char**)conn_args)); - if (capabilities["inputs"][(*it).substr(6)].size() < 1){ + std::string entryName = (*it).substr(6); + capabilities["inputs"][entryName] = JSON::fromString(Util::Procs::getOutputOf((char**)conn_args)); + if (capabilities["inputs"][entryName].size() < 1){ capabilities["inputs"].removeMember((*it).substr(6)); + }else if (capabilities["inputs"][entryName]["version"].asStringRef() != PACKAGE_VERSION){ + WARN_MSG("Input %s version mismatch (%s != " PACKAGE_VERSION ")", entryName.c_str(), capabilities["inputs"][entryName]["version"].asStringRef().c_str()); + capabilities["inputs"].removeMember(entryName); } } } diff --git a/src/input/input.cpp b/src/input/input.cpp index efd66668..b78b6f83 100644 --- a/src/input/input.cpp +++ b/src/input/input.cpp @@ -98,6 +98,7 @@ namespace Mist { Util::Config::streamName = streamName; if (config->getBool("json")) { + capa["version"] = PACKAGE_VERSION; std::cout << capa.toString() << std::endl; return 0; } diff --git a/src/output/mist_out.cpp b/src/output/mist_out.cpp index b5d02796..a0432cce 100644 --- a/src/output/mist_out.cpp +++ b/src/output/mist_out.cpp @@ -15,6 +15,7 @@ int main(int argc, char * argv[]) { mistOut::init(&conf); if (conf.parseArgs(argc, argv)) { if (conf.getBool("json")) { + mistOut::capa["version"] = PACKAGE_VERSION; std::cout << mistOut::capa.toString() << std::endl; return -1; }