]> granicus.if.org Git - icinga2/commitdiff
Fix crash in ClusterListener::ReplayLog().
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 11 Oct 2013 06:19:58 +0000 (08:19 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 11 Oct 2013 06:20:15 +0000 (08:20 +0200)
components/cluster/clusterlistener.cpp

index fb6af61173be1760e04b642ccc52e3a807519bf5..20fe633ec803d6c99874f2e365b629ea0cf1bb6d 100644 (file)
@@ -443,9 +443,13 @@ void ClusterListener::ReplayLog(const Endpoint::Ptr& endpoint, const Stream::Ptr
 
                        String message;
                        while (true) {
+                               Dictionary::Ptr pmessage;
+
                                try {
                                        if (!NetString::ReadStringFromStream(lstream, &message))
                                                break;
+
+                                       pmessage = Value::Deserialize(message);
                                } catch (std::exception&) {
                                        Log(LogWarning, "cluster", "Unexpected end-of-file for cluster log: " + path);
 
@@ -453,8 +457,6 @@ void ClusterListener::ReplayLog(const Endpoint::Ptr& endpoint, const Stream::Ptr
                                        break;
                                }
 
-                               Dictionary::Ptr pmessage = Value::Deserialize(message);
-
                                if (pmessage->Get("timestamp") < peer_ts)
                                        continue;