mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
virsh: Fix checking for reconnect conditions
virshReportError() function frees the most recent error reported from libvirt. Condition that checks if connection to the daemon was broken during last command was then limited to check for SIGPIPE signal not taking into account possible errors signalized without SIGPIPE. This patch moves the check before the error is freed, to take into account code that does not emit SIGPIPE while failing. * tools/virsh.c: - move check for broken connection before error print.
This commit is contained in:
parent
f4384b8439
commit
d82c6bcf30
@ -17041,18 +17041,20 @@ vshCommandRun(vshControl *ctl, const vshCmd *cmd)
|
||||
if (enable_timing)
|
||||
GETTIMEOFDAY(&after);
|
||||
|
||||
/* try to automatically catch disconnections */
|
||||
if (!ret &&
|
||||
((last_error != NULL) &&
|
||||
(((last_error->code == VIR_ERR_SYSTEM_ERROR) &&
|
||||
(last_error->domain == VIR_FROM_REMOTE)) ||
|
||||
(last_error->code == VIR_ERR_RPC) ||
|
||||
(last_error->code == VIR_ERR_NO_CONNECT) ||
|
||||
(last_error->code == VIR_ERR_INVALID_CONN))))
|
||||
disconnected++;
|
||||
|
||||
if (!ret)
|
||||
virshReportError(ctl);
|
||||
|
||||
/* try to automatically catch disconnections */
|
||||
if (!ret &&
|
||||
((disconnected != 0) ||
|
||||
((last_error != NULL) &&
|
||||
(((last_error->code == VIR_ERR_SYSTEM_ERROR) &&
|
||||
(last_error->domain == VIR_FROM_REMOTE)) ||
|
||||
(last_error->code == VIR_ERR_RPC) ||
|
||||
(last_error->code == VIR_ERR_NO_CONNECT) ||
|
||||
(last_error->code == VIR_ERR_INVALID_CONN)))))
|
||||
if (!ret && disconnected != 0)
|
||||
vshReconnect(ctl);
|
||||
|
||||
if (STREQ(cmd->def->name, "quit")) /* hack ... */
|
||||
|
Loading…
Reference in New Issue
Block a user