]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
rpc: daemon: Fix virtlog/virtlock daemon reload
authorCole Robinson <crobinso@redhat.com>
Wed, 13 Apr 2016 14:13:12 +0000 (10:13 -0400)
committerCole Robinson <crobinso@redhat.com>
Wed, 20 Apr 2016 13:22:18 +0000 (09:22 -0400)
Trying to reload/SIGUSR1 virtlogd or virtlockd fails with:

error : virNetDaemonRun:747 : internal error: Not all servers restored, cannot run server

Commit 252610f7 changed the daemon state json to allow tracking
multiple servers. However it missed clearing dmn->srvObject after
the json is empty, like the previous code paths handled.  Later on in
virNewDaemonRun, dmn->srvObject is expected to be empty otherwise we
throw the above error.

https://bugzilla.redhat.com/show_bug.cgi?id=1311013
(cherry picked from commit 9b69f02243f2abec4170576dfe28f8a4bb398b4e)

src/rpc/virnetdaemon.c

index c99914d2ba91a7bf21c1e8bbee7f59a0014913a7..dcc89fa09794f131d64508ee5a11ad1b70400c7d 100644 (file)
@@ -293,6 +293,10 @@ virNetDaemonAddServerPostExec(virNetDaemonPtr dmn,
             goto error;
         }
 
+        if (virJSONValueObjectKeysNumber(dmn->srvObject) == 0) {
+            virJSONValueFree(dmn->srvObject);
+            dmn->srvObject = NULL;
+        }
     }
 
     srv = virNetServerNewPostExecRestart(object,