summaryrefslogtreecommitdiff
path: root/src/nm-cloud-setup
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-07-12 18:16:10 +0200
committerThomas Haller <thaller@redhat.com>2021-07-12 18:39:59 +0200
commitc6fefce8a483ce273fe6fbce8db7eeb53179e2f5 (patch)
tree6f1cb8237a70e7ce02c4ebf5a2e50b8399f7f17b /src/nm-cloud-setup
parent78adf4796e84f1b299270abd50dbf7343fb7f0b4 (diff)
downloadNetworkManager-c6fefce8a483ce273fe6fbce8db7eeb53179e2f5.tar.gz
cloud-setup: add nmcs_utils_uri_complete_interned() for constructing URI for _ec2_base()
Diffstat (limited to 'src/nm-cloud-setup')
-rw-r--r--src/nm-cloud-setup/nm-cloud-setup-utils.c14
-rw-r--r--src/nm-cloud-setup/nm-cloud-setup-utils.h2
-rw-r--r--src/nm-cloud-setup/nmcs-provider-ec2.c17
3 files changed, 17 insertions, 16 deletions
diff --git a/src/nm-cloud-setup/nm-cloud-setup-utils.c b/src/nm-cloud-setup/nm-cloud-setup-utils.c
index 1cb14a8349..ed36b4dd2f 100644
--- a/src/nm-cloud-setup/nm-cloud-setup-utils.c
+++ b/src/nm-cloud-setup/nm-cloud-setup-utils.c
@@ -665,6 +665,20 @@ nmcs_utils_uri_build_concat_v(const char *base, const char **components, gsize n
return nm_str_buf_finalize(&strbuf, NULL);
}
+const char *
+nmcs_utils_uri_complete_interned(const char *uri)
+{
+ gs_free char *s = NULL;
+
+ if (nm_str_is_empty(uri))
+ return NULL;
+ if (NM_STR_HAS_PREFIX(uri, "http://") || NM_STR_HAS_PREFIX(uri, "https://") || strchr(uri, '/'))
+ return g_intern_string(uri);
+
+ s = g_strconcat("http://", uri, NULL);
+ return g_intern_string(s);
+}
+
/*****************************************************************************/
gboolean
diff --git a/src/nm-cloud-setup/nm-cloud-setup-utils.h b/src/nm-cloud-setup/nm-cloud-setup-utils.h
index 151b0a3627..bb47db26d5 100644
--- a/src/nm-cloud-setup/nm-cloud-setup-utils.h
+++ b/src/nm-cloud-setup/nm-cloud-setup-utils.h
@@ -121,6 +121,8 @@ char *nmcs_utils_uri_build_concat_v(const char *base, const char **components, g
#define nmcs_utils_uri_build_concat(base, ...) \
nmcs_utils_uri_build_concat_v(base, ((const char *[]){__VA_ARGS__}), NM_NARG(__VA_ARGS__))
+const char *nmcs_utils_uri_complete_interned(const char *uri);
+
/*****************************************************************************/
gboolean nmcs_setting_ip_replace_ipv4_addresses(NMSettingIPConfig *s_ip,
diff --git a/src/nm-cloud-setup/nmcs-provider-ec2.c b/src/nm-cloud-setup/nmcs-provider-ec2.c
index 49777106b6..6f83238d68 100644
--- a/src/nm-cloud-setup/nmcs-provider-ec2.c
+++ b/src/nm-cloud-setup/nmcs-provider-ec2.c
@@ -29,22 +29,7 @@ again:
* This is mainly for testing, it's not usually supposed to be configured.
* Consider this private API! */
base = g_getenv(NMCS_ENV_VARIABLE("NM_CLOUD_SETUP_EC2_HOST"));
-
- if (!nm_str_is_empty(base)) {
- if (NM_STR_HAS_PREFIX(base, "http://") || NM_STR_HAS_PREFIX(base, "https://")
- || strchr(base, '/'))
- base = g_intern_string(base);
- else {
- gs_free char *s = NULL;
-
- s = g_strconcat("http://", base, NULL);
- base = g_intern_string(s);
- }
- }
- if (nm_str_is_empty(base))
- base = NM_EC2_BASE;
-
- nm_assert(!NM_STR_HAS_SUFFIX(base, "/"));
+ base = nmcs_utils_uri_complete_interned(base) ?: ("" NM_EC2_BASE);
if (!g_atomic_pointer_compare_and_exchange(&base_cached, NULL, base))
goto again;