summaryrefslogtreecommitdiff
path: root/content/fetchers/curl.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2011-10-01 16:02:49 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2011-10-01 16:02:49 +0000
commit4b2730e407c8c619a02258542a863ac03d99494b (patch)
tree70dfdaad04d4ab5f2ebe6de54895f85af4108630 /content/fetchers/curl.c
parentaf6c81b042326cb63c29d804643c4f4e71f44d70 (diff)
downloadnetsurf-4b2730e407c8c619a02258542a863ac03d99494b.tar.gz
netsurf-4b2730e407c8c619a02258542a863ac03d99494b.tar.bz2
Keep url as nsurl.
svn path=/trunk/netsurf/; revision=12917
Diffstat (limited to 'content/fetchers/curl.c')
-rw-r--r--content/fetchers/curl.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/content/fetchers/curl.c b/content/fetchers/curl.c
index 09f8403af..2c2b3b1b3 100644
--- a/content/fetchers/curl.c
+++ b/content/fetchers/curl.c
@@ -74,7 +74,7 @@ struct curl_fetch_info {
bool abort; /**< Abort requested. */
bool stopped; /**< Download stopped on purpose. */
bool only_2xx; /**< Only HTTP 2xx responses acceptable. */
- char *url; /**< URL of this fetch. */
+ nsurl *url; /**< URL of this fetch. */
char *host; /**< The hostname of this fetch. */
struct curl_slist *headers; /**< List of request headers. */
char *location; /**< Response Location header, or 0. */
@@ -340,6 +340,7 @@ void * fetch_curl_setup(struct fetch *parent_fetch, nsurl *url,
return 0;
fetch->fetch_handle = parent_fetch;
+ fetch->url = nsurl_ref(url);
res = url_host(nsurl_access(url), &host);
if (res != URL_FUNC_OK) {
@@ -360,7 +361,6 @@ void * fetch_curl_setup(struct fetch *parent_fetch, nsurl *url,
fetch->abort = false;
fetch->stopped = false;
fetch->only_2xx = only_2xx;
- fetch->url = strdup(nsurl_access(url));
fetch->headers = 0;
fetch->host = host;
fetch->location = 0;
@@ -378,8 +378,7 @@ void * fetch_curl_setup(struct fetch *parent_fetch, nsurl *url,
memset(fetch->cert_data, 0, sizeof(fetch->cert_data));
fetch->last_progress_update = 0;
- if (!fetch->url ||
- (post_urlenc && !fetch->post_urlenc) ||
+ if ((post_urlenc && !fetch->post_urlenc) ||
(post_multipart && !fetch->post_multipart))
goto failed;
@@ -421,7 +420,7 @@ void * fetch_curl_setup(struct fetch *parent_fetch, nsurl *url,
failed:
free(host);
- free(fetch->url);
+ nsurl_unref(fetch->url);
free(fetch->post_urlenc);
if (fetch->post_multipart)
curl_formfree(fetch->post_multipart);
@@ -557,7 +556,7 @@ fetch_curl_set_options(struct curl_fetch_info *f)
return code; \
}
- SETOPT(CURLOPT_URL, f->url);
+ SETOPT(CURLOPT_URL, nsurl_access(f->url));
SETOPT(CURLOPT_PRIVATE, f);
SETOPT(CURLOPT_WRITEDATA, f);
SETOPT(CURLOPT_WRITEHEADER, f);
@@ -578,14 +577,14 @@ fetch_curl_set_options(struct curl_fetch_info *f)
SETOPT(CURLOPT_HTTPGET, 1L);
}
- f->cookie_string = urldb_get_cookie(f->url);
+ f->cookie_string = urldb_get_cookie(nsurl_access(f->url));
if (f->cookie_string) {
SETOPT(CURLOPT_COOKIE, f->cookie_string);
} else {
SETOPT(CURLOPT_COOKIE, NULL);
}
- if ((auth = urldb_get_auth_details(f->url, NULL)) != NULL) {
+ if ((auth = urldb_get_auth_details(nsurl_access(f->url), NULL)) != NULL) {
SETOPT(CURLOPT_HTTPAUTH, CURLAUTH_ANY);
SETOPT(CURLOPT_USERPWD, auth);
} else {
@@ -593,7 +592,7 @@ fetch_curl_set_options(struct curl_fetch_info *f)
}
if (option_http_proxy && option_http_proxy_host &&
- strncmp(f->url, "file:", 5) != 0) {
+ strncmp(nsurl_access(f->url), "file:", 5) != 0) {
SETOPT(CURLOPT_PROXY, option_http_proxy_host);
SETOPT(CURLOPT_PROXYPORT, (long) option_http_proxy_port);
if (option_http_proxy_auth != OPTION_HTTP_PROXY_AUTH_NONE) {
@@ -613,7 +612,7 @@ fetch_curl_set_options(struct curl_fetch_info *f)
SETOPT(CURLOPT_PROXY, NULL);
}
- if (urldb_get_cert_permissions(f->url)) {
+ if (urldb_get_cert_permissions(nsurl_access(f->url))) {
/* Disable certificate verification */
SETOPT(CURLOPT_SSL_VERIFYPEER, 0L);
SETOPT(CURLOPT_SSL_VERIFYHOST, 0L);
@@ -658,7 +657,7 @@ void fetch_curl_abort(void *vf)
{
struct curl_fetch_info *f = (struct curl_fetch_info *)vf;
assert(f);
- LOG(("fetch %p, url '%s'", f, f->url));
+ LOG(("fetch %p, url '%s'", f, nsurl_access(f->url)));
if (f->curl_handle) {
f->abort = true;
} else {
@@ -679,7 +678,7 @@ void fetch_curl_stop(struct curl_fetch_info *f)
CURLMcode codem;
assert(f);
- LOG(("fetch %p, url '%s'", f, f->url));
+ LOG(("fetch %p, url '%s'", f, nsurl_access(f->url)));
if (f->curl_handle) {
/* remove from curl multi handle */
@@ -706,7 +705,7 @@ void fetch_curl_free(void *vf)
if (f->curl_handle)
curl_easy_cleanup(f->curl_handle);
- free(f->url);
+ nsurl_unref(f->url);
free(f->host);
free(f->location);
free(f->cookie_string);
@@ -795,7 +794,7 @@ void fetch_curl_done(CURL *curl_handle, CURLcode result)
assert(code == CURLE_OK);
abort_fetch = f->abort;
- LOG(("done %s", f->url));
+ LOG(("done %s", nsurl_access(f->url)));
if (abort_fetch == false && result == CURLE_OK) {
/* fetch completed normally */
@@ -1171,7 +1170,7 @@ bool fetch_curl_process_headers(struct curl_fetch_info *f)
}
/* handle HTTP errors (non 2xx response codes) */
- if (f->only_2xx && strncmp(f->url, "http", 4) == 0 &&
+ if (f->only_2xx && strncmp(nsurl_access(f->url), "http", 4) == 0 &&
(http_code < 200 || 299 < http_code)) {
fetch_send_callback(FETCH_ERROR, f->fetch_handle,
messages_get("Not2xx"), 0,