From: Daniel P. Berrangé Date: Mon, 24 May 2021 16:35:21 +0000 (+0100) Subject: remote: remove probing logic from virtproxyd dispatcher X-Git-Tag: v7.5.0-rc1~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=05bd8db60b35b7706100d9cbbaeb13992965e0f2;p=thirdparty%2Flibvirt.git remote: remove probing logic from virtproxyd dispatcher Now that the remote driver itself can probe for listening sockets / running daemons, virtproxyd doesn't need to probe URIs itself. Instead it can just delegate to the remote driver. Tested-by: Jim Fehlig Reviewed-by: Michal Privoznik Signed-off-by: Daniel P. Berrangé --- diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c index 36d4d00b79..65aa20f7d1 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -1948,73 +1948,6 @@ void *remoteClientNew(virNetServerClient *client, /*----- Functions. -----*/ -#ifdef VIRTPROXYD -/* - * When running in virtproxyd regular auto-probing of drivers - * does not work as we don't have any drivers present (except - * stateless ones inside libvirt.so). All the interesting - * drivers are in separate daemons. Thus when we get a NULL - * URI we need to simulate probing that virConnectOpen would - * previously do. We use the existence of the UNIX domain - * socket as our hook for probing. - * - * This assumes no stale sockets left over from a now dead - * daemon, but that's reasonable since libvirtd unlinks - * sockets it creates on shutdown, or uses systemd activation - * - * We only try to probe for primary hypervisor drivers, - * not the secondary drivers. - */ -static int -remoteDispatchProbeURI(bool readonly, - char **probeduri) -{ - g_autofree char *driver = NULL; - const char *suffix; - *probeduri = NULL; - VIR_DEBUG("Probing for driver daemon sockets"); - - /* - * If running root, either the daemon is running and the socket - * exists, or we're using socket activation so the socket exists - * too. - * - * If running non-root, the daemon may or may not already be - * running, and socket activation probably isn't relevant. - * So if no viable socket exists, we need to check which daemons - * are actually installed. This is not a big deal as only QEMU & - * VBox run as non-root, anyway. - */ - if (geteuid() != 0) { - if (remoteProbeSessionDriverFromSocket(false, &driver) < 0) - return -1; - - if (driver == NULL && - remoteProbeSessionDriverFromBinary(&driver) < 0) - return -1; - - suffix = "session"; - } else { - if (remoteProbeSystemDriverFromSocket(readonly, &driver) < 0) - return -1; - - suffix = "system"; - } - - /* Even if we didn't probe any socket, we won't - * return error. Just let virConnectOpen's normal - * logic run which will likely return an error anyway - */ - if (!driver) - return 0; - - *probeduri = g_strdup_printf("%s:///%s", driver, suffix); - VIR_DEBUG("Probed URI %s for driver %s", *probeduri, driver); - return 0; -} -#endif /* VIRTPROXYD */ - - static int remoteDispatchConnectOpen(virNetServer *server G_GNUC_UNUSED, virNetServerClient *client, @@ -2023,9 +1956,6 @@ remoteDispatchConnectOpen(virNetServer *server G_GNUC_UNUSED, struct remote_connect_open_args *args) { const char *name; -#ifdef VIRTPROXYD - g_autofree char *probeduri = NULL; -#endif unsigned int flags; struct daemonClientPrivate *priv = virNetServerClientGetPrivateData(client); int rv = -1; @@ -2054,13 +1984,6 @@ remoteDispatchConnectOpen(virNetServer *server G_GNUC_UNUSED, priv->readonly = flags & VIR_CONNECT_RO; #ifdef VIRTPROXYD - if (!name || STREQ(name, "")) { - if (remoteDispatchProbeURI(priv->readonly, &probeduri) < 0) - goto cleanup; - - name = probeduri; - } - preserveIdentity = true; #endif /* VIRTPROXYD */