mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: monitor: Avoid unnecessary copies of command string
Use virJSONValueToBuffer so that we can append the command terminator string without copying of the string again. Also avoid a 'strlen' as we can query the buffer use size. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Laine Stump <laine@laine.org>
This commit is contained in:
parent
d8306dce0f
commit
ac21141ce4
@ -277,7 +277,7 @@ qemuMonitorJSONCommandWithFd(qemuMonitorPtr mon,
|
||||
{
|
||||
int ret = -1;
|
||||
qemuMonitorMessage msg;
|
||||
char *cmdstr = NULL;
|
||||
VIR_AUTOCLEAN(virBuffer) cmdbuf = VIR_BUFFER_INITIALIZER;
|
||||
char *id = NULL;
|
||||
|
||||
*reply = NULL;
|
||||
@ -294,11 +294,15 @@ qemuMonitorJSONCommandWithFd(qemuMonitorPtr mon,
|
||||
}
|
||||
}
|
||||
|
||||
if (!(cmdstr = virJSONValueToString(cmd, false)))
|
||||
if (virJSONValueToBuffer(cmd, &cmdbuf, false) < 0)
|
||||
goto cleanup;
|
||||
if (virAsprintf(&msg.txBuffer, "%s\r\n", cmdstr) < 0)
|
||||
virBufferAddLit(&cmdbuf, "\r\n");
|
||||
|
||||
if (virBufferCheckError(&cmdbuf) < 0)
|
||||
goto cleanup;
|
||||
msg.txLength = strlen(msg.txBuffer);
|
||||
|
||||
msg.txLength = virBufferUse(&cmdbuf);
|
||||
msg.txBuffer = virBufferContentAndReset(&cmdbuf);
|
||||
msg.txFD = scm_fd;
|
||||
|
||||
ret = qemuMonitorSend(mon, &msg);
|
||||
@ -315,7 +319,6 @@ qemuMonitorJSONCommandWithFd(qemuMonitorPtr mon,
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(id);
|
||||
VIR_FREE(cmdstr);
|
||||
VIR_FREE(msg.txBuffer);
|
||||
|
||||
return ret;
|
||||
|
Loading…
x
Reference in New Issue
Block a user