Examining the previous change I see that it will introduce a race condition when circuits are being created and destroyed at close to the same instant in time. See revision 11786 of cac.cpp which fixes mantis 334 if you are interested in what this code does. After running the regression tests, I pushed in a fix (which is removing above mentioned change and restoring the increment of iiuExistenceCount in cac::findOrCreateVirtCircuit.

This commit is contained in:
Jeff Hill
2010-08-16 17:45:06 -06:00
parent a3dd3e1a2f
commit 7af0397d58

View File

@@ -286,7 +286,6 @@ cac::~cac ()
//
// shutdown all tcp circuits
//
this->iiuExistenceCount = this->circuitList.count();
tsDLIter < tcpiiu > iter = this->circuitList.firstIter ();
while ( iter.valid() ) {
// this causes a clean shutdown to occur
@@ -544,6 +543,7 @@ bool cac::findOrCreateVirtCircuit (
}
this->serverTable.add ( *pnewiiu );
this->circuitList.add ( *pnewiiu );
this->iiuExistenceCount++;
pBHE->registerIIU ( guard, *pnewiiu );
piiu = pnewiiu.release ();
newIIU = true;