summaryrefslogtreecommitdiff
path: root/content/fetch.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2007-02-25 16:52:53 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2007-02-25 16:52:53 +0000
commitcf17b3806579982ed1977d0e5d29c2285c0813fd (patch)
tree1841fa2db599d44d2ee4ccdcb6cf1097269ca1ce /content/fetch.c
parent0f50dc77d9e328541be71561dd7e5c313c8a7c9d (diff)
downloadnetsurf-cf17b3806579982ed1977d0e5d29c2285c0813fd.tar.gz
netsurf-cf17b3806579982ed1977d0e5d29c2285c0813fd.tar.bz2
Ensure handle options are reset appropriately (fixes 1668354)
svn path=/trunk/netsurf/; revision=3189
Diffstat (limited to 'content/fetch.c')
-rw-r--r--content/fetch.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/content/fetch.c b/content/fetch.c
index 558b96fc0..fc686ace1 100644
--- a/content/fetch.c
+++ b/content/fetch.c
@@ -652,10 +652,11 @@ CURLcode fetch_set_options(struct fetch *f)
const char *auth;
#undef SETOPT
-#define SETOPT(option, value) \
+#define SETOPT(option, value) { \
code = curl_easy_setopt(f->curl_handle, option, value); \
if (code != CURLE_OK) \
- return code;
+ return code; \
+ }
SETOPT(CURLOPT_URL, f->url);
SETOPT(CURLOPT_PRIVATE, f);
@@ -665,16 +666,25 @@ CURLcode fetch_set_options(struct fetch *f)
SETOPT(CURLOPT_REFERER, f->send_referer ? f->referer : 0);
SETOPT(CURLOPT_HTTPHEADER, f->headers);
if (f->post_urlenc) {
+ SETOPT(CURLOPT_HTTPPOST, 0);
+ SETOPT(CURLOPT_HTTPGET, 0L);
SETOPT(CURLOPT_POSTFIELDS, f->post_urlenc);
} else if (f->post_multipart) {
+ SETOPT(CURLOPT_POSTFIELDS, 0);
+ SETOPT(CURLOPT_HTTPGET, 0L);
SETOPT(CURLOPT_HTTPPOST, f->post_multipart);
} else {
+ SETOPT(CURLOPT_POSTFIELDS, 0);
+ SETOPT(CURLOPT_HTTPPOST, 0);
SETOPT(CURLOPT_HTTPGET, 1L);
}
f->cookie_string = urldb_get_cookie(f->url);
- if (f->cookie_string)
+ if (f->cookie_string) {
SETOPT(CURLOPT_COOKIE, f->cookie_string);
+ } else {
+ SETOPT(CURLOPT_COOKIE, 0);
+ }
#ifdef WITH_AUTH
if ((auth = urldb_get_auth_details(f->url)) != NULL) {
@@ -709,8 +719,12 @@ CURLcode fetch_set_options(struct fetch *f)
/* Disable certificate verification */
SETOPT(CURLOPT_SSL_VERIFYPEER, 0L);
SETOPT(CURLOPT_SSL_VERIFYHOST, 0L);
+ SETOPT(CURLOPT_SSL_CTX_FUNCTION, 0);
+ SETOPT(CURLOPT_SSL_CTX_DATA, 0);
} else {
/* do verification */
+ SETOPT(CURLOPT_SSL_VERIFYPEER, 1L);
+ SETOPT(CURLOPT_SSL_VERIFYHOST, 2L);
SETOPT(CURLOPT_SSL_CTX_FUNCTION, fetch_sslctxfun);
SETOPT(CURLOPT_SSL_CTX_DATA, f);
}