From: Michael Friedrich Date: Sun, 15 Feb 2015 13:42:53 +0000 (+0100) Subject: Cli: Fix NetString::ReadStringFromStream() usage X-Git-Tag: v2.3.0~197 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f201886865d7a02763edd8f3c4af7d14d7b5b66c;p=icinga2 Cli: Fix NetString::ReadStringFromStream() usage refs #6109 --- diff --git a/lib/cli/troubleshootcollectcommand.cpp b/lib/cli/troubleshootcollectcommand.cpp index d9bfad56f..f9c27ac34 100644 --- a/lib/cli/troubleshootcollectcommand.cpp +++ b/lib/cli/troubleshootcollectcommand.cpp @@ -244,10 +244,18 @@ static void CheckObjectFile(const String& objectfile, std::ostream& os) StdioStream::Ptr sfp = new StdioStream(&fp, false); int typeL = 0, countTotal = 0; + String message; StreamReadContext src; + for (;;) { + StreamReadStatus srs = NetString::ReadStringFromStream(sfp, &message, src); + + if (srs == StatusEof) + break; + + if (srs != StatusNewItem) + continue; - while (NetString::ReadStringFromStream(sfp, &message, src) == StatusNewItem) { Dictionary::Ptr object = JsonDecode(message); Dictionary::Ptr properties = object->Get("properties"); diff --git a/lib/cli/variableutility.cpp b/lib/cli/variableutility.cpp index 51305e320..be37869c5 100644 --- a/lib/cli/variableutility.cpp +++ b/lib/cli/variableutility.cpp @@ -40,8 +40,15 @@ Value VariableUtility::GetVariable(const String& name) String message; StreamReadContext src; + for (;;) { + StreamReadStatus srs = NetString::ReadStringFromStream(sfp, &message, src); + + if (srs == StatusEof) + break; + + if (srs != StatusNewItem) + continue; - while (NetString::ReadStringFromStream(sfp, &message, src) == StatusNewItem) { Dictionary::Ptr variable = JsonDecode(message); if (variable->Get("name") == name) { @@ -64,8 +71,15 @@ void VariableUtility::PrintVariables(std::ostream& outfp) String message; StreamReadContext src; + for (;;) { + StreamReadStatus srs = NetString::ReadStringFromStream(sfp, &message, src); + + if (srs == StatusEof) + break; + + if (srs != StatusNewItem) + continue; - while (NetString::ReadStringFromStream(sfp, &message, src) == StatusNewItem) { Dictionary::Ptr variable = JsonDecode(message); outfp << variable->Get("name") << " = " << variable->Get("value") << "\n"; variables_count++;