mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
"Igor" pointed out that CURLOPT_COOKIELIST set to "ALL" leaked memory, and so
did "SESS". Fixed now.
This commit is contained in:
parent
79cb74f03a
commit
c914e6ea5d
7
CHANGES
7
CHANGES
@ -6,9 +6,16 @@
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
<<<<<<< CHANGES
|
||||||
|
Daniel S (23 Jan 2008)
|
||||||
|
- "Igor" pointed out that CURLOPT_COOKIELIST set to "ALL" leaked memory, and so
|
||||||
|
did "SESS". Fixed now.
|
||||||
|
|
||||||
|
=======
|
||||||
Yang Tse (22 Jan 2008)
|
Yang Tse (22 Jan 2008)
|
||||||
- Check poll.h at configuration time, and use it when sys/poll.h unavailable
|
- Check poll.h at configuration time, and use it when sys/poll.h unavailable
|
||||||
|
|
||||||
|
>>>>>>> 1.1234
|
||||||
Daniel S (22 Jan 2008)
|
Daniel S (22 Jan 2008)
|
||||||
- Dmitry Kurochkin removed the cancelled state for pipelining, as we agreed
|
- Dmitry Kurochkin removed the cancelled state for pipelining, as we agreed
|
||||||
that it is bad anyway. Starting now, removing a handle that is in used in a
|
that it is bad anyway. Starting now, removing a handle that is in used in a
|
||||||
|
@ -60,6 +60,7 @@ This release includes the following bugfixes:
|
|||||||
o curl_multi_fdset() failed to return socket while doing CONNECT over proxy
|
o curl_multi_fdset() failed to return socket while doing CONNECT over proxy
|
||||||
o curl_multi_remove_handle() on a handle that is in used for a pipeline now
|
o curl_multi_remove_handle() on a handle that is in used for a pipeline now
|
||||||
break that pipeline
|
break that pipeline
|
||||||
|
o CURLOPT_COOKIELIST memory leaks
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
|
18
lib/cookie.c
18
lib/cookie.c
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -812,7 +812,7 @@ struct Cookie *Curl_cookie_getlist(struct CookieInfo *c,
|
|||||||
void Curl_cookie_clearall(struct CookieInfo *cookies)
|
void Curl_cookie_clearall(struct CookieInfo *cookies)
|
||||||
{
|
{
|
||||||
if(cookies) {
|
if(cookies) {
|
||||||
Curl_cookie_freelist(cookies->cookies);
|
Curl_cookie_freelist(cookies->cookies, TRUE);
|
||||||
cookies->cookies = NULL;
|
cookies->cookies = NULL;
|
||||||
cookies->numcookies = 0;
|
cookies->numcookies = 0;
|
||||||
}
|
}
|
||||||
@ -824,16 +824,22 @@ void Curl_cookie_clearall(struct CookieInfo *cookies)
|
|||||||
*
|
*
|
||||||
* Free a list of cookies previously returned by Curl_cookie_getlist();
|
* Free a list of cookies previously returned by Curl_cookie_getlist();
|
||||||
*
|
*
|
||||||
|
* The 'cookiestoo' argument tells this function whether to just free the
|
||||||
|
* list or actually also free all cookies within the list as well.
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void Curl_cookie_freelist(struct Cookie *co)
|
void Curl_cookie_freelist(struct Cookie *co, bool cookiestoo)
|
||||||
{
|
{
|
||||||
struct Cookie *next;
|
struct Cookie *next;
|
||||||
if(co) {
|
if(co) {
|
||||||
while(co) {
|
while(co) {
|
||||||
next = co->next;
|
next = co->next;
|
||||||
free(co); /* we only free the struct since the "members" are all
|
if(cookiestoo)
|
||||||
just copied! */
|
freecookie(co);
|
||||||
|
else
|
||||||
|
free(co); /* we only free the struct since the "members" are all just
|
||||||
|
pointed out in the main cookie list! */
|
||||||
co = next;
|
co = next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -867,7 +873,7 @@ void Curl_cookie_clearsess(struct CookieInfo *cookies)
|
|||||||
else
|
else
|
||||||
prev->next = next;
|
prev->next = next;
|
||||||
|
|
||||||
free(curr);
|
freecookie(curr);
|
||||||
cookies->numcookies--;
|
cookies->numcookies--;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -91,7 +91,7 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
|
|||||||
const char *, struct CookieInfo *, bool);
|
const char *, struct CookieInfo *, bool);
|
||||||
struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *,
|
struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *,
|
||||||
const char *, bool);
|
const char *, bool);
|
||||||
void Curl_cookie_freelist(struct Cookie *);
|
void Curl_cookie_freelist(struct Cookie *cookies, bool cookiestoo);
|
||||||
void Curl_cookie_clearall(struct CookieInfo *cookies);
|
void Curl_cookie_clearall(struct CookieInfo *cookies);
|
||||||
void Curl_cookie_clearsess(struct CookieInfo *cookies);
|
void Curl_cookie_clearsess(struct CookieInfo *cookies);
|
||||||
void Curl_cookie_cleanup(struct CookieInfo *);
|
void Curl_cookie_cleanup(struct CookieInfo *);
|
||||||
|
@ -2374,7 +2374,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
|
|||||||
}
|
}
|
||||||
co = co->next; /* next cookie please */
|
co = co->next; /* next cookie please */
|
||||||
}
|
}
|
||||||
Curl_cookie_freelist(store); /* free the cookie list */
|
Curl_cookie_freelist(store, FALSE); /* free the cookie list */
|
||||||
}
|
}
|
||||||
if(addcookies && (CURLE_OK == result)) {
|
if(addcookies && (CURLE_OK == result)) {
|
||||||
if(!count)
|
if(!count)
|
||||||
|
Loading…
Reference in New Issue
Block a user