From: wessels <> Date: Wed, 16 Dec 1998 06:51:19 +0000 (+0000) Subject: cleaning up peer and peer_digest interlocking goop X-Git-Tag: SQUID_3_0_PRE1~2459 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fcbbccfea5b12a915688756fa4c31e9d2b7ea955;p=thirdparty%2Fsquid.git cleaning up peer and peer_digest interlocking goop --- diff --git a/src/neighbors.cc b/src/neighbors.cc index ce9e2c9e34..250af098d6 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -1,6 +1,6 @@ /* - * $Id: neighbors.cc,v 1.264 1998/12/05 00:54:33 wessels Exp $ + * $Id: neighbors.cc,v 1.265 1998/12/15 23:51:19 wessels Exp $ * * DEBUG: section 15 Neighbor Routines * AUTHOR: Harvest Derived @@ -894,12 +894,9 @@ peerDestroy(void *data, int unused) } safe_free(p->host); #if USE_CACHE_DIGESTS - if (p->digest) { - if (cbdataValid(p->digest)) - peerDigestNotePeerGone(p->digest); + if (p->digest) cbdataUnlock(p->digest); - p->digest = NULL; - } + p->digest = NULL; #endif xfree(p); } @@ -909,8 +906,9 @@ peerNoteDigestGone(peer * p) { #if USE_CACHE_DIGESTS if (p->digest) { - cbdataUnlock(p->digest); + PeerDigest *pd = p->digest; p->digest = NULL; + cbdataUnlock(pd); } #endif } diff --git a/src/peer_digest.cc b/src/peer_digest.cc index 458cf69c73..d6259c3ce6 100644 --- a/src/peer_digest.cc +++ b/src/peer_digest.cc @@ -1,6 +1,6 @@ /* - * $Id: peer_digest.cc,v 1.64 1998/12/14 23:45:15 rousskov Exp $ + * $Id: peer_digest.cc,v 1.65 1998/12/15 23:51:20 wessels Exp $ * * DEBUG: section 72 Peer Digest Routines * AUTHOR: Alex Rousskov @@ -117,14 +117,16 @@ peerDigestCreate(peer * p) void peerDigestDestroy(PeerDigest * pd) { + peer *p; assert(pd); assert(cbdataValid(pd)); - /* inform peer (if any) that we are gone */ - if (cbdataValid(pd->peer)) - peerNoteDigestGone(pd->peer); - cbdataUnlock(pd->peer); /* must unlock, valid or not */ + p = pd->peer; pd->peer = NULL; + /* inform peer (if any) that we are gone */ + if (cbdataValid(p)) + peerNoteDigestGone(p); + cbdataUnlock(p); /* must unlock, valid or not */ peerDigestClean(pd); cbdataFree(pd);