diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2011-11-27 14:14:36 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2011-11-27 14:14:36 +0000 |
commit | 07309888d66c608977b31955215503dc355c7d33 (patch) | |
tree | 9cef52ee828b9e8231b1bf1db1716e6fba7fe3e5 /content/fetch.c | |
parent | f32fa6fa0ea54696cac77ee6de5c55b21ca889a5 (diff) | |
download | netsurf-07309888d66c608977b31955215503dc355c7d33.tar.gz netsurf-07309888d66c608977b31955215503dc355c7d33.tar.bz2 |
return;
Fix bug #3442642: allow scheme-specific fetchers to have a say in whether an URL can be fetched.
svn path=/trunk/netsurf/; revision=13182
Diffstat (limited to 'content/fetch.c')
-rw-r--r-- | content/fetch.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/content/fetch.c b/content/fetch.c index bc182f514..2a91ffef1 100644 --- a/content/fetch.c +++ b/content/fetch.c @@ -60,6 +60,7 @@ bool fetch_active; /**< Fetches in progress, please call fetch_poll(). */ /** Information about a fetcher for a given scheme. */ typedef struct scheme_fetcher_s { lwc_string *scheme_name; /**< The scheme. */ + fetcher_can_fetch can_fetch; /**< Ensure an URL can be fetched. */ fetcher_setup_fetch setup_fetch; /**< Set up a fetch. */ fetcher_start_fetch start_fetch; /**< Start a fetch. */ fetcher_abort_fetch abort_fetch; /**< Abort a fetch. */ @@ -157,6 +158,7 @@ void fetch_quit(void) bool fetch_add_fetcher(lwc_string *scheme, fetcher_initialise initialiser, + fetcher_can_fetch can_fetch, fetcher_setup_fetch setup_fetch, fetcher_start_fetch start_fetch, fetcher_abort_fetch abort_fetch, @@ -174,6 +176,7 @@ bool fetch_add_fetcher(lwc_string *scheme, } new_fetcher->scheme_name = scheme; new_fetcher->refcount = 0; + new_fetcher->can_fetch = can_fetch; new_fetcher->setup_fetch = setup_fetch; new_fetcher->start_fetch = start_fetch; new_fetcher->abort_fetch = abort_fetch; @@ -540,16 +543,15 @@ bool fetch_can_fetch(const nsurl *url) while (fetcher != NULL) { lwc_string_isequal(fetcher->scheme_name, scheme, &match); - if (match == true) { - lwc_string_unref(scheme); - return true; - } + if (match == true) + break; + fetcher = fetcher->next_fetcher; } lwc_string_unref(scheme); - return false; + return fetcher == NULL ? false : fetcher->can_fetch(url); } |