mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 05:17:59 +03: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.
|
||||
*/
|
||||
static void
|
||||
virshCatchDisconnect(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
virshCatchDisconnect(virConnectPtr conn,
|
||||
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++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Function which should be used for connecting.
|
||||
|
Loading…
Reference in New Issue
Block a user