The XML XPath for detecting JSON in the running VM statefile was
wrong causing all VMs to get JSON mode enabled at libvirtd restart.
In addition if a VM was running a JSON enabled QEMU once, and then
altered to point to a non-JSON enabled QEMU later the 'monJSON'
flag would not get reset to 0.
* src/qemu/qemu_driver.c: Fix setting/detection of JSON mode
priv->monConfig->type = VIR_DOMAIN_CHR_TYPE_PTY;
VIR_FREE(tmp);
- if (virXPathBoolean(NULL, "int(./monitor[1]/@json)", ctxt))
+ if (virXPathBoolean(NULL, "count(./monitor[@json = '1']) > 0", ctxt)) {
priv->monJSON = 1;
+ } else {
+ priv->monJSON = 0;
+ }
switch (priv->monConfig->type) {
case VIR_DOMAIN_CHR_TYPE_PTY:
#if HAVE_YAJL
if (qemuCmdFlags & QEMUD_CMD_FLAG_MONITOR_JSON)
priv->monJSON = 1;
+ else
#endif
+ priv->monJSON = 0;
if ((ret = virFileDeletePid(driver->stateDir, vm->def->name)) != 0) {
virReportSystemError(conn, ret,