int timeout)
{
int ret = -1;
- virJSONValuePtr cmd;
+ virJSONValuePtr cmd = NULL;
virJSONValuePtr reply = NULL;
*result = NULL;
- if (timeout < VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN)
- return ret;
+ if (timeout < VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN) {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("guest agent timeout '%d' is "
+ "less than the minimum '%d'"),
+ timeout, VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN);
+ goto cleanup;
+ }
- cmd = virJSONValueFromString(cmd_str);
- if (!cmd)
- return ret;
+ if (!(cmd = virJSONValueFromString(cmd_str)))
+ goto cleanup;
+
+ if ((ret = qemuAgentCommand(mon, cmd, &reply, timeout)) < 0)
+ goto cleanup;
- ret = qemuAgentCommand(mon, cmd, &reply, timeout);
+ if ((ret = qemuAgentCheckError(cmd, reply)) < 0)
+ goto cleanup;
- if (ret == 0) {
- ret = qemuAgentCheckError(cmd, reply);
- if (!(*result = virJSONValueToString(reply, false)))
- ret = -1;
- }
+ if (!(*result = virJSONValueToString(reply, false)))
+ ret = -1;
+
+cleanup:
virJSONValueFree(cmd);
virJSONValueFree(reply);
return ret;
qemuDomainObjEnterAgent(vm);
ret = qemuAgentArbitraryCommand(priv->agent, cmd, &result, timeout);
qemuDomainObjExitAgent(vm);
- if (ret < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Failed to execute agent command"));
- goto endjob;
- }
+ if (ret < 0)
+ VIR_FREE(result);
endjob:
- if (qemuDomainObjEndJob(driver, vm) == 0) {
+ if (qemuDomainObjEndJob(driver, vm) == 0)
vm = NULL;
- }
cleanup:
if (vm)