]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
remote: move proxy/mode defaults after URI parsing
authorDaniel P. Berrangé <berrange@redhat.com>
Mon, 24 May 2021 15:35:19 +0000 (16:35 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Thu, 27 May 2021 10:44:00 +0000 (11:44 +0100)
Currently the defaults for the proxy/mode settings are set before
parsing URI parameters. A following commit will introduce a dependancy
on the URI parsing for the defaults, so they need to move.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/remote/remote_driver.c

index 0bacd0bc4bbb4f4703d5b9a5d7c03637c85e9af2..856909fc60582d5d49ccf52dee71c3143be9fcbd 100644 (file)
@@ -780,20 +780,6 @@ doRemoteOpen(virConnectPtr conn,
     size_t i;
     int proxy;
 
-    if (inside_daemon && !conn->uri->server) {
-        mode = REMOTE_DRIVER_MODE_DIRECT;
-    } else {
-        mode = REMOTE_DRIVER_MODE_AUTO;
-    }
-
-    /* Historically we didn't allow ssh tunnel with session mode,
-     * since we can't construct the accurate path remotely,
-     * so we can default to modern virt-ssh-helper */
-    if (flags & VIR_DRV_OPEN_REMOTE_USER)
-        proxy = VIR_NET_CLIENT_PROXY_NATIVE;
-    else
-        proxy = VIR_NET_CLIENT_PROXY_AUTO;
-
     /* We handle *ALL* URIs here. The caller has rejected any
      * URIs we don't care about */
 
@@ -880,22 +866,38 @@ doRemoteOpen(virConnectPtr conn,
         virConfGetValueString(conf, "remote_mode", &mode_str) < 0)
         goto failed;
 
-    if (mode_str &&
-        (mode = remoteDriverModeTypeFromString(mode_str)) < 0) {
-        virReportError(VIR_ERR_INVALID_ARG,
-                       _("Unknown remote mode '%s'"), mode_str);
-        goto failed;
+    if (mode_str) {
+        if ((mode = remoteDriverModeTypeFromString(mode_str)) < 0) {
+            virReportError(VIR_ERR_INVALID_ARG,
+                           _("Unknown remote mode '%s'"), mode_str);
+            goto failed;
+        }
+    } else {
+        if (inside_daemon && !conn->uri->server) {
+            mode = REMOTE_DRIVER_MODE_DIRECT;
+        } else {
+            mode = REMOTE_DRIVER_MODE_AUTO;
+        }
     }
 
     if (conf && !proxy_str &&
         virConfGetValueString(conf, "remote_proxy", &proxy_str) < 0)
         goto failed;
 
-    if (proxy_str &&
-        (proxy = virNetClientProxyTypeFromString(proxy_str)) < 0) {
-        virReportError(VIR_ERR_INVALID_ARG,
-                       _("Unnkown proxy type '%s'"), proxy_str);
-        goto failed;
+    if (proxy_str) {
+        if ((proxy = virNetClientProxyTypeFromString(proxy_str)) < 0) {
+            virReportError(VIR_ERR_INVALID_ARG,
+                           _("Unnkown proxy type '%s'"), proxy_str);
+            goto failed;
+        }
+    } else {
+        /* Historically we didn't allow ssh tunnel with session mode,
+         * since we can't construct the accurate path remotely,
+         * so we can default to modern virt-ssh-helper */
+        if (flags & VIR_DRV_OPEN_REMOTE_USER)
+            proxy = VIR_NET_CLIENT_PROXY_NATIVE;
+        else
+            proxy = VIR_NET_CLIENT_PROXY_AUTO;
     }
 
     /* Sanity check that nothing requested !direct mode by mistake */