Add a getType method to handlers to assist with documentation.
[shibboleth/sp.git] / shibsp / handler / impl / LocalLogoutInitiator.cpp
index 90c8397..d9383a7 100644 (file)
@@ -29,7 +29,6 @@
 
 using namespace shibsp;
 using namespace xmltooling;
-using namespace log4cpp;
 using namespace std;
 
 namespace shibsp {
@@ -48,6 +47,12 @@ namespace shibsp {
         void setParent(const PropertySet* parent);
         pair<bool,long> run(SPRequest& request, bool isHandler=true) const;
 
+#ifndef SHIBSP_LITE
+        const char* getType() const {
+            return "LogoutInitiator";
+        }
+#endif
+
     private:
         string m_appId;
     };
@@ -63,7 +68,7 @@ namespace shibsp {
 };
 
 LocalLogoutInitiator::LocalLogoutInitiator(const DOMElement* e, const char* appId)
-    : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".LogoutInitiator")), m_appId(appId)
+    : AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT".LogoutInitiator.Local")), m_appId(appId)
 {
     pair<bool,const char*> loc = getString("Location");
     if (loc.first) {
@@ -103,6 +108,10 @@ pair<bool,long> LocalLogoutInitiator::run(SPRequest& request, bool isHandler) co
             return sendLogoutPage(request.getApplication(), request, true, "Partial logout failure.");
         }
         request.getServiceProvider().getSessionCache()->remove(session_id, request.getApplication());
+
+        // Clear the cookie.
+        pair<string,const char*> shib_cookie=request.getApplication().getCookieNameProps("_shibsession_");
+        request.setCookie(shib_cookie.first.c_str(), shib_cookie.second);
     }
 
     return sendLogoutPage(request.getApplication(), request, true, "Logout was successful.");