- Patrick Scott found a rather large memory leak when using the multi

interface and setting CURLMOPT_MAXCONNECTS to something less than the number
  of handles you add to the multi handle. All the connections that didn't fit
  in the cache would not be properly disconnected nor freed!
This commit is contained in:
Daniel Stenberg 2009-02-02 21:36:47 +00:00
parent f0332c0b58
commit d4ac3d53fc
3 changed files with 13 additions and 2 deletions

View file

@ -4804,8 +4804,12 @@ CURLcode Curl_done(struct connectdata **connp,
state it is for re-using, so we're forced to close it. In a perfect world
we can add code that keep track of if we really must close it here or not,
but currently we have no such detail knowledge.
connectindex == -1 here means that the connection has no spot in the
connection cache and thus we must disconnect it here.
*/
if(data->set.reuse_forbid || conn->bits.close || premature) {
if(data->set.reuse_forbid || conn->bits.close || premature ||
(-1 == conn->connectindex)) {
CURLcode res2 = Curl_disconnect(conn); /* close the connection */
/* If we had an error already, make sure we return that one. But