Protect destructors against post-shutdown use of config.
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Wed, 21 Jul 2004 18:49:57 +0000 (18:49 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Wed, 21 Jul 2004 18:49:57 +0000 (18:49 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@1129 cb58f699-b61c-0410-a6fe-9272a202ed29

shib-target/shib-config.cpp
shib-target/shib-rpchandle.cpp

index 3114315..9a0e17a 100644 (file)
@@ -178,8 +178,10 @@ void STConfig::shutdown()
     Category& log = Category::getInstance("shibtarget.STConfig");
     log.info("shutting down the library");
     delete m_tranLogLock;
+    m_tranLogLock = NULL;
     //delete m_tranLog; // This is crashing for some reason, but we're shutting down anyway.
     delete m_ini;
+    m_ini = NULL;
     ShibConfig::getConfig().term();
     SAMLConfig::getConfig().term();
     log.info("library shutdown complete");
index 4282787..c71d8e4 100644 (file)
@@ -88,9 +88,13 @@ void RPCHandle::disconnect()
         clnt_destroy(m_clnt);
         m_clnt=NULL;
         IConfig* conf=ShibTargetConfig::getConfig().getINI();
-        Locker locker(conf);
-        conf->getListener()->close(m_sock);
-        m_sock=(IListener::ShibSocket)0;
+        if (conf) {
+            Locker locker(conf);
+            conf->getListener()->close(m_sock);
+            m_sock=(IListener::ShibSocket)0;
+        }
+        else
+            m_sock=(IListener::ShibSocket)0;
     }
 }