diff --git a/src/utils/common.c b/src/utils/common.c
index 2c12751..6acfcbd 100644
--- a/src/utils/common.c
+++ b/src/utils/common.c
@@ -13,7 +13,7 @@
 #include "common.h"
 
 
-static int hex2num(char c)
+int hex2num(char c)
 {
 	if (c >= '0' && c <= '9')
 		return c - '0';
diff --git a/src/utils/common.h b/src/utils/common.h
index 45f72bb..435a9a8 100644
--- a/src/utils/common.h
+++ b/src/utils/common.h
@@ -477,6 +477,7 @@
 int hwaddr_masked_aton(const char *txt, u8 *addr, u8 *mask, u8 maskable);
 int hwaddr_compact_aton(const char *txt, u8 *addr);
 int hwaddr_aton2(const char *txt, u8 *addr);
+int hex2num(char c);
 int hex2byte(const char *hex);
 int hexstr2bin(const char *hex, u8 *buf, size_t len);
 void inc_byte_array(u8 *counter, size_t len);
diff --git a/src/utils/http-utils.h b/src/utils/http-utils.h
index d9fc925..23e9ecd 100644
--- a/src/utils/http-utils.h
+++ b/src/utils/http-utils.h
@@ -33,6 +33,7 @@
 	size_t num_othername;
 	struct http_logo *logo;
 	size_t num_logo;
+	const char *url;
 };
 
 int soap_init_client(struct http_ctx *ctx, const char *address,
diff --git a/src/utils/http_curl.c b/src/utils/http_curl.c
index e62fbf9..30b07f2 100644
--- a/src/utils/http_curl.c
+++ b/src/utils/http_curl.c
@@ -64,6 +64,7 @@
 	X509 *peer_issuer_issuer;
 
 	const char *last_err;
+	const char *url;
 };
 
 
@@ -871,6 +872,7 @@
 		       X509 *cert, GENERAL_NAMES **names)
 {
 	os_memset(hcert, 0, sizeof(*hcert));
+	hcert->url = ctx->url ? ctx->url : ctx->svc_address;
 
 	*names = X509_get_ext_d2i(cert, NID_subject_alt_name, NULL, NULL);
 	if (*names)
@@ -1617,23 +1619,23 @@
 		       const char *fname, const char *ca_fname)
 {
 	CURL *curl;
-	FILE *f;
+	FILE *f = NULL;
 	CURLcode res;
 	long http = 0;
+	int ret = -1;
 
 	ctx->last_err = NULL;
+	ctx->url = url;
 
 	wpa_printf(MSG_DEBUG, "curl: Download file from %s to %s (ca=%s)",
 		   url, fname, ca_fname);
 	curl = curl_easy_init();
 	if (curl == NULL)
-		return -1;
+		goto fail;
 
 	f = fopen(fname, "wb");
-	if (f == NULL) {
-		curl_easy_cleanup(curl);
-		return -1;
-	}
+	if (!f)
+		goto fail;
 
 	curl_easy_setopt(curl, CURLOPT_URL, url);
 	if (ca_fname) {
@@ -1655,9 +1657,7 @@
 			ctx->last_err = curl_easy_strerror(res);
 		wpa_printf(MSG_ERROR, "curl_easy_perform() failed: %s",
 			   ctx->last_err);
-		curl_easy_cleanup(curl);
-		fclose(f);
-		return -1;
+		goto fail;
 	}
 
 	curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http);
@@ -1665,15 +1665,19 @@
 	if (http != 200) {
 		ctx->last_err = "HTTP download failed";
 		wpa_printf(MSG_INFO, "HTTP download failed - code %ld", http);
-		curl_easy_cleanup(curl);
-		fclose(f);
-		return -1;
+		goto fail;
 	}
 
-	curl_easy_cleanup(curl);
-	fclose(f);
+	ret = 0;
 
-	return 0;
+fail:
+	ctx->url = NULL;
+	if (curl)
+		curl_easy_cleanup(curl);
+	if (f)
+		fclose(f);
+
+	return ret;
 }
 
 
@@ -1686,16 +1690,17 @@
 {
 	long http = 0;
 	CURLcode res;
-	char *ret;
+	char *ret = NULL;
 	CURL *curl;
 	struct curl_slist *curl_hdr = NULL;
 
 	ctx->last_err = NULL;
+	ctx->url = url;
 	wpa_printf(MSG_DEBUG, "curl: HTTP POST to %s", url);
 	curl = setup_curl_post(ctx, url, ca_fname, username, password,
 			       client_cert, client_key);
 	if (curl == NULL)
-		return NULL;
+		goto fail;
 
 	if (content_type) {
 		char ct[200];
@@ -1715,8 +1720,7 @@
 			ctx->last_err = curl_easy_strerror(res);
 		wpa_printf(MSG_ERROR, "curl_easy_perform() failed: %s",
 			   ctx->last_err);
-		free_curl_buf(ctx);
-		return NULL;
+		goto fail;
 	}
 
 	curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http);
@@ -1724,12 +1728,11 @@
 	if (http != 200) {
 		ctx->last_err = "HTTP POST failed";
 		wpa_printf(MSG_INFO, "HTTP POST failed - code %ld", http);
-		free_curl_buf(ctx);
-		return NULL;
+		goto fail;
 	}
 
 	if (ctx->curl_buf == NULL)
-		return NULL;
+		goto fail;
 
 	ret = ctx->curl_buf;
 	if (resp_len)
@@ -1739,6 +1742,9 @@
 
 	wpa_printf(MSG_MSGDUMP, "Server response:\n%s", ret);
 
+fail:
+	free_curl_buf(ctx);
+	ctx->url = NULL;
 	return ret;
 }
 
