Loading CHANGES +4 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,10 @@ Changelog Daniel (24 May 2004) - Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could not be used both in one request. Fixed it and added test case 172 to verify. Daniel (21 May 2004) - While talking to host a.b.c, libcurl did wrongly not accept cookies that were set to the domain .a.b.c (that is with a dot prefix). This is now fixed Loading lib/http.c +27 −20 Original line number Diff line number Diff line Loading @@ -1236,6 +1236,7 @@ CURLcode Curl_http(struct connectdata *conn) char *ptr; char *request; Curl_HttpReq httpreq = data->set.httpreq; char *addcookies = NULL; if(!conn->proto.http) { /* Only allocate this struct if we don't already have it! */ Loading Loading @@ -1316,11 +1317,8 @@ CURLcode Curl_http(struct connectdata *conn) else conn->allocptr.ref = NULL; Curl_safefree(conn->allocptr.cookie); if(data->set.cookie && !checkheaders(data, "Cookie:")) conn->allocptr.cookie = aprintf("Cookie: %s\015\012", data->set.cookie); else conn->allocptr.cookie = NULL; addcookies = data->set.cookie; if(!conn->bits.upload_chunky && (httpreq != HTTPREQ_GET)) { /* not a chunky transfer yet, but data is to be sent */ Loading Loading @@ -1578,7 +1576,6 @@ CURLcode Curl_http(struct connectdata *conn) "%s" /* userpwd */ "%s" /* range */ "%s" /* user agent */ "%s" /* cookie */ "%s" /* host */ "%s" /* pragma */ "%s" /* accept */ Loading @@ -1596,7 +1593,6 @@ CURLcode Curl_http(struct connectdata *conn) conn->allocptr.rangeline:"", (data->set.useragent && *data->set.useragent && conn->allocptr.uagent)? conn->allocptr.uagent:"", (conn->allocptr.cookie?conn->allocptr.cookie:""), /* Cookie: <data> */ (conn->allocptr.host?conn->allocptr.host:""), /* Host: host */ http->p_pragma?http->p_pragma:"", http->p_accept?http->p_accept:"", Loading @@ -1609,18 +1605,19 @@ CURLcode Curl_http(struct connectdata *conn) if(result) return result; if(data->cookies) { struct Cookie *co; /* no cookies from start */ if(data->cookies || addcookies) { struct Cookie *co=NULL; /* no cookies from start */ int count=0; 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(co) { int count=0; struct Cookie *store=co; /* now loop through all cookies that matched */ while(co) { Loading @@ -1639,11 +1636,21 @@ CURLcode Curl_http(struct connectdata *conn) } co = co->next; /* next cookie please */ } Curl_cookie_freelist(store); /* free the cookie list */ } if(addcookies && (CURLE_OK == result)) { if(!count) result = add_bufferf(req_buffer, "Cookie: "); if(CURLE_OK == result) { result = add_bufferf(req_buffer, "%s%s", count?"; ":"", addcookies); count++; } } if(count && (CURLE_OK == result)) result = add_buffer(req_buffer, "\r\n", 2); Curl_cookie_freelist(store); /* free the cookie list */ } if(result) return result; } Loading lib/url.c +0 −1 Original line number Diff line number Diff line Loading @@ -1415,7 +1415,6 @@ CURLcode Curl_disconnect(struct connectdata *conn) Curl_safefree(conn->allocptr.accept_encoding); Curl_safefree(conn->allocptr.rangeline); Curl_safefree(conn->allocptr.ref); Curl_safefree(conn->allocptr.cookie); Curl_safefree(conn->allocptr.host); Curl_safefree(conn->allocptr.cookiehost); Loading lib/urldata.h +0 −1 Original line number Diff line number Diff line Loading @@ -527,7 +527,6 @@ struct connectdata { char *userpwd; /* free later if not NULL! */ char *rangeline; /* free later if not NULL! */ char *ref; /* free later if not NULL! */ char *cookie; /* free later if not NULL! */ char *host; /* free later if not NULL */ char *cookiehost; /* free later if not NULL */ } allocptr; Loading tests/data/Makefile.am +2 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test203 test93 test94 test95 test509 test510 test97 test98 test99 \ test150 test151 test152 test153 test154 test155 test156 test157 \ test158 test159 test511 test160 test161 test162 test163 test164 \ test512 test165 test166 test167 test168 test169 test170 test171 test512 test165 test166 test167 test168 test169 test170 test171 \ test172 # The following tests have been removed from the dist since they no longer # work. We need to fix the test suite's FTPS server first, then bring them Loading Loading
CHANGES +4 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,10 @@ Changelog Daniel (24 May 2004) - Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could not be used both in one request. Fixed it and added test case 172 to verify. Daniel (21 May 2004) - While talking to host a.b.c, libcurl did wrongly not accept cookies that were set to the domain .a.b.c (that is with a dot prefix). This is now fixed Loading
lib/http.c +27 −20 Original line number Diff line number Diff line Loading @@ -1236,6 +1236,7 @@ CURLcode Curl_http(struct connectdata *conn) char *ptr; char *request; Curl_HttpReq httpreq = data->set.httpreq; char *addcookies = NULL; if(!conn->proto.http) { /* Only allocate this struct if we don't already have it! */ Loading Loading @@ -1316,11 +1317,8 @@ CURLcode Curl_http(struct connectdata *conn) else conn->allocptr.ref = NULL; Curl_safefree(conn->allocptr.cookie); if(data->set.cookie && !checkheaders(data, "Cookie:")) conn->allocptr.cookie = aprintf("Cookie: %s\015\012", data->set.cookie); else conn->allocptr.cookie = NULL; addcookies = data->set.cookie; if(!conn->bits.upload_chunky && (httpreq != HTTPREQ_GET)) { /* not a chunky transfer yet, but data is to be sent */ Loading Loading @@ -1578,7 +1576,6 @@ CURLcode Curl_http(struct connectdata *conn) "%s" /* userpwd */ "%s" /* range */ "%s" /* user agent */ "%s" /* cookie */ "%s" /* host */ "%s" /* pragma */ "%s" /* accept */ Loading @@ -1596,7 +1593,6 @@ CURLcode Curl_http(struct connectdata *conn) conn->allocptr.rangeline:"", (data->set.useragent && *data->set.useragent && conn->allocptr.uagent)? conn->allocptr.uagent:"", (conn->allocptr.cookie?conn->allocptr.cookie:""), /* Cookie: <data> */ (conn->allocptr.host?conn->allocptr.host:""), /* Host: host */ http->p_pragma?http->p_pragma:"", http->p_accept?http->p_accept:"", Loading @@ -1609,18 +1605,19 @@ CURLcode Curl_http(struct connectdata *conn) if(result) return result; if(data->cookies) { struct Cookie *co; /* no cookies from start */ if(data->cookies || addcookies) { struct Cookie *co=NULL; /* no cookies from start */ int count=0; 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(co) { int count=0; struct Cookie *store=co; /* now loop through all cookies that matched */ while(co) { Loading @@ -1639,11 +1636,21 @@ CURLcode Curl_http(struct connectdata *conn) } co = co->next; /* next cookie please */ } Curl_cookie_freelist(store); /* free the cookie list */ } if(addcookies && (CURLE_OK == result)) { if(!count) result = add_bufferf(req_buffer, "Cookie: "); if(CURLE_OK == result) { result = add_bufferf(req_buffer, "%s%s", count?"; ":"", addcookies); count++; } } if(count && (CURLE_OK == result)) result = add_buffer(req_buffer, "\r\n", 2); Curl_cookie_freelist(store); /* free the cookie list */ } if(result) return result; } Loading
lib/url.c +0 −1 Original line number Diff line number Diff line Loading @@ -1415,7 +1415,6 @@ CURLcode Curl_disconnect(struct connectdata *conn) Curl_safefree(conn->allocptr.accept_encoding); Curl_safefree(conn->allocptr.rangeline); Curl_safefree(conn->allocptr.ref); Curl_safefree(conn->allocptr.cookie); Curl_safefree(conn->allocptr.host); Curl_safefree(conn->allocptr.cookiehost); Loading
lib/urldata.h +0 −1 Original line number Diff line number Diff line Loading @@ -527,7 +527,6 @@ struct connectdata { char *userpwd; /* free later if not NULL! */ char *rangeline; /* free later if not NULL! */ char *ref; /* free later if not NULL! */ char *cookie; /* free later if not NULL! */ char *host; /* free later if not NULL */ char *cookiehost; /* free later if not NULL */ } allocptr; Loading
tests/data/Makefile.am +2 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test203 test93 test94 test95 test509 test510 test97 test98 test99 \ test150 test151 test152 test153 test154 test155 test156 test157 \ test158 test159 test511 test160 test161 test162 test163 test164 \ test512 test165 test166 test167 test168 test169 test170 test171 test512 test165 test166 test167 test168 test169 test170 test171 \ test172 # The following tests have been removed from the dist since they no longer # work. We need to fix the test suite's FTPS server first, then bring them Loading