Commit c914e6ea authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

"Igor" pointed out that CURLOPT_COOKIELIST set to "ALL" leaked memory, and so

did "SESS". Fixed now.
parent 79cb74f0
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -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
+1 −0
Original line number Original line Diff line number Diff line
@@ -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:


+12 −6
Original line number Original line Diff line number Diff line
@@ -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
+2 −2
Original line number Original line Diff line number Diff line
@@ -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 *);
+1 −1
Original line number Original line Diff line number Diff line
@@ -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)