X509 *peer_issuer_issuer;
const char *last_err;
+ const char *url;
};
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)
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) {
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);
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;
}
{
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];
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);
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)
wpa_printf(MSG_MSGDUMP, "Server response:\n%s", ret);
+fail:
+ free_curl_buf(ctx);
+ ctx->url = NULL;
return ret;
}