From bd14b17c94d0ff424c7d238b2a9491679e8d70c5 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Thu, 8 Dec 2005 16:23:15 +0000 Subject: [PATCH] fixed send thread blocks trying to destroy the IIU because the callback lock was taken without using a callback lock manager --- src/ca/cac.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ca/cac.cpp b/src/ca/cac.cpp index fbcd57b21..a4f68ef77 100644 --- a/src/ca/cac.cpp +++ b/src/ca/cac.cpp @@ -1133,13 +1133,13 @@ void cac::selfTest ( void cac::destroyIIU ( tcpiiu & iiu ) { { - epicsGuard < epicsMutex > cbGuard ( this->cbMutex ); + callbackManager mgr ( this->notify, this->cbMutex ); epicsGuard < epicsMutex > guard ( this->mutex ); this->iiuUninstallInProgress = true; if ( iiu.channelCount ( guard ) ) { char hostNameTmp[64]; iiu.getHostName ( guard, hostNameTmp, sizeof ( hostNameTmp ) ); - genLocalExcep ( cbGuard, guard, *this, ECA_DISCONN, hostNameTmp ); + genLocalExcep ( mgr.cbGuard, guard, *this, ECA_DISCONN, hostNameTmp ); } osiSockAddr addr = iiu.getNetworkAddress ( guard ); if ( addr.sa.sa_family == AF_INET ) { @@ -1151,7 +1151,7 @@ void cac::destroyIIU ( tcpiiu & iiu ) } assert ( this->pudpiiu ); - iiu.disconnectAllChannels ( cbGuard, guard, *this->pudpiiu ); + iiu.disconnectAllChannels ( mgr.cbGuard, guard, *this->pudpiiu ); this->serverTable.remove ( iiu ); this->circuitList.remove ( iiu );