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@xxxxxxxxx> --- tools/virsh-console.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/virsh-console.c b/tools/virsh-console.c index e16f841e57..a235a9a283 100644 --- a/tools/virsh-console.c +++ b/tools/virsh-console.c @@ -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; } -- 2.22.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list