mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
virsh: Notify users about disconnects
After my "client rpc: Report proper error for keepalive disconnections" patch, virsh would no long print a warning when it closes a connection to a daemon after a keepalive timeout. Although the warning virsh # 2015-09-15 10:59:26.729+0000: 642080: info : libvirt version: 1.2.19 2015-09-15 10:59:26.729+0000: 642080: warning : virKeepAliveTimerInternal:143 : No response from client 0x7efdc0a46730 after 1 keepalive messages in 2 seconds was pretty ugly, it was still useful. This patch brings the useful part back while making it much nicer: virsh # error: Disconnected from qemu:///system due to keepalive timeout Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
adf3be57df
commit
035947eb87
@ -95,12 +95,42 @@ static int disconnected; /* we may have been disconnected */
|
|||||||
* handler, just save the fact it was raised.
|
* handler, just save the fact it was raised.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
virshCatchDisconnect(virConnectPtr conn ATTRIBUTE_UNUSED,
|
virshCatchDisconnect(virConnectPtr conn,
|
||||||
int reason,
|
int reason,
|
||||||
void *opaque ATTRIBUTE_UNUSED)
|
void *opaque)
|
||||||
{
|
{
|
||||||
if (reason != VIR_CONNECT_CLOSE_REASON_CLIENT)
|
if (reason != VIR_CONNECT_CLOSE_REASON_CLIENT) {
|
||||||
|
vshControl *ctl = opaque;
|
||||||
|
const char *str = "unknown reason";
|
||||||
|
virErrorPtr error;
|
||||||
|
char *uri;
|
||||||
|
|
||||||
|
error = virSaveLastError();
|
||||||
|
uri = virConnectGetURI(conn);
|
||||||
|
|
||||||
|
switch ((virConnectCloseReason) reason) {
|
||||||
|
case VIR_CONNECT_CLOSE_REASON_ERROR:
|
||||||
|
str = N_("Disconnected from %s due to I/O error");
|
||||||
|
break;
|
||||||
|
case VIR_CONNECT_CLOSE_REASON_EOF:
|
||||||
|
str = N_("Disconnected from %s due to end of file");
|
||||||
|
break;
|
||||||
|
case VIR_CONNECT_CLOSE_REASON_KEEPALIVE:
|
||||||
|
str = N_("Disconnected from %s due to keepalive timeout");
|
||||||
|
break;
|
||||||
|
/* coverity[dead_error_begin] */
|
||||||
|
case VIR_CONNECT_CLOSE_REASON_CLIENT:
|
||||||
|
case VIR_CONNECT_CLOSE_REASON_LAST:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
vshError(ctl, _(str), NULLSTR(uri));
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
virSetError(error);
|
||||||
|
virFreeError(error);
|
||||||
|
}
|
||||||
disconnected++;
|
disconnected++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Main Function which should be used for connecting.
|
/* Main Function which should be used for connecting.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user