From 04a1b394ddc711f44667ae0ba852c1105a2c8db6 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Tue, 10 Mar 2020 14:01:21 +0100 Subject: [PATCH] Fixed multiple public addresses in controller settings, fixed debug level being passed when set to default --- src/controller/controller_connectors.cpp | 39 ++++++++++++++++-------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/controller/controller_connectors.cpp b/src/controller/controller_connectors.cpp index 8442b257..085e3ae1 100644 --- a/src/controller/controller_connectors.cpp +++ b/src/controller/controller_connectors.cpp @@ -97,22 +97,37 @@ namespace Controller { static inline void builPipedPart(JSON::Value & p, char * argarr[], int & argnum, const JSON::Value & argset){ jsonForEachConst(argset, it) { - if (it->isMember("option")){ - if (p.isMember(it.key())){ - p[it.key()] = p[it.key()].asString(); - if (p[it.key()].asStringRef().size() > 0){ - argarr[argnum++] = (char*)((*it)["option"].asStringRef().c_str()); - if (it->isMember("type")){ - argarr[argnum++] = (char*)(p[it.key()].asStringRef().c_str()); - } + 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)["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"){ - static std::string debugLvlStr; - debugLvlStr = JSON::Value(Util::Config::printDebugLevel).asString(); - argarr[argnum++] = (char*)((*it)["option"].asStringRef().c_str()); - argarr[argnum++] = (char*)debugLvlStr.c_str(); + if (Util::Config::printDebugLevel != DEBUG){ + static std::string debugLvlStr; + debugLvlStr = JSON::Value(Util::Config::printDebugLevel).asString(); + argarr[argnum++] = (char*)((*it)["option"].asStringRef().c_str()); + argarr[argnum++] = (char*)debugLvlStr.c_str(); + } + continue; } + argarr[argnum++] = (char*)((*it)["option"].c_str()); } } }