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 <levinsasha928@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Sasha Levin
2015-06-01 16:39:48 +01:00
committed by Will Deacon
parent 47f72b90da
commit e3e9e392e8
+8 -1
View File
@@ -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)