diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cookie.c | 4 | ||||
-rw-r--r-- | lib/http.c | 4 | ||||
-rw-r--r-- | lib/urldata.h | 1 |
3 files changed, 7 insertions, 2 deletions
diff --git a/lib/cookie.c b/lib/cookie.c index 0e71129de..f6b52df2f 100644 --- a/lib/cookie.c +++ b/lib/cookie.c @@ -1090,6 +1090,8 @@ Curl_cookie_add(struct Curl_easy *data, * * If 'newsession' is TRUE, discard all "session cookies" on read from file. * + * Note that 'data' might be called as NULL pointer. + * * Returns NULL on out of memory. Invalid cookies are ignored. ****************************************************************************/ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data, @@ -1160,6 +1162,8 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data, } c->running = TRUE; /* now, we're running */ + if(data) + data->state.cookie_engine = TRUE; return c; diff --git a/lib/http.c b/lib/http.c index 9719b28ef..4631a7f36 100644 --- a/lib/http.c +++ b/lib/http.c @@ -2676,7 +2676,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) struct Cookie *co = NULL; /* no cookies from start */ int count = 0; - if(data->cookies) { + if(data->cookies && data->state.cookie_engine) { Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE); co = Curl_cookie_getlist(data->cookies, conn->allocptr.cookiehost? @@ -4013,7 +4013,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, data->state.resume_from = 0; /* get everything */ } #if !defined(CURL_DISABLE_COOKIES) - else if(data->cookies && + else if(data->cookies && data->state.cookie_engine && checkprefix("Set-Cookie:", k->p)) { Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE); diff --git a/lib/urldata.h b/lib/urldata.h index 2700bc2a6..f9365b2e6 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -1397,6 +1397,7 @@ struct UrlState { invoked twice when the multi interface is used. */ BIT(stream_depends_e); /* set or don't set the Exclusive bit */ BIT(previouslypending); /* this transfer WAS in the multi->pending queue */ + BIT(cookie_engine); }; |