mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
rpc: don't try to spawn non-existant daemon
If libvirt is built in client only mode, the libvirtd/virtqemud/etc daemons won't exist. If the client is told to connect to a local hypervisor, it'll see the socket doesn't exist, try to spawn the daemon and then re-try connecting to the socket for a few seconds. Ultimately this will fail because the daemon doesn't exist and the user gets an error message error: Failed to connect socket to '/run/user/1000/libvirt/virtqemud-sock': No such file or directory technically this is accurate, but it doesn't help identify the root cause. With this change it will now report error: binary 'virtqemud' does not exist in $PATH: No such file or directory and will skip all the socket connect retries Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
da1057c8eb
commit
3b45fcd6b6
@ -123,9 +123,19 @@ VIR_ONCE_GLOBAL_INIT(virNetSocket);
|
|||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
static int virNetSocketForkDaemon(const char *binary)
|
static int virNetSocketForkDaemon(const char *binary)
|
||||||
{
|
{
|
||||||
g_autoptr(virCommand) cmd = virCommandNewArgList(binary,
|
g_autofree char *binarypath = virFindFileInPath(binary);
|
||||||
"--timeout=120",
|
g_autoptr(virCommand) cmd = NULL;
|
||||||
NULL);
|
|
||||||
|
if (!binarypath) {
|
||||||
|
virReportSystemError(ENOENT,
|
||||||
|
_("binary '%1$s' does not exist in $PATH"),
|
||||||
|
binary);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd = virCommandNewArgList(binarypath,
|
||||||
|
"--timeout=120",
|
||||||
|
NULL);
|
||||||
|
|
||||||
virCommandAddEnvPassCommon(cmd);
|
virCommandAddEnvPassCommon(cmd);
|
||||||
virCommandAddEnvPass(cmd, "XDG_CACHE_HOME");
|
virCommandAddEnvPass(cmd, "XDG_CACHE_HOME");
|
||||||
|
Loading…
Reference in New Issue
Block a user