]> xenbits.xensource.com Git - libvirt.git/commitdiff
tools: console: Relax stream EOF handling
authorRoman Bolshakov <r.bolshakov@yadro.com>
Wed, 21 Aug 2019 13:33:18 +0000 (16:33 +0300)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 23 Aug 2019 12:21:26 +0000 (14:21 +0200)
Regular VM shutdown triggers the error for existing session of virsh
console and it returns with non-zero exit code:
  error: internal error: console stream EOF

The message and status code are misleading because there's no real
error. virStreamRecv returns 0 correctly when EOF is reached.

Existing implementations of esx, fd, and remote streams behave the same
for virStreamFinish and virStreamAbort: they close the stream. So, we
can continue to use virStreamAbort to handle EOF and errors from
virStreamRecv but additonally we can report error if virStreamAbort
fails.

Fixes: 29f2b5248c6 ("tools: console: pass stream/fd errors to user")
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
tools/virsh-console.c

index e16f841e5731efbefe8ec55368fabf7e5abe641c..a235a9a283e6fbcabaec4a840bad13b43d575558 100644 (file)
@@ -106,7 +106,9 @@ virConsoleShutdown(virConsolePtr con)
 
     if (con->st) {
         virStreamEventRemoveCallback(con->st);
-        virStreamAbort(con->st);
+        if (virStreamAbort(con->st) < 0)
+            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                           _("cannot terminate console stream"));
         virStreamFree(con->st);
         con->st = NULL;
     }
@@ -172,10 +174,6 @@ virConsoleEventOnStream(virStreamPtr st,
         if (got == -2)
             goto cleanup; /* blocking */
         if (got <= 0) {
-            if (got == 0)
-                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                               _("console stream EOF"));
-
             virConsoleShutdown(con);
             goto cleanup;
         }