[PATCH 12/14] qemu: block: Extract formatting of cookie string

Peter Krempa pkrempa at redhat.com
Mon Mar 23 18:12:02 UTC 2020


Introduce qemuBlockStorageSourceGetCookieString which does the
concatenation so that we can reuse it later.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/qemu/qemu_block.c  | 25 +++++++++++++++++++++++++
 src/qemu/qemu_block.h  |  3 +++
 src/qemu/qemu_domain.c | 13 +------------
 3 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 3365ee677b..d9665ec4a0 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -3343,3 +3343,28 @@ qemuBlockStorageSourceNeedsStorageSliceLayer(const virStorageSource *src)

     return false;
 }
+
+
+/**
+ * qemuBlockStorageSourceGetCookieString:
+ * @src: storage source
+ *
+ * Returns a properly formatted string representing cookies of @src in format
+ * accepted by qemu.
+ */
+char *
+qemuBlockStorageSourceGetCookieString(virStorageSourcePtr src)
+{
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
+    size_t i;
+
+    for (i = 0; i < src->ncookies; i++) {
+        virStorageNetCookieDefPtr cookie = src->cookies[i];
+
+        virBufferAsprintf(&buf, "%s=%s; ", cookie->name, cookie->value);
+    }
+
+    virBufferTrim(&buf, "; ");
+
+    return virBufferContentAndReset(&buf);
+}
diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h
index 9bffe20bfb..8b57ffd8a5 100644
--- a/src/qemu/qemu_block.h
+++ b/src/qemu/qemu_block.h
@@ -258,3 +258,6 @@ qemuBlockReopenReadOnly(virDomainObjPtr vm,

 bool
 qemuBlockStorageSourceNeedsStorageSliceLayer(const virStorageSource *src);
+
+char *
+qemuBlockStorageSourceGetCookieString(virStorageSourcePtr src);
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 9cff36cb77..b55765c8ee 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1747,18 +1747,7 @@ qemuDomainSecretStorageSourcePrepareCookies(qemuDomainObjPrivatePtr priv,
                                             const char *aliasprotocol)
 {
     g_autofree char *secretalias = qemuAliasForSecret(aliasprotocol, "httpcookie");
-    g_autofree char *cookies = NULL;
-    g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
-    size_t i;
-
-    for (i = 0; i < src->ncookies; i++) {
-        virStorageNetCookieDefPtr cookie = src->cookies[i];
-
-        virBufferAsprintf(&buf, "%s=%s; ", cookie->name, cookie->value);
-    }
-
-    virBufferTrim(&buf, "; ");
-    cookies = virBufferContentAndReset(&buf);
+    g_autofree char *cookies = qemuBlockStorageSourceGetCookieString(src);

     return qemuDomainSecretAESSetup(priv, secretalias, NULL,
                                     (uint8_t *) cookies, strlen(cookies));
-- 
2.24.1




More information about the libvir-list mailing list