diff --git a/src/ca/cac.cpp b/src/ca/cac.cpp index 7b3d41b32..c236360ec 100644 --- a/src/ca/cac.cpp +++ b/src/ca/cac.cpp @@ -175,6 +175,10 @@ cac::~cac () tsDLIterBD piiu ( this->iiuList.first () ); while ( piiu.valid () ) { tsDLIterBD pnext = piiu.itemAfter (); + { + osiAutoMutex autoMutex ( this->defaultMutex ); + piiu->disconnectAllChan ( *this->pudpiiu ); + } piiu->disconnect (); piiu->suicide (); piiu = pnext; @@ -250,6 +254,12 @@ void cac::processRecvBacklog () } } + if ( piiu->channelCount () ) { + char hostNameTmp[64]; + piiu->hostName ( hostNameTmp, sizeof ( hostNameTmp ) ); + genLocalExcep ( *this, ECA_DISCONN, hostNameTmp ); + } + { osiAutoMutex autoMutex ( this->defaultMutex ); piiu->disconnectAllChan ( *this->pudpiiu );