diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 2a5ae8b1fd..3201f57e62 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -2705,8 +2705,6 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
return -1;
}
- /* XXX We currently don't support auth, so don't bother parsing it */
-
/* uri->path is NULL if the URI does not contain slash after host:
* transport://host:port */
if (uri->path)
@@ -2756,6 +2754,10 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
if (VIR_STRDUP(src->hosts->name, uri->server) < 0)
return -1;
+ /* Libvirt doesn't handle inline authentication. Make the caller aware. */
+ if (uri->user)
+ return 1;
+
return 0;
}
@@ -3313,6 +3315,11 @@ virStorageSourceParseBackingJSONiSCSI(virStorageSourcePtr src,
if (virAsprintf(&src->path, "%s/%s", target, lun) < 0)
return -1;
+ /* Libvirt doesn't handle inline authentication. Make the caller aware. */
+ if (virJSONValueObjectGetString(json, "user") ||
+ virJSONValueObjectGetString(json, "password"))
+ return 1;
+
return 0;
}
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
index 45586cbd46..8ebad89da7 100644
--- a/tests/virstoragetest.c
+++ b/tests/virstoragetest.c
@@ -1260,6 +1260,10 @@ mymain(void)
"\n");
+ TEST_BACKING_PARSE_FULL("http://user:pass@example.com/file",
+ "\n", 1);
TEST_BACKING_PARSE("rbd:testshare:id=asdf:mon_host=example.com",
"