[libvirt] [PATCH 2/2] Detect errors from the 'sendkey' command

Daniel P. Berrange berrange at redhat.com
Thu Aug 25 16:49:25 UTC 2011


From: "Daniel P. Berrange" <berrange at redhat.com>

On success, the 'sendkey' command does not return any data, so
any data in the reply should be considered to be an error
message

* src/qemu/qemu_monitor_text.c: Treat non-"" reply data as an
  error message for 'sendkey' command
---
 src/qemu/qemu_monitor_text.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
index 54541ce..4bd761d 100644
--- a/src/qemu/qemu_monitor_text.c
+++ b/src/qemu/qemu_monitor_text.c
@@ -2848,6 +2848,7 @@ int qemuMonitorTextSendKey(qemuMonitorPtr mon,
     int i;
     virBuffer buf = VIR_BUFFER_INITIALIZER;
     char *cmd, *reply = NULL;
+    int ret = -1;
 
     if (nkeycodes > VIR_DOMAIN_SEND_KEY_MAX_KEYS || nkeycodes == 0)
         return -1;
@@ -2880,13 +2881,21 @@ int qemuMonitorTextSendKey(qemuMonitorPtr mon,
         qemuReportError(VIR_ERR_OPERATION_FAILED,
                          _("failed to send key using command '%s'"),
                          cmd);
-        VIR_FREE(cmd);
-        return -1;
+        goto cleanup;
+    }
+
+    if (STRNEQ(reply, "")) {
+        qemuReportError(VIR_ERR_OPERATION_FAILED,
+                        _("failed to send key '%s'"), reply);
+        goto cleanup;
     }
 
+    ret = 0;
+
+cleanup:
     VIR_FREE(cmd);
     VIR_FREE(reply);
-    return 0;
+    return ret;
 }
 
 /* Returns -1 on error, -2 if not supported */
-- 
1.7.6




More information about the libvir-list mailing list