summaryrefslogtreecommitdiff
path: root/content/fetch.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2003-04-09 21:57:09 +0000
committerJames Bursa <james@netsurf-browser.org>2003-04-09 21:57:09 +0000
commit230cb5f01fbb9948ce5dd067e87535f9c012779c (patch)
tree81ff3fe7964015601baa8228172c46660c6bdc4f /content/fetch.c
parentc62f1a55e6dc2a38ce1f6994160df339843807b5 (diff)
downloadnetsurf-230cb5f01fbb9948ce5dd067e87535f9c012779c.tar.gz
netsurf-230cb5f01fbb9948ce5dd067e87535f9c012779c.tar.bz2
[project @ 2003-04-09 21:57:09 by bursa]
Table layout fixes, allowed type list. svn path=/import/netsurf/; revision=119
Diffstat (limited to 'content/fetch.c')
-rw-r--r--content/fetch.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/content/fetch.c b/content/fetch.c
index 9314bedeb..d1c3f0e07 100644
--- a/content/fetch.c
+++ b/content/fetch.c
@@ -1,5 +1,5 @@
/**
- * $Id: fetch.c,v 1.3 2003/03/15 15:53:20 bursa Exp $
+ * $Id: fetch.c,v 1.4 2003/04/09 21:57:09 bursa Exp $
*/
#include <assert.h>
@@ -21,12 +21,14 @@ struct fetch
char *url;
char error_buffer[CURL_ERROR_SIZE];
void *p;
+ struct curl_slist *headers;
};
static const char * const user_agent = "NetSurf";
static CURLM * curl_multi;
static size_t fetch_curl_data(void * data, size_t size, size_t nmemb, struct fetch *f);
+static size_t fetch_curl_header(void *data, size_t size, size_t nmemb, struct fetch *f);
/**
@@ -102,12 +104,24 @@ struct fetch * fetch_start(char *url, char *referer,
assert(code == CURLE_OK);
code = curl_easy_setopt(fetch->curl_handle, CURLOPT_WRITEDATA, fetch);
assert(code == CURLE_OK);
+/* code = curl_easy_setopt(fetch->curl_handle, CURLOPT_HEADERFUNCTION, fetch_curl_header);
+ assert(code == CURLE_OK);
+ code = curl_easy_setopt(fetch->curl_handle, CURLOPT_WRITEHEADER, fetch);
+ assert(code == CURLE_OK);*/
code = curl_easy_setopt(fetch->curl_handle, CURLOPT_USERAGENT, user_agent);
assert(code == CURLE_OK);
if (referer != 0) {
code = curl_easy_setopt(fetch->curl_handle, CURLOPT_REFERER, referer);
assert(code == CURLE_OK);
- }
+ }
+
+ /* custom request headers */
+ fetch->headers = 0;
+ /* remove curl default headers */
+ fetch->headers = curl_slist_append(fetch->headers, "Accept:");
+ fetch->headers = curl_slist_append(fetch->headers, "Pragma:");
+ code = curl_easy_setopt(fetch->curl_handle, CURLOPT_HTTPHEADER, fetch->headers);
+ assert(code == CURLE_OK);
/* add to the global curl multi handle */
codem = curl_multi_add_handle(curl_multi, fetch->curl_handle);
@@ -138,6 +152,7 @@ void fetch_abort(struct fetch *f)
codem = curl_multi_remove_handle(curl_multi, f->curl_handle);
assert(codem == CURLM_OK);
curl_easy_cleanup(f->curl_handle);
+ curl_slist_free_all(f->headers);
xfree(f->url);
xfree(f);
@@ -242,6 +257,18 @@ size_t fetch_curl_data(void * data, size_t size, size_t nmemb, struct fetch *f)
/**
+ * fetch_curl_header -- callback function for headers
+ */
+
+size_t fetch_curl_header(void *data, size_t size, size_t nmemb, struct fetch *f)
+{
+ LOG(("header '%*s'", size * nmemb, data));
+ return size * nmemb;
+}
+
+
+
+/**
* testing framework
*/