From 28f0f159375eb23770579c81c676b7bec61cc99e Mon Sep 17 00:00:00 2001 From: Thulinma Date: Thu, 15 Apr 2021 01:49:14 +0200 Subject: [PATCH] Fixed boolean options in connector/protocol settings --- src/controller/controller_connectors.cpp | 41 +++++++++++------------- src/output/output_http.cpp | 36 ++++++++++++--------- 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/src/controller/controller_connectors.cpp b/src/controller/controller_connectors.cpp index 8f16ee6c..3bb88344 100644 --- a/src/controller/controller_connectors.cpp +++ b/src/controller/controller_connectors.cpp @@ -94,36 +94,31 @@ namespace Controller{ static inline void builPipedPart(JSON::Value &p, char *argarr[], int &argnum, const JSON::Value &argset){ jsonForEachConst(argset, it){ if (it->isMember("option") && p.isMember(it.key())){ - if (it->isMember("type")){ - if ((*it)["type"].asStringRef() == "str" && !p[it.key()].isString()){ - p[it.key()] = p[it.key()].asString(); + if (!it->isMember("type")){ + if (JSON::Value(p[it.key()]).asBool()){ + argarr[argnum++] = (char *)((*it)["option"].c_str()); } - if ((*it)["type"].asStringRef() == "uint" || (*it)["type"].asStringRef() == "int" || - (*it)["type"].asStringRef() == "debug"){ - p[it.key()] = JSON::Value(p[it.key()].asInt()).asString(); - } - if ((*it)["type"].asStringRef() == "inputlist" && p[it.key()].isArray()){ - jsonForEach(p[it.key()], iVal){ - (*iVal) = iVal->asString(); - argarr[argnum++] = (char *)((*it)["option"].c_str()); - argarr[argnum++] = (char *)((*iVal).c_str()); - } - continue; + continue; + } + if ((*it)["type"].asStringRef() == "str" && !p[it.key()].isString()){ + p[it.key()] = p[it.key()].asString(); + } + if ((*it)["type"].asStringRef() == "uint" || (*it)["type"].asStringRef() == "int" || + (*it)["type"].asStringRef() == "debug"){ + p[it.key()] = JSON::Value(p[it.key()].asInt()).asString(); + } + if ((*it)["type"].asStringRef() == "inputlist" && p[it.key()].isArray()){ + jsonForEach(p[it.key()], iVal){ + (*iVal) = iVal->asString(); + argarr[argnum++] = (char *)((*it)["option"].c_str()); + argarr[argnum++] = (char *)((*iVal).c_str()); } + continue; } if (p[it.key()].asStringRef().size() > 0){ argarr[argnum++] = (char *)((*it)["option"].c_str()); argarr[argnum++] = (char *)(p[it.key()].c_str()); }else{ - if (it.key() == "debug"){ - if (Util::printDebugLevel != DEBUG){ - static std::string debugLvlStr; - debugLvlStr = JSON::Value(Util::printDebugLevel).asString(); - argarr[argnum++] = (char *)((*it)["option"].asStringRef().c_str()); - argarr[argnum++] = (char *)debugLvlStr.c_str(); - } - continue; - } argarr[argnum++] = (char *)((*it)["option"].c_str()); } } diff --git a/src/output/output_http.cpp b/src/output/output_http.cpp index 5abe6cdf..252f069a 100644 --- a/src/output/output_http.cpp +++ b/src/output/output_http.cpp @@ -356,25 +356,29 @@ namespace Mist{ } } - static inline void builPipedPart(JSON::Value &p, char *argarr[], int &argnum, JSON::Value &argset){ - jsonForEach(argset, it){ + static inline void builPipedPart(JSON::Value &p, char *argarr[], int &argnum, const JSON::Value &argset){ + jsonForEachConst(argset, it){ if (it->isMember("option") && p.isMember(it.key())){ - if (it->isMember("type")){ - if ((*it)["type"].asStringRef() == "str" && !p[it.key()].isString()){ - p[it.key()] = p[it.key()].asString(); + if (!it->isMember("type")){ + if (JSON::Value(p[it.key()]).asBool()){ + argarr[argnum++] = (char *)((*it)["option"].c_str()); } - if ((*it)["type"].asStringRef() == "uint" || (*it)["type"].asStringRef() == "int" || - (*it)["type"].asStringRef() == "debug"){ - p[it.key()] = JSON::Value(p[it.key()].asInt()).asString(); - } - if ((*it)["type"].asStringRef() == "inputlist" && p[it.key()].isArray()){ - jsonForEach(p[it.key()], iVal){ - (*iVal) = iVal->asString(); - argarr[argnum++] = (char *)((*it)["option"].c_str()); - argarr[argnum++] = (char *)((*iVal).c_str()); - } - continue; + continue; + } + if ((*it)["type"].asStringRef() == "str" && !p[it.key()].isString()){ + p[it.key()] = p[it.key()].asString(); + } + if ((*it)["type"].asStringRef() == "uint" || (*it)["type"].asStringRef() == "int" || + (*it)["type"].asStringRef() == "debug"){ + p[it.key()] = JSON::Value(p[it.key()].asInt()).asString(); + } + if ((*it)["type"].asStringRef() == "inputlist" && p[it.key()].isArray()){ + jsonForEach(p[it.key()], iVal){ + (*iVal) = iVal->asString(); + argarr[argnum++] = (char *)((*it)["option"].c_str()); + argarr[argnum++] = (char *)((*iVal).c_str()); } + continue; } if (p[it.key()].asStringRef().size() > 0){ argarr[argnum++] = (char *)((*it)["option"].c_str());