From: wessels <> Date: Wed, 16 Dec 1998 07:07:17 +0000 (+0000) Subject: more peer / peer_digest locking fixes X-Git-Tag: SQUID_3_0_PRE1~2458 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3855c318455b4ee8d02601392f89db4d99bac8ea;p=thirdparty%2Fsquid.git more peer / peer_digest locking fixes --- diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 12f363a43c..82d4a8c03d 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.cc,v 1.316 1998/12/15 18:22:40 wessels Exp $ + * $Id: cache_cf.cc,v 1.317 1998/12/16 00:07:17 wessels Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -784,6 +784,11 @@ free_peer(peer ** P) peer *p; while ((p = *P) != NULL) { *P = p->next; +#if USE_CACHE_DIGESTS + if (p->digest) + cbdataUnlock(p->digest); + p->digest = NULL; +#endif cbdataFree(p); } Config.npeers = 0; diff --git a/src/neighbors.cc b/src/neighbors.cc index 250af098d6..b26f8b54ad 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -1,6 +1,6 @@ /* - * $Id: neighbors.cc,v 1.265 1998/12/15 23:51:19 wessels Exp $ + * $Id: neighbors.cc,v 1.266 1998/12/16 00:07:19 wessels Exp $ * * DEBUG: section 15 Neighbor Routines * AUTHOR: Harvest Derived @@ -894,9 +894,8 @@ peerDestroy(void *data, int unused) } safe_free(p->host); #if USE_CACHE_DIGESTS - if (p->digest) - cbdataUnlock(p->digest); - p->digest = NULL; + /* it should be set NULL in free_peer() */ + assert(p->digest == NULL); #endif xfree(p); } diff --git a/src/peer_digest.cc b/src/peer_digest.cc index d6259c3ce6..61daefabc5 100644 --- a/src/peer_digest.cc +++ b/src/peer_digest.cc @@ -1,6 +1,6 @@ /* - * $Id: peer_digest.cc,v 1.65 1998/12/15 23:51:20 wessels Exp $ + * $Id: peer_digest.cc,v 1.66 1998/12/16 00:07:20 wessels Exp $ * * DEBUG: section 72 Peer Digest Routines * AUTHOR: Alex Rousskov @@ -659,6 +659,7 @@ peerDigestPDFinish(DigestFetchState * fetch, int pcb_valid, int err) else debug(72, 2) ("received valid digest from %s\n", host); } + fetch->pd = NULL; cbdataUnlock(pd); } @@ -688,6 +689,7 @@ peerDigestFetchFinish(DigestFetchState * fetch, int err) requestUnlink(fetch->request); fetch->entry = NULL; fetch->request = NULL; + assert(fetch->pd == NULL); cbdataUnlock(fetch); cbdataFree(fetch); }