From f86773662cfd8fc6ea677beb0555a214f43ddbe1 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 --- tools/kvm/kvm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/kvm/kvm.c b/tools/kvm/kvm.c index d953b945e0a2..252bd18e9160 100644 --- a/tools/kvm/kvm.c +++ b/tools/kvm/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) -- 2.39.5