From e3e9e392e8b5e3edf6e136291c86529dcd8b3f0a Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Fri, 28 Oct 2011 11:01:55 +0200 Subject: [PATCH] kvm tools: Cleanup ghost socket files Clean ghost socket files as part of the regular connection process. This fixes the bug of 'kvm list' failing with "Failed connecting to instance" when ghost socket files existed. Signed-off-by: Sasha Levin Signed-off-by: Pekka Enberg --- kvm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/kvm.c b/kvm.c index d953b94..252bd18 100644 --- a/kvm.c +++ b/kvm.c @@ -208,8 +208,13 @@ int kvm__get_sock_by_instance(const char *name) len = strlen(local.sun_path) + sizeof(local.sun_family); r = connect(s, &local, len); - if (r < 0) + if (r < 0 && errno == ECONNREFUSED) { + /* Clean ghost socket file */ + unlink(sock_file); + return -1; + } else if (r < 0) { die("Failed connecting to instance"); + } return s; } @@ -232,6 +237,8 @@ int kvm__enumerate_instances(int (*callback)(const char *name, int fd)) if (entry.d_type == DT_SOCK) { entry.d_name[strlen(entry.d_name)-5] = 0; sock = kvm__get_sock_by_instance(entry.d_name); + if (sock < 0) + continue; ret = callback(entry.d_name, sock); close(sock); if (ret < 0)