aboutsummaryrefslogtreecommitdiff
path: root/lib/http.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/http.c')
-rw-r--r--lib/http.c69
1 files changed, 35 insertions, 34 deletions
diff --git a/lib/http.c b/lib/http.c
index 3084d3211..388f7debf 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -1230,7 +1230,6 @@ CURLcode Curl_http(struct connectdata *conn)
char *buf = data->state.buffer; /* this is a short cut to the buffer */
CURLcode result=CURLE_OK;
struct HTTP *http;
- struct Cookie *co=NULL; /* no cookies from start */
char *ppath = conn->path;
char *host = conn->host.name;
const char *te = ""; /* tranfer-encoding */
@@ -1399,15 +1398,6 @@ CURLcode Curl_http(struct connectdata *conn)
return CURLE_OUT_OF_MEMORY;
}
- if(data->cookies) {
- Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
- co = Curl_cookie_getlist(data->cookies,
- conn->allocptr.cookiehost?
- conn->allocptr.cookiehost:host, ppath,
- (bool)(conn->protocol&PROT_HTTPS?TRUE:FALSE));
- Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
- }
-
if (conn->bits.httpproxy &&
!data->set.tunnel_thru_httpproxy &&
!(conn->protocol&PROT_HTTPS)) {
@@ -1611,40 +1601,51 @@ CURLcode Curl_http(struct connectdata *conn)
http->p_pragma?http->p_pragma:"",
http->p_accept?http->p_accept:"",
(data->set.encoding && *data->set.encoding && conn->allocptr.accept_encoding)?
- conn->allocptr.accept_encoding:"", /* 08/28/02 jhrg */
- (data->change.referer && conn->allocptr.ref)?conn->allocptr.ref:"" /* Referer: <data> <CRLF> */,
+ conn->allocptr.accept_encoding:"",
+ (data->change.referer && conn->allocptr.ref)?conn->allocptr.ref:"" /* Referer: <data> */,
te
);
if(result)
return result;
- if(co) {
- int count=0;
- struct Cookie *store=co;
- /* now loop through all cookies that matched */
- while(co) {
- if(co->value) {
- if(0 == count) {
- result = add_bufferf(req_buffer, "Cookie: ");
+ if(data->cookies) {
+ struct Cookie *co; /* no cookies from start */
+
+ Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
+ co = Curl_cookie_getlist(data->cookies,
+ conn->allocptr.cookiehost?
+ conn->allocptr.cookiehost:host, ppath,
+ (bool)(conn->protocol&PROT_HTTPS?TRUE:FALSE));
+ Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
+
+ if(co) {
+ int count=0;
+ struct Cookie *store=co;
+ /* now loop through all cookies that matched */
+ while(co) {
+ if(co->value) {
+ if(0 == count) {
+ result = add_bufferf(req_buffer, "Cookie: ");
+ if(result)
+ break;
+ }
+ result = add_bufferf(req_buffer,
+ "%s%s=%s", count?"; ":"",
+ co->name, co->value);
if(result)
- return result;
+ break;
+ count++;
}
- result = add_bufferf(req_buffer,
- "%s%s=%s", count?"; ":"", co->name, co->value);
- if(result)
- return result;
- count++;
+ co = co->next; /* next cookie please */
}
- co = co->next; /* next cookie please */
- }
- if(count) {
- result = add_buffer(req_buffer, "\r\n", 2);
- if(result)
- return result;
+ if(count && (CURLE_OK == result))
+ result = add_buffer(req_buffer, "\r\n", 2);
+
+ Curl_cookie_freelist(store); /* free the cookie list */
}
- Curl_cookie_freelist(store); /* free the cookie list */
- co=NULL;
+ if(result)
+ return result;
}
if(data->set.timecondition) {