summaryrefslogtreecommitdiff
path: root/content/llcache.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2011-09-27 11:07:32 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2011-09-27 11:07:32 +0000
commite1f7a37f157686aba073296c3458875b839577b5 (patch)
treea9c8e46272e32ca491e0b2586d7720b0f2bbb596 /content/llcache.c
parenta269a82d1fee2eca4bee956b35ff8fd71e65c30e (diff)
downloadnetsurf-e1f7a37f157686aba073296c3458875b839577b5.tar.gz
netsurf-e1f7a37f157686aba073296c3458875b839577b5.tar.bz2
Port fetch layer to nsurl. Remove unused fetch_get_referer function.
svn path=/trunk/netsurf/; revision=12899
Diffstat (limited to 'content/llcache.c')
-rw-r--r--content/llcache.c48
1 files changed, 45 insertions, 3 deletions
diff --git a/content/llcache.c b/content/llcache.c
index d4a6c9168..afa2702b9 100644
--- a/content/llcache.c
+++ b/content/llcache.c
@@ -351,11 +351,20 @@ nserror llcache_handle_retrieve(const char *url, uint32_t flags,
nserror error;
llcache_object_user *user;
llcache_object *object;
+ nsurl *nsurl;
+
+ /* make a nsurl */
+ error = nsurl_create(url, &nsurl);
+ if (error != NSERROR_OK)
+ return error;
/* Can we fetch this URL at all? */
- if (fetch_can_fetch(url) == false)
+ if (fetch_can_fetch(nsurl) == false)
return NSERROR_NO_FETCH_HANDLER;
+ /* done with nsurl */
+ nsurl_unref(nsurl);
+
/* Create a new object user */
error = llcache_object_user_new(cb, pw, &user);
if (error != NSERROR_OK)
@@ -1051,6 +1060,8 @@ nserror llcache_object_refetch(llcache_object *object)
struct fetch_multipart_data *multipart = NULL;
char **headers = NULL;
int header_idx = 0;
+ nsurl*nsurl, *nsurl_ref;
+ nserror error;
if (object->fetch.post != NULL) {
if (object->fetch.post->type == LLCACHE_POST_URL_ENCODED)
@@ -1109,14 +1120,35 @@ nserror llcache_object_refetch(llcache_object *object)
LOG(("Refetching %p", object));
#endif
+ /* make nsurls */
+ error = nsurl_create(object->url, &nsurl);
+ if (error != NSERROR_OK) {
+ free(headers);
+ return error;
+ }
+ if (object->fetch.referer != NULL) {
+ error = nsurl_create(object->fetch.referer, &nsurl_ref);
+ if (error != NSERROR_OK) {
+ nsurl_unref(nsurl);
+ free(headers);
+ return error;
+ }
+ } else {
+ nsurl_ref = NULL;
+ }
+
/* Kick off fetch */
- object->fetch.fetch = fetch_start(object->url, object->fetch.referer,
+ object->fetch.fetch = fetch_start(nsurl, nsurl_ref,
llcache_fetch_callback, object,
object->fetch.flags & LLCACHE_RETRIEVE_NO_ERROR_PAGES,
urlenc, multipart,
object->fetch.flags & LLCACHE_RETRIEVE_VERIFIABLE,
(const char **) headers);
+ nsurl_unref(nsurl);
+ if (nsurl_ref != NULL)
+ nsurl_unref(nsurl_ref);
+
/* Clean up cache-control headers */
while (--header_idx >= 0)
free(headers[header_idx]);
@@ -2000,6 +2032,7 @@ nserror llcache_fetch_redirect(llcache_object *object, const char *target,
url_func_result result;
/* Extract HTTP response code from the fetch object */
long http_code = fetch_http_code(object->fetch.fetch);
+ nsurl *nsurl;
/* Abort fetch for this object */
fetch_abort(object->fetch.fetch);
@@ -2074,11 +2107,20 @@ nserror llcache_fetch_redirect(llcache_object *object, const char *target,
free(scheme);
free(object_scheme);
+ /* make a nsurl */
+ error = nsurl_create(url, &nsurl);
+ if (error != NSERROR_OK) {
+ free(url);
+ return error;
+ }
+
/* Bail out if we've no way of handling this URL */
- if (fetch_can_fetch(url) == false) {
+ if (fetch_can_fetch(nsurl) == false) {
free(url);
+ nsurl_unref(nsurl);
return NSERROR_OK;
}
+ nsurl_unref(nsurl);
if (http_code == 301 || http_code == 302 || http_code == 303) {
/* 301, 302, 303 redirects are all unconditional GET requests */