Commit 8dd06960 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Dirk Manske's bugfix for the share stuff

parent 5dadbd09
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -39,8 +39,10 @@ curl_share_init(void)
{
  struct Curl_share *share =
    (struct Curl_share *)malloc(sizeof(struct Curl_share));
  if (share)
  if (share) {
    memset (share, 0, sizeof(struct Curl_share));
    share->specifier |= (1<<CURL_LOCK_DATA_SHARE);
  }

  return share;
}
@@ -145,11 +147,21 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...)
  return CURLSHE_OK;
}

CURLSHcode curl_share_cleanup(CURLSH *sh)
CURLSHcode
curl_share_cleanup(CURLSH *sh)
{
  struct Curl_share *share = (struct Curl_share *)sh;
  if (share->dirty)
  
  if (share == NULL)
    return CURLSHE_INVALID;
  
  share->lockfunc(NULL, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE,
                  share->clientdata);
  
  if (share->dirty) {
    share->unlockfunc(NULL, CURL_LOCK_DATA_SHARE, share->clientdata);
    return CURLSHE_IN_USE;
  }

  if(share->hostcache)
    Curl_hash_destroy(share->hostcache);
@@ -157,6 +169,7 @@ CURLSHcode curl_share_cleanup(CURLSH *sh)
  if(share->cookies)
    Curl_cookie_cleanup(share->cookies);

  share->unlockfunc(NULL, CURL_LOCK_DATA_SHARE, share->clientdata);
  free (share);
  
  return CURLSHE_OK;