[virt-tools-list] [virt-viewer v3 1/6] ovirt: Remove extra '/' from oVirt URI

Christophe Fergeau cfergeau at redhat.com
Thu Aug 7 12:47:54 UTC 2014


The 'path' part of the URI will always start with a '/' when present as
this is what separates it from the hostname. When rebuilding the final
URI, the current code inserts a '/' by itself between the hostname and
the path, which results in URIs with an extra '/':
https://ovirt.example.com//some/path/api

This is not only cosmetic as this can cause issues with cookie handling
if libgovirt accesses //some/path/api while the cookie is set for
/some/path/api.
---
 src/remote-viewer.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/remote-viewer.c b/src/remote-viewer.c
index a27a165..2a21d93 100644
--- a/src/remote-viewer.c
+++ b/src/remote-viewer.c
@@ -649,6 +649,7 @@ parse_ovirt_uri(const gchar *uri_str, char **rest_uri, char **name, char** usern
         xmlFreeURI(uri);
         return FALSE;
     }
+    g_return_val_if_fail(*uri->path == '/', FALSE);
 
     /* extract VM name from path */
     path_elements = g_strsplit(uri->path, "/", -1);
@@ -668,7 +669,7 @@ parse_ovirt_uri(const gchar *uri_str, char **rest_uri, char **name, char** usern
     /* build final URI */
     rel_path = g_strjoinv("/", path_elements);
     /* FIXME: how to decide between http and https? */
-    *rest_uri = g_strdup_printf("https://%s/%s/api/", uri->server, rel_path);
+    *rest_uri = g_strdup_printf("https://%s%s/api/", uri->server, rel_path);
     *name = vm_name;
     g_free(rel_path);
     g_strfreev(path_elements);
-- 
1.9.3




More information about the virt-tools-list mailing list