[SCM] Debian packaging for the Shibboleth Apache SP branch, debian, updated. upstream/1.3.1.dfsg1-143-gb58a785

Russ Allbery rra at debian.org
Fri Jun 27 00:23:06 UTC 2008


The following commit has been merged in the debian branch:
commit b58a785cd4d06b40d2fd6cfabfa000643543a381
Author: Russ Allbery <rra at debian.org>
Date:   Thu Jun 26 09:57:18 2008 -0700

    Remove old quilt patches
    
    Remove old quilt patches to avoid confusing the new dpkg source
    format.  Since switching to Git, they were no longer used.
    
    Closes: #485039

diff --git a/debian/changelog b/debian/changelog
index 1f39e58..84f7773 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+shibboleth-sp (1.3.1.dfsg1-2) UNRELEASED; urgency=low
+
+  * Remove old quilt patches to avoid confusing the new dpkg source
+    format.  Since switching to Git, they were no longer used.  Thanks,
+    Raphael Hertzog.  (Closes: #485039)
+
+ -- Russ Allbery <rra at debian.org>  Thu, 26 Jun 2008 09:56:26 -0700
+
 shibboleth-sp (1.3.1.dfsg1-1) unstable; urgency=low
 
   * New upstream release.
diff --git a/debian/patches/64-bit b/debian/patches/64-bit
deleted file mode 100644
index ec22aa4..0000000
--- a/debian/patches/64-bit
+++ /dev/null
@@ -1,49 +0,0 @@
-Patch from Andreas Jochens to resolve FTBFS on 64-bit platforms due to
-C++ compilation errors (which are correct; an int is too small to hold
-a pointer).  Not yet submitted upstream.
-
-Index: shibboleth-sp/apache/mod_apache.cpp
-===================================================================
---- shibboleth-sp.orig/apache/mod_apache.cpp	2006-10-03 12:00:05.000000000 -0700
-+++ shibboleth-sp/apache/mod_apache.cpp	2006-11-27 19:24:28.000000000 -0800
-@@ -193,7 +193,7 @@ extern "C" const char* ap_set_global_str
- extern "C" const char* shib_set_server_string_slot(cmd_parms* parms, void*, const char* arg)
- {
-     char* base=(char*)ap_get_module_config(parms->server->module_config,&mod_shib);
--    int offset=(int)parms->info;
-+    long offset=(long)parms->info;
-     *((char**)(base + offset))=ap_pstrdup(parms->pool,arg);
-     return NULL;
- }
-@@ -341,11 +341,11 @@ extern "C" int shib_check_user(request_r
-     // Check user authentication and export information, then set the handler bypass
-     pair<bool,void*> res = sta.doCheckAuthN(true);
-     apr_pool_userdata_setn((const void*)42,g_UserDataKey,NULL,r->pool);
--    if (res.first) return (int)res.second;
-+    if (res.first) return (long)res.second;
- 
-     // user auth was okay -- export the assertions now
-     res = sta.doExportAssertions();
--    if (res.first) return (int)res.second;
-+    if (res.first) return (long)res.second;
- 
-     // export happened successfully..  this user is ok.
-     return OK;
-@@ -390,7 +390,7 @@ extern "C" int shib_handler(request_rec*
-     ShibTargetApache sta(r);
- 
-     pair<bool,void*> res = sta.doHandler();
--    if (res.first) return (int)res.second;
-+    if (res.first) return (long)res.second;
- 
-     ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, SH_AP_R(r), "doHandler() did not do anything.");
-     return SERVER_ERROR;
-@@ -427,7 +427,7 @@ extern "C" int shib_auth_checker(request
-     ShibTargetApache sta(r);
- 
-     pair<bool,void*> res = sta.doCheckAuthZ();
--    if (res.first) return (int)res.second;
-+    if (res.first) return (long)res.second;
- 
-     // We're all okay.
-     return OK;
diff --git a/debian/patches/dfsg b/debian/patches/dfsg
deleted file mode 100644
index d9615c1..0000000
--- a/debian/patches/dfsg
+++ /dev/null
@@ -1,15 +0,0 @@
-Remove from the build machinery references to files that we had to remove
-from the upstream source due to DFSG freeness problems.
-
-Index: shibboleth-sp/schemas/Makefile.am
-===================================================================
---- shibboleth-sp.orig/schemas/Makefile.am	2006-11-03 12:53:19.000000000 -0800
-+++ shibboleth-sp/schemas/Makefile.am	2006-11-03 12:53:28.000000000 -0800
-@@ -19,7 +19,6 @@ pkgxml_DATA = \
-                 shibboleth-targetconfig-1.0.xsd \
- 				saml-schema-assertion-2.0.xsd \
- 				saml-schema-metadata-2.0.xsd \
--				WS-Trust.xsd \
- 				metadata_v12_to_v11.xsl \
- 				metadata_v12_to_v13.xsl \
- 				metadata_v13_to_v12.xsl \
diff --git a/debian/patches/gcc-4.3 b/debian/patches/gcc-4.3
deleted file mode 100644
index 65db0de..0000000
--- a/debian/patches/gcc-4.3
+++ /dev/null
@@ -1,236 +0,0 @@
-Patch from Martin Michlmayr to clean up some C++ header sloppiness that
-causes compilation failures with gcc 4.3.  Submitted upstream.
-
-Debian Bug#417710
-Upstream bug #644
-
-Index: shibboleth-sp/adfs/listener.cpp
-===================================================================
---- shibboleth-sp.orig/adfs/listener.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/adfs/listener.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -26,6 +26,7 @@
- 
- #include <log4cpp/FixedContextCategory.hh>
- #include <xercesc/framework/MemBufInputSource.hpp>
-+#include <memory>
- 
- using namespace std;
- using namespace log4cpp;
-Index: shibboleth-sp/shib/ShibbolethTrust.cpp
-===================================================================
---- shibboleth-sp.orig/shib/ShibbolethTrust.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib/ShibbolethTrust.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -30,6 +30,8 @@
- #include <xsec/dsig/DSIGKeyInfoX509.hpp>
- #include <xsec/enc/OpenSSL/OpenSSLCryptoX509.hpp>
- 
-+#include <memory>
-+
- using namespace shibboleth;
- using namespace saml;
- using namespace log4cpp;
-Index: shibboleth-sp/shib/ScopedAttribute.cpp
-===================================================================
---- shibboleth-sp.orig/shib/ScopedAttribute.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib/ScopedAttribute.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include "internal.h"
- #include <xercesc/util/regx/RegularExpression.hpp>
- #include <log4cpp/Category.hh>
-+#include <memory>
- 
- using namespace shibboleth;
- using namespace saml;
-Index: shibboleth-sp/shib-target/MemoryListener.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/MemoryListener.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/MemoryListener.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -23,6 +23,7 @@
-  */
- 
- #include "internal.h"
-+#include <memory>
- 
- using namespace std;
- using namespace log4cpp;
-Index: shibboleth-sp/shib-target/RPCListener.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/RPCListener.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/RPCListener.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include <saml/saml.h>  // need this to "prime" the xmlsec-constrained windows.h declaration
- #include <shib-target/shibrpc.h>
- #include "internal.h"
-+#include <memory>
- 
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
-Index: shibboleth-sp/shib-target/shib-ccache.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/shib-ccache.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/shib-ccache.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -24,6 +24,7 @@
-  */
- 
- #include "internal.h"
-+#include <memory>
- 
- #if HAVE_UNISTD_H
- # include <unistd.h>
-Index: shibboleth-sp/shib-target/shib-ini.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/shib-ini.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/shib-ini.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -28,6 +28,7 @@
- 
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <memory>
- 
- using namespace std;
- using namespace saml;
-Index: shibboleth-sp/shib-target/shib-target.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/shib-target.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/shib-target.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -32,6 +32,7 @@
- #include <sstream>
- #include <fstream>
- #include <stdexcept>
-+#include <memory>
- 
- #include <shib/shib-threads.h>
- #include <xercesc/util/Base64.hpp>
-Index: shibboleth-sp/shib-target/XMLRequestMapper.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/XMLRequestMapper.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/shib-target/XMLRequestMapper.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include "internal.h"
- 
- #include <log4cpp/Category.hh>
-+#include <memory>
- 
- using namespace std;
- using namespace log4cpp;
-Index: shibboleth-sp/test/shibtest.cpp
-===================================================================
---- shibboleth-sp.orig/test/shibtest.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/test/shibtest.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -15,6 +15,7 @@
-  */
- 
- #include "../shib-target/shib-target.h"
-+#include <memory>
- 
- using namespace std;
- using namespace saml;
-Index: shibboleth-sp/test/posttest.cpp
-===================================================================
---- shibboleth-sp.orig/test/posttest.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/test/posttest.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -15,6 +15,7 @@
-  */
- 
- #include "../shib/shib.h"
-+#include <memory>
- #include <sstream>
- 
- #include <openssl/bio.h>
-Index: shibboleth-sp/apache/mod_apache.cpp
-===================================================================
---- shibboleth-sp.orig/apache/mod_apache.cpp	2007-04-28 13:16:19.000000000 -0700
-+++ shibboleth-sp/apache/mod_apache.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -52,6 +52,7 @@
- 
- #include <fstream>
- #include <sstream>
-+#include <memory>
- 
- #ifdef HAVE_UNISTD_H
- #include <unistd.h>		// for getpid()
-Index: shibboleth-sp/siterefresh/siterefresh.cpp
-===================================================================
---- shibboleth-sp.orig/siterefresh/siterefresh.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/siterefresh/siterefresh.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include <shib-target/shib-target.h>
- 
- #include <fstream>
-+#include <memory>
- #include <log4cpp/Category.hh>
- #include <log4cpp/OstreamAppender.hh>
- #include <xercesc/framework/URLInputSource.hpp>
-Index: shibboleth-sp/xmlproviders/XMLAAP.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLAAP.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLAAP.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -25,6 +25,7 @@
- #include "internal.h"
- 
- #include <log4cpp/Category.hh>
-+#include <memory>
- 
- using namespace shibboleth;
- using namespace saml;
-Index: shibboleth-sp/xmlproviders/XMLAccessControl.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLAccessControl.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLAccessControl.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -24,6 +24,7 @@
- #include <shib-target/shib-target.h>
- 
- #include <log4cpp/Category.hh>
-+#include <memory>
- 
- #ifndef HAVE_STRCASECMP
- # define strcasecmp stricmp
-Index: shibboleth-sp/xmlproviders/XMLCredentials.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLCredentials.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLCredentials.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -28,6 +28,7 @@
- #include <sys/stat.h>
- 
- #include <log4cpp/Category.hh>
-+#include <memory>
- 
- using namespace shibboleth;
- using namespace saml;
-Index: shibboleth-sp/xmlproviders/XMLMetadata.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLMetadata.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLMetadata.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -38,6 +38,7 @@
- #include <xsec/enc/OpenSSL/OpenSSLCryptoX509.hpp>
- #include <xsec/framework/XSECException.hpp>
- #include <xsec/framework/XSECProvider.hpp>
-+#include <memory>
- 
- using namespace shibboleth;
- using namespace saml;
-Index: shibboleth-sp/xmlproviders/XMLTrust.cpp
-===================================================================
---- shibboleth-sp.orig/xmlproviders/XMLTrust.cpp	2007-04-11 20:23:07.000000000 -0700
-+++ shibboleth-sp/xmlproviders/XMLTrust.cpp	2007-04-28 13:16:19.000000000 -0700
-@@ -37,6 +37,8 @@
- #include <xsec/enc/XSECCryptoException.hpp>
- #include <xsec/enc/XSECKeyInfoResolverDefault.hpp>
- 
-+#include <memory>
-+
- using namespace shibboleth;
- using namespace saml;
- using namespace log4cpp;
-Index: shibboleth-sp/shib-target/shib-mlp.cpp
-===================================================================
---- shibboleth-sp.orig/shib-target/shib-mlp.cpp	2007-04-28 13:16:30.000000000 -0700
-+++ shibboleth-sp/shib-target/shib-mlp.cpp	2007-04-28 13:16:45.000000000 -0700
-@@ -26,6 +26,7 @@
- 
- #include <sstream>
- #include <ctype.h>
-+#include <typeinfo>
- #include <xercesc/util/XercesDefs.hpp>
- #include <log4cpp/Category.hh>
- 
diff --git a/debian/patches/log4cpp-1.0 b/debian/patches/log4cpp-1.0
deleted file mode 100644
index 475fa05..0000000
--- a/debian/patches/log4cpp-1.0
+++ /dev/null
@@ -1,275 +0,0 @@
-log4cpp 1.0 removed the ENDLINE enum from CategoryStream and instead uses
-log4cpp::eol.  Not yet reported upstream.
-
---- shibboleth-sp.orig/shib-target/ArtifactMapper.cpp
-+++ shibboleth-sp/shib-target/ArtifactMapper.cpp
-@@ -99,7 +99,7 @@
- 		        try {
- 		            response = binding->send(ep->getLocation(),*request,&callCtx);
- 		            if (log.isDebugEnabled())
--		            	log.debugStream() << "SAML response from artifact request:\n" << *response << CategoryStream::ENDLINE;
-+		            	log.debugStream() << "SAML response from artifact request:\n" << *response << log4cpp::eol;
- 		            
- 		            if (!response->getAssertions().hasNext()) {
- 		                delete response;
-@@ -138,7 +138,7 @@
- 			        try {
- 			            response = binding->send(ep->getLocation(),*request,&callCtx);
- 			            if (log.isDebugEnabled())
--			            	log.debugStream() << "SAML response from artifact request:\n" << *response << CategoryStream::ENDLINE;
-+			            	log.debugStream() << "SAML response from artifact request:\n" << *response << log4cpp::eol;
- 			            
- 			            if (!response->getAssertions().hasNext()) {
- 			                delete response;
---- shibboleth-sp.orig/shib-target/RPCListener.cpp
-+++ shibboleth-sp/shib-target/RPCListener.cpp
-@@ -238,21 +238,21 @@
- 
-     istringstream authstream(ret.auth_statement);
-     log.debugStream() << "trying to decode authentication statement: "
--        << ((ret.auth_statement && *ret.auth_statement) ? ret.auth_statement : "(none)") << CategoryStream::ENDLINE;
-+        << ((ret.auth_statement && *ret.auth_statement) ? ret.auth_statement : "(none)") << log4cpp::eol;
-     auto_ptr<SAMLAuthenticationStatement> s(
-     	(ret.auth_statement && *ret.auth_statement) ? new SAMLAuthenticationStatement(authstream) : NULL
-     	);
- 
-     istringstream prestream(ret.attr_response_pre);
-     log.debugStream() << "trying to decode unfiltered attribute response: "
--        << ((ret.attr_response_pre && *ret.attr_response_pre) ? ret.attr_response_pre : "(none)") << CategoryStream::ENDLINE;
-+        << ((ret.attr_response_pre && *ret.attr_response_pre) ? ret.attr_response_pre : "(none)") << log4cpp::eol;
-     auto_ptr<SAMLResponse> pre(
-     	(ret.attr_response_pre && *ret.attr_response_pre) ? new SAMLResponse(prestream,minor) : NULL
-     	);
- 
-     istringstream poststream(ret.attr_response_post);
-     log.debugStream() << "trying to decode filtered attribute response: "
--        << ((ret.attr_response_post && *ret.attr_response_post) ? ret.attr_response_post : "(none)") << CategoryStream::ENDLINE;
-+        << ((ret.attr_response_post && *ret.attr_response_post) ? ret.attr_response_post : "(none)") << log4cpp::eol;
-     auto_ptr<SAMLResponse> post(
-     	(ret.attr_response_post && *ret.attr_response_post) ? new SAMLResponse(poststream,minor) : NULL
-     	);
---- shibboleth-sp.orig/shib-target/XMLRequestMapper.cpp
-+++ shibboleth-sp/shib-target/XMLRequestMapper.cpp
-@@ -461,7 +461,7 @@
-         }
-     }
-     catch (SAMLException& e) {
--        log->errorStream() << "Error while parsing request mapping configuration: " << e.what() << CategoryStream::ENDLINE;
-+        log->errorStream() << "Error while parsing request mapping configuration: " << e.what() << log4cpp::eol;
-         throw;
-     }
- #ifndef _DEBUG
---- shibboleth-sp.orig/shib-target/shib-ini.cpp
-+++ shibboleth-sp/shib-target/shib-ini.cpp
-@@ -567,7 +567,7 @@
-         }
-     }
-     catch (SAMLException& e) {
--        log.errorStream() << "Error while processing applicaton element: " << e.what() << CategoryStream::ENDLINE;
-+        log.errorStream() << "Error while processing applicaton element: " << e.what() << log4cpp::eol;
-         cleanup();
-         throw;
-     }
-@@ -1137,7 +1137,7 @@
-         }
-     }
-     catch (SAMLException& e) {
--        log.errorStream() << "Error while loading SP configuration: " << e.what() << CategoryStream::ENDLINE;
-+        log.errorStream() << "Error while loading SP configuration: " << e.what() << log4cpp::eol;
-         throw;
-     }
- #ifndef _DEBUG
---- shibboleth-sp.orig/shib/ReloadableXMLFile.cpp
-+++ shibboleth-sp/shib/ReloadableXMLFile.cpp
-@@ -53,12 +53,12 @@
-         m_doc=p.parse(dsrc);
-         m_root=m_doc->getDocumentElement();
- 
--        log.infoStream() << "Loaded and parsed XML file (" << pathname << ")" << CategoryStream::ENDLINE;
-+        log.infoStream() << "Loaded and parsed XML file (" << pathname << ")" << log4cpp::eol;
-     }
-     catch (XMLException& e)
-     {
-         auto_ptr_char msg(e.getMessage());
--        log.errorStream() << "Xerces error while opening configuration file (" << pathname << "): " << msg.get() << CategoryStream::ENDLINE;
-+        log.errorStream() << "Xerces error while opening configuration file (" << pathname << "): " << msg.get() << log4cpp::eol;
-         if (m_doc) {
-             m_doc->release();
-             m_doc=NULL;
-@@ -67,7 +67,7 @@
-     }
-     catch (SAMLException& e)
-     {
--        log.errorStream() << "XML error while parsing configuration file (" << pathname << "): " << e.what() << CategoryStream::ENDLINE;
-+        log.errorStream() << "XML error while parsing configuration file (" << pathname << "): " << e.what() << log4cpp::eol;
-         if (m_doc) {
-             m_doc->release();
-             m_doc=NULL;
-@@ -77,7 +77,7 @@
- #ifndef _DEBUG
-     catch (...)
-     {
--        log.errorStream() << "Unexpected error while parsing configuration file (" << pathname << ")" << CategoryStream::ENDLINE;
-+        log.errorStream() << "Unexpected error while parsing configuration file (" << pathname << ")" << log4cpp::eol;
-         if (m_doc) {
-             m_doc->release();
-             m_doc=NULL;
---- shibboleth-sp.orig/shib/ShibbolethTrust.cpp
-+++ shibboleth-sp/shib/ShibbolethTrust.cpp
-@@ -47,9 +47,9 @@
-         unsigned long code=ERR_get_error_line_data(&file,&line,&data,&flags);
-         while (code) {
-             Category& log=Category::getInstance("OpenSSL");
--            log.errorStream() << "error code: " << code << " in " << file << ", line " << line << CategoryStream::ENDLINE;
-+            log.errorStream() << "error code: " << code << " in " << file << ", line " << line << log4cpp::eol;
-             if (data && (flags & ERR_TXT_STRING))
--                log.errorStream() << "error data: " << data << CategoryStream::ENDLINE;
-+                log.errorStream() << "error data: " << data << log4cpp::eol;
-             code=ERR_get_error_line_data(&file,&line,&data,&flags);
-         }
-     }
-@@ -314,7 +314,7 @@
-                 buf[len] = '\0';
-                 subjectstr+=buf;
-             }
--            log.infoStream() << "certificate subject: " << subjectstr << CategoryStream::ENDLINE;
-+            log.infoStream() << "certificate subject: " << subjectstr << log4cpp::eol;
-             // The flags give us LDAP order instead of X.500, with a comma plus space separator.
-             len=X509_NAME_print_ex(b2,subject,0,XN_FLAG_RFC2253 + XN_FLAG_SEP_CPLUS_SPC - XN_FLAG_SEP_COMMA_PLUS);
-             BIO_flush(b2);
---- shibboleth-sp.orig/siterefresh/siterefresh.cpp
-+++ shibboleth-sp/siterefresh/siterefresh.cpp
-@@ -270,25 +270,25 @@
-         ret=-1;
-     }
-     catch(SAMLException& e) {
--        log.errorStream() << "caught a SAML exception: " << e.what() << CategoryStream::ENDLINE;
-+        log.errorStream() << "caught a SAML exception: " << e.what() << log4cpp::eol;
-         ret=-2;
-     }
-     catch(XMLException& e) {
-         auto_ptr_char temp(e.getMessage());
--        log.errorStream() << "caught an XML exception: " << temp.get() << CategoryStream::ENDLINE;
-+        log.errorStream() << "caught an XML exception: " << temp.get() << log4cpp::eol;
-         ret=-3;
-     }
-     catch(XSECException& e) {
-         auto_ptr_char temp(e.getMsg());
--        log.errorStream() << "caught an XMLSec exception: " << temp.get() << CategoryStream::ENDLINE;
-+        log.errorStream() << "caught an XMLSec exception: " << temp.get() << log4cpp::eol;
-         ret=-4;
-     }
-     catch(XSECCryptoException& e) {
--        log.errorStream() << "caught an XMLSecCrypto exception: " << e.getMsg() << CategoryStream::ENDLINE;
-+        log.errorStream() << "caught an XMLSecCrypto exception: " << e.getMsg() << log4cpp::eol;
-         ret=-5;
-     }
-     catch(...) {
--        log.errorStream() << "caught an unknown exception" << CategoryStream::ENDLINE;
-+        log.errorStream() << "caught an unknown exception" << log4cpp::eol;
-         ret=-6;
-     }
- 
---- shibboleth-sp.orig/xmlproviders/XMLAAP.cpp
-+++ shibboleth-sp/xmlproviders/XMLAAP.cpp
-@@ -200,7 +200,7 @@
-     }
-     catch (SAMLException& e)
-     {
--        log.errorStream() << "Error while parsing AAP: " << e.what() << CategoryStream::ENDLINE;
-+        log.errorStream() << "Error while parsing AAP: " << e.what() << log4cpp::eol;
-         this->~XMLAAPImpl();
-         throw;
-     }
-@@ -398,7 +398,7 @@
-         {
-             auto_ptr<char> tmp(XMLString::transcode(ex.getMessage()));
-             Category::getInstance(XMLPROVIDERS_LOGCAT".XMLAAPImpl").errorStream()
--                << "caught exception while parsing regular expression: " << tmp.get() << CategoryStream::ENDLINE;
-+                << "caught exception while parsing regular expression: " << tmp.get() << log4cpp::eol;
-         }
-         return false;
-     }
---- shibboleth-sp.orig/xmlproviders/XMLAccessControl.cpp
-+++ shibboleth-sp/xmlproviders/XMLAccessControl.cpp
-@@ -264,7 +264,7 @@
-             m_rootAuthz=new Operator(rootElement);
-     }
-     catch (SAMLException& e) {
--        log->errorStream() << "Error while parsing access control configuration: " << e.what() << CategoryStream::ENDLINE;
-+        log->errorStream() << "Error while parsing access control configuration: " << e.what() << log4cpp::eol;
-         throw;
-     }
- #ifndef _DEBUG
---- shibboleth-sp.orig/xmlproviders/XMLCredentials.cpp
-+++ shibboleth-sp/xmlproviders/XMLCredentials.cpp
-@@ -131,7 +131,7 @@
-         }
-     }
-     catch (SAMLException& e) {
--        log.errorStream() << "Error while parsing creds configuration: " << e.what() << CategoryStream::ENDLINE;
-+        log.errorStream() << "Error while parsing creds configuration: " << e.what() << log4cpp::eol;
-         this->~XMLCredentialsImpl();
-         throw;
-     }
---- shibboleth-sp.orig/xmlproviders/XMLMetadata.cpp
-+++ shibboleth-sp/xmlproviders/XMLMetadata.cpp
-@@ -1183,7 +1183,7 @@
-     }
-     catch (SAMLException& e)
-     {
--        log.errorStream() << "Error while parsing SAML metadata: " << e.what() << CategoryStream::ENDLINE;
-+        log.errorStream() << "Error while parsing SAML metadata: " << e.what() << log4cpp::eol;
-         this->~XMLMetadataImpl();
-         throw;
-     }
-@@ -1355,13 +1355,13 @@
-     }
-     catch(XSECException& e) {
-         auto_ptr_char msg(e.getMsg());
--        log.errorStream() << "caught XMLSec exception while verifying metadata signature: " << msg.get() << CategoryStream::ENDLINE;
-+        log.errorStream() << "caught XMLSec exception while verifying metadata signature: " << msg.get() << log4cpp::eol;
-         if (sig)
-             prov.releaseSignature(sig);
-         return false;
-     }
-     catch(XSECCryptoException& e) {
--        log.errorStream() << "caught XMLSecCrypto exception while verifying metadata signature: " << e.getMsg() << CategoryStream::ENDLINE;
-+        log.errorStream() << "caught XMLSecCrypto exception while verifying metadata signature: " << e.getMsg() << log4cpp::eol;
-         if (sig)
-             prov.releaseSignature(sig);
-         return false;
---- shibboleth-sp.orig/xmlproviders/XMLProviders.cpp
-+++ shibboleth-sp/xmlproviders/XMLProviders.cpp
-@@ -100,9 +100,9 @@
-     unsigned long code=ERR_get_error_line_data(&file,&line,&data,&flags);
-     while (code) {
-         Category& log=Category::getInstance("OpenSSL");
--        log.errorStream() << "error code: " << code << " in " << file << ", line " << line << CategoryStream::ENDLINE;
-+        log.errorStream() << "error code: " << code << " in " << file << ", line " << line << log4cpp::eol;
-         if (data && (flags & ERR_TXT_STRING))
--            log.errorStream() << "error data: " << data << CategoryStream::ENDLINE;
-+            log.errorStream() << "error data: " << data << log4cpp::eol;
-         code=ERR_get_error_line_data(&file,&line,&data,&flags);
-     }
- }
---- shibboleth-sp.orig/xmlproviders/XMLTrust.cpp
-+++ shibboleth-sp/xmlproviders/XMLTrust.cpp
-@@ -332,7 +332,7 @@
-         walker->release();    // This just cleans up aggressively, but there's no leak if we don't.
-     }
-     catch (SAMLException& e) {
--        log.errorStream() << "Error while parsing trust configuration: " << e.what() << CategoryStream::ENDLINE;
-+        log.errorStream() << "Error while parsing trust configuration: " << e.what() << log4cpp::eol;
-         this->~XMLTrustImpl();
-         throw;
-     }
-@@ -473,7 +473,7 @@
-                 buf[len] = '\0';
-                 subjectstr+=buf;
-             }
--            log.infoStream() << "certificate subject: " << subjectstr << CategoryStream::ENDLINE;
-+            log.infoStream() << "certificate subject: " << subjectstr << log4cpp::eol;
-             // The flags give us LDAP order instead of X.500, with a comma plus space separator.
-             len=X509_NAME_print_ex(b2,subject,0,XN_FLAG_RFC2253 + XN_FLAG_SEP_CPLUS_SPC - XN_FLAG_SEP_COMMA_PLUS);
-             BIO_flush(b2);
diff --git a/debian/patches/native-syslog b/debian/patches/native-syslog
deleted file mode 100644
index 15a5787..0000000
--- a/debian/patches/native-syslog
+++ /dev/null
@@ -1,38 +0,0 @@
-Switch the native.log over to syslog instead of trying to write to a
-file where Apache doesn't have permissions.  Not sent upstream, but
-they're aware of the problem and I don't think they are making changes
-in this area.
-
---- shibboleth-sp.orig/configs/native.logger.in
-+++ shibboleth-sp/configs/native.logger.in
-@@ -10,10 +10,23 @@
- 
- # define the appenders
- 
--log4j.appender.native_log=org.apache.log4j.RollingFileAppender
--log4j.appender.native_log.fileName=@-SHIRELOGDIR-@/native.log
--log4j.appender.native_log.maxFileSize=1000000
--log4j.appender.native_log.maxBackupIndex=10
--#log4j.appender.native_log.layout=org.apache.log4j.BasicLayout
--log4j.appender.native_log.layout=org.apache.log4j.PatternLayout
--log4j.appender.native_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} %p %c %x: %m%n
-+# This is the default, but it's essentially useless under normal
-+# circumstances since Apache doesn't have access to write to that
-+# directory.
-+#log4j.appender.native_log=org.apache.log4j.RollingFileAppender
-+#log4j.appender.native_log.fileName=@-SHIRELOGDIR-@/native.log
-+#log4j.appender.native_log.maxFileSize=1000000
-+#log4j.appender.native_log.maxBackupIndex=10
-+##log4j.appender.native_log.layout=org.apache.log4j.BasicLayout
-+#log4j.appender.native_log.layout=org.apache.log4j.PatternLayout
-+#log4j.appender.native_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} %p %c %x: %m%n
-+
-+# Use syslog instead, since then at least the messages will go somewhere.
-+# That facility is (3 << 3) or LOG_DAEMON, since log4cpp apparently
-+# doesn't recognize symbolic log facilities.
-+#
-+# This is a Debian-specific change.
-+log4j.appender.native_log=org.apache.log4j.LocalSyslogAppender
-+log4j.appender.native_log.syslogName=shibboleth-sp
-+log4j.appender.native_log.facility=24
-+log4j.appender.native_log.layout=org.apache.log4j.BasicLayout
diff --git a/debian/patches/remote-mysql b/debian/patches/remote-mysql
deleted file mode 100644
index 9f45781..0000000
--- a/debian/patches/remote-mysql
+++ /dev/null
@@ -1,1277 +0,0 @@
-Index: shibboleth-sp/Makefile.am
-===================================================================
---- shibboleth-sp.orig/Makefile.am	2006-09-29 11:58:09.000000000 -0700
-+++ shibboleth-sp/Makefile.am	2006-09-29 23:33:28.000000000 -0700
-@@ -23,7 +23,8 @@ WANT_SUBDIRS = @WANT_SUBDIRS@
- SUBDIRS = $(WANT_SUBDIRS)
- 
- DIST_SUBDIRS = adfs doc oncrpc shib schemas configs shib-target shar test \
--	apache siterefresh shib-mysql-ccache xmlproviders nsapi_shib selinux
-+	apache siterefresh shib-mysql-ccache xmlproviders nsapi_shib selinux \
-+	shib-remote-mysql-ccache
- 
- all-local: shibboleth.spec pkginfo
- 
-Index: shibboleth-sp/configure.ac
-===================================================================
---- shibboleth-sp.orig/configure.ac	2006-09-29 11:58:09.000000000 -0700
-+++ shibboleth-sp/configure.ac	2006-09-29 23:33:28.000000000 -0700
-@@ -556,6 +556,7 @@ fi
- #
- 
- AC_CONFIG_FILES([shib-mysql-ccache/Makefile])
-+AC_CONFIG_FILES([shib-remote-mysql-ccache/Makefile])
- 
- # determine whether we should enable the mysql ccache
- AC_ARG_ENABLE([mysql],
-@@ -627,16 +628,40 @@ if test "$mysql_version_ok" = "yes" ; th
-    if test $? != 0 ; then
-       found_mysql=no
-       if test "$mysql_enabled" = "yes" ; then
--        AC_MSG_ERROR(Could not find the MySQL Embedded-server libraries.)
-+        AC_MSG_WARN(Could not find the MySQL Embedded-server libraries.)
-       else
--        AC_MSG_RESULT(no.. skipping MySQL)
-+        AC_MSG_RESULT(no.. skipping Embedded MySQL)
-       fi
-    else
-       found_mysql=yes
-       AC_MSG_RESULT(yes)
-    fi
-+
-+   AC_MSG_CHECKING(for MySQL client libraries)
-+   MYSQL_CLIENT_LIBS=`$MYSQL_CONFIG --libs_r`
-+   if test $? != 0 ; then
-+      MYSQL_CLIENT_LIBS=`$MYSQL_CONFIG --libs`
-+      if test $? != 0; then
-+        found_mysql_client=no
-+        if test "$mysql_enabled" = "yes" ; then
-+          AC_MSG_WARN(Could not find the MySQL client libraries.)
-+        else
-+          AC_MSG_RESULT(no.. skipping MySQL client)
-+        fi
-+      else
-+        found_mysql_client=yes
-+      fi
-+   else
-+      found_mysql_client=yes
-+      AC_MSG_RESULT(yes)
-+   fi
-+
-+   if test "$found_mysql" = "no" -a "$found_mysql_client" = "no"; then
-+     AC_MSG_ERROR(Could not find the MySQL embedded server or client libraries)
-+   fi
- fi
- 
-+
- # if found_mysql=yes then test that we can actually build mysql
- if test "$found_mysql" = yes ; then
-    MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`
-@@ -654,7 +679,7 @@ if test "$found_mysql" = yes ; then
-    if test "$have_mysql_h" = yes ; then
-       save_LIBS="$LIBS"
-       LIBS="$LIBS $MYSQL_LIBS"
--      AC_MSG_CHECKING(if we can link againt mysql)
-+      AC_MSG_CHECKING(if we can link against MySQL Embedded Server Library)
-       AC_TRY_LINK(
-         [#include <mysql.h>
-          #include <stdio.h>],
-@@ -664,17 +689,51 @@ if test "$found_mysql" = yes ; then
-       LIBS="$save_LIBS"
- 
-       if test "$have_mysql_libs" = no ; then
--         if test "$mysql_enabled" = "yes" ; then
--            AC_MSG_ERROR([unable to link with MySQL Embedded Server Library])
--         else
--            AC_MSG_RESULT(no.  skipping MySQL)
--         fi
-+         AC_MSG_RESULT(no.  skipping MySQL Embedded Server Library)
-+      fi
-+   fi
-+
-+   CPPFLAGS="$save_CPPFLAGS"
-+fi
-+
-+# if found_mysql_client=yes then test that we can actually build mysql
-+if test "$found_mysql_client" = yes ; then
-+   MYSQL_CLIENT_CFLAGS=`$MYSQL_CONFIG --cflags`
-+   MYSQL_CLIENT_CFLAGS=`eval echo $MYSQL_CLIENT_CFLAGS`
-+   MYSQL_CLIENT_LIBS=`eval echo $MYSQL_CLIENT_LIBS`
-+
-+   save_CPPFLAGS="$CPPFLAGS"
-+   CPPFLAGS="$CPPFLAGS $MYSQL_CFLAGS"
-+
-+   AC_CHECK_HEADER([mysql.h], [have_mysql_h=yes], [have_mysql_h=no])
-+   if test "$have_mysql_h" = no -a "$mysql_enabled" = "yes" ; then
-+     AC_MSG_ERROR(unable to find MySQL header files)
-+   fi
-+
-+   if test "$have_mysql_h" = yes ; then
-+      save_LIBS="$LIBS"
-+      LIBS="$LIBS $MYSQL_CLIENT_LIBS"
-+      AC_MSG_CHECKING(if we can link againt MySQL Client Library)
-+      AC_TRY_LINK(
-+        [#include <mysql.h>
-+         #include <stdio.h>],
-+        [mysql_library_init(0, NULL, NULL)],
-+        [have_mysql_client_libs=yes],
-+        [have_mysql_client_libs=no])
-+      LIBS="$save_LIBS"
-+
-+      if test "$have_mysql_client_libs" = no ; then
-+         AC_MSG_RESULT(no.  skipping MySQL CLient Library)
-       fi
-    fi
- 
-    CPPFLAGS="$save_CPPFLAGS"
- fi
- 
-+if test "$have_mysql_libs" = "no" -a "$have_mysql_client_libs" = "no"; then
-+   AC_MSG_ERROR([unable to link with either the MySQL Embedded Server or Client Library])
-+fi
-+
- # if have_mysql_libs=yes then go ahead with building MySQL
- if test "$have_mysql_libs" = yes ; then
-    # this AC_MSG_RESULT is from above!
-@@ -684,6 +743,15 @@ if test "$have_mysql_libs" = yes ; then
-    AC_SUBST(MYSQL_LIBS)
- fi
- 
-+# if have_mysql_client_libs=yes then go ahead with building MySQL
-+if test "$have_mysql_client_libs" = yes ; then
-+   # this AC_MSG_RESULT is from above!
-+   AC_MSG_RESULT(yes)
-+   WANT_SUBDIRS="$WANT_SUBDIRS shib-remote-mysql-ccache"
-+   AC_SUBST(MYSQL_CLIENT_CFLAGS)
-+   AC_SUBST(MYSQL_CLIENT_LIBS)
-+fi
-+
- 
- AC_SUBST(WANT_SUBDIRS)
- 
-Index: shibboleth-sp/shib-remote-mysql-ccache/Makefile.am
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/Makefile.am	2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,23 @@
-+AUTOMAKE_OPTIONS = foreign
-+
-+plugindir = $(libexecdir)
-+plugin_LTLIBRARIES = shib-remote-mysql-ccache.la
-+
-+AM_CFLAGS = $(MYSQL_CLIENT_CFLAGS)
-+AM_CXXFLAGS = $(AM_CFLAGS)
-+
-+shib_remote_mysql_ccache_la_LIBADD = \
-+	../shib-target/libshib-target.la \
-+	../shib/libshib.la \
-+	$(MYSQL_CLIENT_LIBS)
-+
-+shib_remote_mysql_ccache_la_SOURCES = \
-+	shib-remote-mysql-ccache.cpp
-+
-+shib_remote_mysql_ccache_la_LDFLAGS = -module -avoid-version
-+
-+install-exec-hook:
-+	for la in $(plugin_LTLIBRARIES) ; do rm -f $(DESTDIR)$(plugindir)/$$la ; done
-+
-+EXTRA_DIST = shib_remote_mysql_ccache.dsp shib_remote_mysql_ccache.rc resource.h
-+
-Index: shibboleth-sp/shib-remote-mysql-ccache/resource.h
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/resource.h	2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,15 @@
-+//{{NO_DEPENDENCIES}}
-+// Microsoft Developer Studio generated include file.
-+// Used by shib_remote_mysql_ccache.rc
-+//
-+
-+// Next default values for new objects
-+// 
-+#ifdef APSTUDIO_INVOKED
-+#ifndef APSTUDIO_READONLY_SYMBOLS
-+#define _APS_NEXT_RESOURCE_VALUE        101
-+#define _APS_NEXT_COMMAND_VALUE         40001
-+#define _APS_NEXT_CONTROL_VALUE         1000
-+#define _APS_NEXT_SYMED_VALUE           101
-+#endif
-+#endif
-Index: shibboleth-sp/shib-remote-mysql-ccache/shib-remote-mysql-ccache.cpp
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/shib-remote-mysql-ccache.cpp	2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,851 @@
-+/*
-+ *  Copyright 2001-2005 Internet2
-+ * 
-+ * Licensed under the Apache License, Version 2.0 (the "License");
-+ * you may not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ *     http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+/*
-+ * shib-mysql-ccache.cpp: Shibboleth Credential Cache using MySQL.
-+ *
-+ * Created by:	Derek Atkins <derek at ihtfp.com>
-+ *
-+ * $Id: shib-mysql-ccache.cpp,v 1.28 2005/07/18 01:00:09 cantor Exp $
-+ */
-+
-+/* This file is loosely based off the Shibboleth Credential Cache.
-+ * This plug-in is designed as a two-layer cache.  Layer 1, the
-+ * long-term cache, stores data in a MySQL embedded database.
-+ *
-+ * Short-term data is cached in memory as SAML objects in the layer 2
-+ * cache.
-+ */
-+
-+// eventually we might be able to support autoconf via cygwin...
-+#if defined (_MSC_VER) || defined(__BORLANDC__)
-+# include "config_win32.h"
-+#else
-+# include "config.h"
-+#endif
-+
-+#ifdef WIN32
-+# define SHIBMYSQL_EXPORTS __declspec(dllexport)
-+#else
-+# define SHIBMYSQL_EXPORTS
-+#endif
-+
-+#ifdef HAVE_UNISTD_H
-+# include <unistd.h>
-+#endif
-+
-+#include <shib-target/shib-target.h>
-+#include <shib/shib-threads.h>
-+#include <log4cpp/Category.hh>
-+
-+#include <sstream>
-+#include <stdexcept>
-+
-+#include <mysql.h>
-+
-+// wanted to use MySQL codes for this, but can't seem to get back a 145
-+#define isCorrupt(s) strstr(s,"(errno: 145)")
-+
-+#ifdef HAVE_LIBDMALLOCXX
-+#include <dmalloc.h>
-+#endif
-+
-+using namespace std;
-+using namespace saml;
-+using namespace shibboleth;
-+using namespace shibtarget;
-+using namespace log4cpp;
-+
-+#define _DEBUG 1
-+
-+static const XMLCh Argument[] =
-+{ chLatin_A, chLatin_r, chLatin_g, chLatin_u, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chNull };
-+static const XMLCh cleanupInterval[] =
-+{ chLatin_c, chLatin_l, chLatin_e, chLatin_a, chLatin_n, chLatin_u, chLatin_p,
-+  chLatin_I, chLatin_n, chLatin_t, chLatin_e, chLatin_r, chLatin_v, chLatin_a, chLatin_l, chNull
-+};
-+static const XMLCh cacheTimeout[] =
-+{ chLatin_c, chLatin_a, chLatin_c, chLatin_h, chLatin_e, chLatin_T, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull };
-+static const XMLCh mysqlTimeout[] =
-+{ chLatin_m, chLatin_y, chLatin_s, chLatin_q, chLatin_l, chLatin_T, chLatin_i, chLatin_m, chLatin_e, chLatin_o, chLatin_u, chLatin_t, chNull };
-+static const XMLCh storeAttributes[] =
-+{ chLatin_s, chLatin_t, chLatin_o, chLatin_r, chLatin_e, chLatin_A, chLatin_t, chLatin_t, chLatin_r, chLatin_i, chLatin_b, chLatin_u, chLatin_t, chLatin_e, chLatin_s, chNull };
-+
-+static const XMLCh db_group[] = { chLatin_g, chLatin_r, chLatin_o, chLatin_u, chLatin_p, chNull };
-+static const XMLCh db_user[] = { chLatin_u, chLatin_s, chLatin_e, chLatin_r, chNull };
-+static const XMLCh db_host[] = { chLatin_h, chLatin_o, chLatin_s, chLatin_t, chNull };
-+static const XMLCh db_db[] = { chLatin_d, chLatin_b, chNull };
-+static const XMLCh db_port[] = { chLatin_p, chLatin_o, chLatin_r, chLatin_t, chNull };
-+static const XMLCh db_password[] = { chLatin_p, chLatin_a, chLatin_s, chLatin_s, chLatin_w, chLatin_o, chLatin_r, chLatin_d, chNull };
-+
-+class MySQLRemoteBase
-+{
-+public:
-+  MySQLRemoteBase(const DOMElement* e);
-+  virtual ~MySQLRemoteBase();
-+
-+  void thread_init();
-+  void thread_end() {}
-+
-+  MYSQL* getMYSQL() const;
-+
-+  log4cpp::Category* log;
-+
-+protected:
-+  ThreadKey* m_mysql;
-+  const DOMElement* m_root; // can only use this during initialization
-+
-+  bool initialized;
-+
-+  char *group;
-+  char *user, *host, *password, *db;
-+  int port;
-+
-+};
-+
-+// Forward declarations
-+static void mysqlInit(const DOMElement* e, Category& log);
-+
-+extern "C" void shib_remote_mysql_destroy_handle(void* data)
-+{
-+  MYSQL* mysql = (MYSQL*) data;
-+  if (mysql) mysql_close(mysql);
-+}
-+
-+MySQLRemoteBase::MySQLRemoteBase(const DOMElement* e) : m_root(e)
-+{
-+#ifdef _DEBUG
-+  saml::NDC ndc("MySQLRemoteBase");
-+#endif
-+  log = &(Category::getInstance("shibmysql.MySQLRemoteBase"));
-+
-+  m_mysql = ThreadKey::create(&shib_remote_mysql_destroy_handle);
-+
-+  initialized = false;
-+
-+  if ((group = XMLString::transcode(e->getAttribute(db_group)))) {
-+    if (!group || !*group)
-+      group = NULL;
-+  }
-+      
-+  if ((user = XMLString::transcode(e->getAttribute(db_user)))) {
-+    if (!user || !*user)
-+      user = NULL;
-+  }
-+      
-+  if ((host = XMLString::transcode(e->getAttribute(db_host)))) {
-+    if (!host || !*host)
-+      host = NULL;
-+  }
-+      
-+  if ((db = XMLString::transcode(e->getAttribute(db_db)))) {
-+    if (!db || !*db)
-+      db = NULL;
-+  }
-+      
-+  if ((password = XMLString::transcode(e->getAttribute(db_password)))) {
-+    if (!password || !*password)
-+      password = NULL;
-+  }
-+      
-+  char *portStr;
-+  if ((portStr = XMLString::transcode(e->getAttribute(db_port)))) {
-+    if (!portStr || !*portStr) {
-+      port = 0;
-+    } else {
-+      port = strtol(portStr, 0, 10);
-+    }
-+    XMLString::release(&portStr);
-+  }
-+    
-+  if (group == NULL && (user == NULL || host == NULL)) {
-+    log->crit("user and host, or group must be specified for Remote MySQL cache");
-+    throw SAMLException("MySQLRemoteBase::MySQLRemoteBase: missing configuration attributes");
-+  }
-+  
-+  mysqlInit(e,*log);
-+  thread_init();
-+  initialized = true;
-+}
-+
-+MySQLRemoteBase::~MySQLRemoteBase()
-+{
-+  thread_end();
-+
-+  delete m_mysql;
-+  if (group)
-+    XMLString::release(&group);
-+  if (user)
-+    XMLString::release(&user);
-+  if (host)
-+    XMLString::release(&host);
-+  if (db)
-+    XMLString::release(&host);
-+  if (password)
-+    XMLString::release(&db);
-+}
-+
-+MYSQL* MySQLRemoteBase::getMYSQL() const
-+{
-+  return (MYSQL*)m_mysql->getData();
-+}
-+
-+void MySQLRemoteBase::thread_init()
-+{
-+#ifdef _DEBUG
-+  saml::NDC ndc("thread_init");
-+#endif
-+
-+  // Connect to the database
-+  MYSQL* mysql = mysql_init(NULL);
-+  if (!mysql) {
-+    log->error("mysql_init failed");
-+    mysql_close(mysql);
-+    throw SAMLException("MySQLRemoteBase::thread_init(): mysql_init() failed");
-+  }
-+
-+  my_bool reconnect = 1;
-+#if MYSQL_VERSION_ID < 50000
-+  mysql->reconnect = 1;
-+#else
-+  mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
-+#endif
-+  if (group)
-+    mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, group);
-+
-+  if (!mysql_real_connect(mysql, host, user, password, db, port, NULL, 0)) {
-+    log->crit("mysql_real_connect failed: %s", mysql_error(mysql));
-+    mysql_close(mysql);
-+    throw SAMLException("MySQLRemoteBase::thread_init(): mysql_real_connect() failed");
-+  }
-+
-+  // We're all set.. Save off the handle for this thread.
-+  log->info("thread_init() completed");
-+  m_mysql->setData(mysql);
-+}
-+
-+static void mysqlInit(const DOMElement* e, Category& log)
-+{
-+  static bool done = false;
-+  if (done) {
-+    log.info("MySQL remote connection already initialized");
-+    return;
-+  }
-+  log.info("initializing MySQL remote connection");
-+
-+  // Setup the argument array
-+  vector<string> arg_array;
-+  arg_array.push_back("shibboleth");
-+
-+  // grab any MySQL parameters from the config file
-+  //  e=saml::XML::getFirstChildElement(e,shibtarget::XML::SHIBTARGET_NS,Argument);
-+  //  while (e) {
-+  //      auto_ptr_char arg(e->getFirstChild()->getNodeValue());
-+  //      if (arg.get())
-+  //          arg_array.push_back(arg.get());
-+  //      e=saml::XML::getNextSiblingElement(e,shibtarget::XML::SHIBTARGET_NS,Argument);
-+  //  }
-+
-+  // Compute the argument array
-+  int arg_count = arg_array.size();
-+  const char** args=new const char*[arg_count];
-+  for (int i = 0; i < arg_count; i++)
-+    args[i] = arg_array[i].c_str();
-+
-+  // Initialize MySQL with the arguments
-+  mysql_library_init(arg_count, (char **)args, NULL);
-+
-+  delete[] args;
-+  done = true;
-+}  
-+
-+class ShibMySQLCCache;
-+class ShibMySQLCCacheEntry : public ISessionCacheEntry
-+{
-+public:
-+  ShibMySQLCCacheEntry(const char* key, ISessionCacheEntry* entry, ShibMySQLCCache* cache)
-+    : m_cacheEntry(entry), m_key(key), m_cache(cache), m_responseId(NULL) {}
-+  ~ShibMySQLCCacheEntry() {if (m_responseId) XMLString::release(&m_responseId);}
-+
-+  virtual void lock() {}
-+  virtual void unlock() { m_cacheEntry->unlock(); delete this; }
-+  virtual bool isValid(time_t lifetime, time_t timeout) const;
-+  virtual const char* getClientAddress() const { return m_cacheEntry->getClientAddress(); }
-+  virtual ShibProfile getProfile() const { return m_cacheEntry->getProfile(); }
-+  virtual const char* getProviderId() const { return m_cacheEntry->getProviderId(); }
-+  virtual const SAMLAuthenticationStatement* getAuthnStatement() const { return m_cacheEntry->getAuthnStatement(); }
-+  virtual CachedResponse getResponse();
-+
-+private:
-+  bool touch() const;
-+
-+  ISessionCacheEntry* m_cacheEntry;
-+  string m_key;
-+  ShibMySQLCCache* m_cache;
-+  XMLCh* m_responseId;
-+};
-+
-+class ShibMySQLCCache : public MySQLRemoteBase, virtual public ISessionCache
-+{
-+public:
-+  ShibMySQLCCache(const DOMElement* e);
-+  virtual ~ShibMySQLCCache();
-+
-+  virtual void thread_init() {MySQLRemoteBase::thread_init();}
-+  virtual void thread_end() {MySQLRemoteBase::thread_end();}
-+
-+  virtual string generateKey() const {return m_cache->generateKey();}
-+  virtual ISessionCacheEntry* find(const char* key, const IApplication* application);
-+  virtual void insert(
-+    const char* key,
-+    const IApplication* application,
-+    const char* client_addr,
-+    ShibProfile profile,
-+    const char* providerId,
-+    saml::SAMLAuthenticationStatement* s,
-+    saml::SAMLResponse* r=NULL,
-+    const shibboleth::IRoleDescriptor* source=NULL,
-+    time_t created=0,
-+    time_t accessed=0
-+    );
-+  virtual void remove(const char* key);
-+
-+  virtual void cleanup();
-+
-+  bool m_storeAttributes;
-+
-+private:
-+  ISessionCache* m_cache;
-+  CondWait* shutdown_wait;
-+  bool shutdown;
-+  Thread* cleanup_thread;
-+
-+  static void* cleanup_fcn(void*); // XXX Assumed an ShibMySQLCCache
-+};
-+
-+ShibMySQLCCache::ShibMySQLCCache(const DOMElement* e) : MySQLRemoteBase(e), m_storeAttributes(false)
-+{
-+#ifdef _DEBUG
-+  saml::NDC ndc("ShibMySQLCCache");
-+#endif
-+
-+  log = &(Category::getInstance("shibmysql.SessionCache"));
-+  log->info("ShibMySQLCCache constructor started");
-+
-+  shutdown_wait = CondWait::create();
-+  shutdown = false;
-+
-+  m_cache = dynamic_cast<ISessionCache*>(
-+      SAMLConfig::getConfig().getPlugMgr().newPlugin(
-+        "edu.internet2.middleware.shibboleth.sp.provider.MemorySessionCacheProvider", e
-+        )
-+    );
-+    
-+  log->info("ShibMySQLCCache constructor A");
-+  // Load our configuration details...
-+  const XMLCh* tag=m_root->getAttributeNS(NULL,storeAttributes);
-+  if (tag && *tag && (*tag==chLatin_t || *tag==chDigit_1))
-+    m_storeAttributes=true;
-+
-+  // Initialize the cleanup thread
-+  cleanup_thread = Thread::create(&cleanup_fcn, (void*)this);
-+  log->info("ShibMySQLCCache constructor ended");
-+}
-+
-+ShibMySQLCCache::~ShibMySQLCCache()
-+{
-+  shutdown = true;
-+  shutdown_wait->signal();
-+  cleanup_thread->join(NULL);
-+
-+  delete m_cache;
-+}
-+
-+ISessionCacheEntry* ShibMySQLCCache::find(const char* key, const IApplication* application)
-+{
-+#ifdef _DEBUG
-+  saml::NDC ndc("find");
-+#endif
-+
-+  ISessionCacheEntry* res = m_cache->find(key, application);
-+  if (!res) {
-+
-+    log->debug("Looking in database...");
-+
-+    // nothing cached; see if this exists in the database
-+    string q = string("SELECT application_id,UNIX_TIMESTAMP(ctime),UNIX_TIMESTAMP(atime),addr,profile,provider,statement,response FROM state WHERE cookie='") + key + "' LIMIT 1";
-+
-+    MYSQL* mysql = getMYSQL();
-+    if (mysql_query(mysql, q.c_str())) {
-+      const char* err=mysql_error(mysql);
-+      log->error("Error searching for %s: %s", key, err);
-+    }
-+
-+    MYSQL_RES* rows = mysql_store_result(mysql);
-+
-+    // Nope, doesn't exist.
-+    if (!rows)
-+      return NULL;
-+
-+    // Make sure we got 1 and only 1 rows.
-+    if (mysql_num_rows(rows) != 1) {
-+      log->error("Select returned wrong number of rows: %d", mysql_num_rows(rows));
-+      mysql_free_result(rows);
-+      return NULL;
-+    }
-+
-+    log->debug("Match found.  Parsing...");
-+    
-+    /* Columns in query:
-+        0: application_id
-+        1: ctime
-+        2: atime
-+        3: address
-+        4: profile
-+        5: provider
-+        6: statement
-+        7: response
-+     */
-+
-+    // Pull apart the row and process the results
-+    MYSQL_ROW row = mysql_fetch_row(rows);
-+    if (strcmp(application->getId(),row[0])) {
-+        log->crit("An application (%s) attempted to access another application's (%s) session!", application->getId(), row[0]);
-+        mysql_free_result(rows);
-+        return NULL;
-+    }
-+
-+    Metadata m(application->getMetadataProviders());
-+    const IEntityDescriptor* provider=m.lookup(row[5]);
-+    if (!provider) {
-+        log->crit("no metadata found for identity provider (%s) responsible for the session.", row[5]);
-+        mysql_free_result(rows);
-+        return NULL;
-+    }
-+
-+    SAMLAuthenticationStatement* s=NULL;
-+    SAMLResponse* r=NULL;
-+    ShibProfile profile=static_cast<ShibProfile>(atoi(row[4]));
-+    const IRoleDescriptor* role=NULL;
-+    if (profile==SAML11_POST || profile==SAML11_ARTIFACT)
-+        role=provider->getIDPSSODescriptor(saml::XML::SAML11_PROTOCOL_ENUM);
-+    else if (profile==SAML10_POST || profile==SAML10_ARTIFACT)
-+        role=provider->getIDPSSODescriptor(saml::XML::SAML10_PROTOCOL_ENUM);
-+    if (!role) {
-+        log->crit(
-+            "no matching IdP role for profile (%s) found for identity provider (%s) responsible for the session.", row[4], row[5]
-+            );
-+        mysql_free_result(rows);
-+        return NULL;
-+    }
-+
-+    // Try to parse the SAML data
-+    try {
-+        istringstream istr(row[6]);
-+        s = new SAMLAuthenticationStatement(istr);
-+        if (row[7]) {
-+            istringstream istr2(row[7]);
-+            r = new SAMLResponse(istr2);
-+        }
-+    }
-+    catch (SAMLException& e) {
-+        log->error(string("caught SAML exception while loading objects from SQL record: ") + e.what());
-+        delete s;
-+        delete r;
-+        mysql_free_result(rows);
-+        return NULL;
-+    }
-+#ifndef _DEBUG
-+    catch (...) {
-+        log->error("caught unknown exception while loading objects from SQL record");
-+        delete s;
-+        delete r;
-+        mysql_free_result(rows);
-+        return NULL;
-+    }
-+#endif
-+
-+    // Insert it into the memory cache
-+    m_cache->insert(
-+        key,
-+        application,
-+        row[3],
-+        profile,
-+        row[5],
-+        s,
-+        r,
-+        role,
-+        atoi(row[1]),
-+        atoi(row[2])
-+        );
-+
-+    // Free the results, and then re-run the 'find' query
-+    mysql_free_result(rows);
-+    res = m_cache->find(key,application);
-+    if (!res)
-+      return NULL;
-+  }
-+
-+  return new ShibMySQLCCacheEntry(key, res, this);
-+}
-+
-+void ShibMySQLCCache::insert(
-+    const char* key,
-+    const IApplication* application,
-+    const char* client_addr,
-+    ShibProfile profile,
-+    const char* providerId,
-+    saml::SAMLAuthenticationStatement* s,
-+    saml::SAMLResponse* r,
-+    const shibboleth::IRoleDescriptor* source,
-+    time_t created,
-+    time_t accessed
-+    )
-+{
-+#ifdef _DEBUG
-+  saml::NDC ndc("insert");
-+#endif
-+  
-+  ostringstream q;
-+  q << "INSERT INTO state VALUES('" << key << "','" << application->getId() << "',";
-+  if (created==0)
-+    q << "NOW(),";
-+  else
-+    q << "FROM_UNIXTIME(" << created << "),";
-+  if (accessed==0)
-+    q << "NOW(),'";
-+  else
-+    q << "FROM_UNIXTIME(" << accessed << "),'";
-+  q << client_addr << "'," << profile << ",'" << providerId << "',";
-+  if (m_storeAttributes && r) {
-+    auto_ptr_char id(r->getId());
-+    q << "'" << id.get() << "','" << *r << "','";
-+  }
-+  else
-+    q << "null,null,'";
-+  q << *s << "')";
-+
-+  log->debug("Query: %s", q.str().c_str());
-+
-+  // then add it to the database
-+  MYSQL* mysql = getMYSQL();
-+  if (mysql_query(mysql, q.str().c_str())) {
-+    const char* err=mysql_error(mysql);
-+    log->error("Error inserting %s: %s", key, err);
-+        throw SAMLException("ShibMySQLCCache::insert(): insertion failed");
-+  }
-+
-+  // Add it to the memory cache
-+  m_cache->insert(key, application, client_addr, profile, providerId, s, r, source, created, accessed);
-+}
-+
-+void ShibMySQLCCache::remove(const char* key)
-+{
-+#ifdef _DEBUG
-+  saml::NDC ndc("remove");
-+#endif
-+
-+  // Remove the cached version
-+  m_cache->remove(key);
-+
-+  // Remove from the database
-+  string q = string("DELETE FROM state WHERE cookie='") + key + "'";
-+  MYSQL* mysql = getMYSQL();
-+  if (mysql_query(mysql, q.c_str())) {
-+    const char* err=mysql_error(mysql);
-+    log->error("Error deleting entry %s: %s", key, err);
-+  }
-+}
-+
-+void ShibMySQLCCache::cleanup()
-+{
-+#ifdef _DEBUG
-+  saml::NDC ndc("cleanup");
-+#endif
-+
-+  Mutex* mutex = Mutex::create();
-+  MySQLRemoteBase::thread_init();
-+
-+  int rerun_timer = 0;
-+  int timeout_life = 0;
-+
-+  // Load our configuration details...
-+  const XMLCh* tag=m_root->getAttributeNS(NULL,cleanupInterval);
-+  if (tag && *tag)
-+    rerun_timer = XMLString::parseInt(tag);
-+
-+  // search for 'mysql-cache-timeout' and then the regular cache timeout
-+  tag=m_root->getAttributeNS(NULL,mysqlTimeout);
-+  if (tag && *tag)
-+    timeout_life = XMLString::parseInt(tag);
-+  else {
-+      tag=m_root->getAttributeNS(NULL,cacheTimeout);
-+      if (tag && *tag)
-+        timeout_life = XMLString::parseInt(tag);
-+  }
-+  
-+  if (rerun_timer <= 0)
-+    rerun_timer = 300;		// rerun every 5 minutes
-+
-+  if (timeout_life <= 0)
-+    timeout_life = 28800;	// timeout after 8 hours
-+
-+  mutex->lock();
-+
-+  MYSQL* mysql = getMYSQL();
-+
-+  while (shutdown == false) {
-+    shutdown_wait->timedwait(mutex, rerun_timer);
-+
-+    if (shutdown == true)
-+      break;
-+
-+    // Find all the entries in the database that haven't been used
-+    // recently In particular, find all entries that have not been
-+    // accessed in 'timeout_life' seconds.
-+    ostringstream q;
-+    q << "SELECT cookie FROM state WHERE " <<
-+      "UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(atime) >= " << timeout_life;
-+
-+    if (mysql_query(mysql, q.str().c_str())) {
-+      const char* err=mysql_error(mysql);
-+      log->error("Error searching for old items: %s", err);
-+    }
-+
-+    MYSQL_RES* rows = mysql_store_result(mysql);
-+    if (!rows)
-+      continue;
-+
-+    if (mysql_num_fields(rows) != 1) {
-+      log->error("Wrong number of columns, 1 != %d", mysql_num_fields(rows));
-+      mysql_free_result(rows);
-+      continue;
-+    }
-+
-+    // For each row, remove the entry from the database.
-+    MYSQL_ROW row;
-+    while ((row = mysql_fetch_row(rows)) != NULL)
-+      remove(row[0]);
-+
-+    mysql_free_result(rows);
-+  }
-+
-+  log->info("cleanup thread exiting...");
-+
-+  mutex->unlock();
-+  delete mutex;
-+  MySQLRemoteBase::thread_end();
-+  Thread::exit(NULL);
-+}
-+
-+void* ShibMySQLCCache::cleanup_fcn(void* cache_p)
-+{
-+  ShibMySQLCCache* cache = (ShibMySQLCCache*)cache_p;
-+
-+  // First, let's block all signals
-+  Thread::mask_all_signals();
-+
-+  // Now run the cleanup process.
-+  cache->cleanup();
-+  return NULL;
-+}
-+
-+/*************************************************************************
-+ * The CCacheEntry here is mostly a wrapper around the "memory"
-+ * cacheentry provided by shibboleth.  The only difference is that we
-+ * intercept isSessionValid() so that we can "touch()" the
-+ * database if the session is still valid and getResponse() so we can
-+ * store the data if we need to.
-+ */
-+
-+bool ShibMySQLCCacheEntry::isValid(time_t lifetime, time_t timeout) const
-+{
-+  bool res = m_cacheEntry->isValid(lifetime, timeout);
-+  if (res == true)
-+    res = touch();
-+  return res;
-+}
-+
-+bool ShibMySQLCCacheEntry::touch() const
-+{
-+  string q=string("UPDATE state SET atime=NOW() WHERE cookie='") + m_key + "'";
-+
-+  MYSQL* mysql = m_cache->getMYSQL();
-+  if (mysql_query(mysql, q.c_str())) {
-+    m_cache->log->info("Error updating timestamp on %s: %s", m_key.c_str(), mysql_error(mysql));
-+    return false;
-+  }
-+  return true;
-+}
-+
-+ISessionCacheEntry::CachedResponse ShibMySQLCCacheEntry::getResponse()
-+{
-+    // Let the memory cache do the work first.
-+    // If we're hands off, just pass it back.
-+    if (!m_cache->m_storeAttributes)
-+        return m_cacheEntry->getResponse();
-+    
-+    CachedResponse r=m_cacheEntry->getResponse();
-+    if (r.empty()) return r;
-+    
-+    // Load the key from state if needed.
-+    if (!m_responseId) {
-+        string qselect=string("SELECT response_id from state WHERE cookie='") + m_key + "' LIMIT 1";
-+        MYSQL* mysql = m_cache->getMYSQL();
-+        if (mysql_query(mysql, qselect.c_str())) {
-+            const char* err=mysql_error(mysql);
-+            m_cache->log->error("error accessing response ID for %s: %s", m_key.c_str(), err);
-+        }
-+        MYSQL_RES* rows = mysql_store_result(mysql);
-+    
-+        // Make sure we got 1 and only 1 row.
-+        if (!rows || mysql_num_rows(rows) != 1) {
-+            m_cache->log->error("select returned wrong number of rows");
-+            if (rows) mysql_free_result(rows);
-+            return r;
-+        }
-+        
-+        MYSQL_ROW row=mysql_fetch_row(rows);
-+        if (row)
-+            m_responseId=XMLString::transcode(row[0]);
-+        mysql_free_result(rows);
-+    }
-+    
-+    // Compare it with what we have now.
-+    if (m_responseId && !XMLString::compareString(m_responseId,r.unfiltered->getId()))
-+        return r;
-+    
-+    // No match, so we need to update our copy.
-+    if (m_responseId) XMLString::release(&m_responseId);
-+    m_responseId = XMLString::replicate(r.unfiltered->getId());
-+    auto_ptr_char id(m_responseId);
-+
-+    ostringstream q;
-+    q << "UPDATE state SET response_id='" << id.get() << "',response='" << *r.unfiltered << "' WHERE cookie='" << m_key << "'";
-+    m_cache->log->debug("Query: %s", q.str().c_str());
-+
-+    MYSQL* mysql = m_cache->getMYSQL();
-+    if (mysql_query(mysql, q.str().c_str())) {
-+        const char* err=mysql_error(mysql);
-+        m_cache->log->error("Error updating response for %s: %s", m_key.c_str(), err);
-+    }
-+    
-+    return r;
-+}
-+
-+class MySQLReplayCache : public MySQLRemoteBase, virtual public IReplayCache
-+{
-+public:
-+  MySQLReplayCache(const DOMElement* e);
-+  virtual ~MySQLReplayCache() {}
-+
-+  void thread_init() {MySQLRemoteBase::thread_init();}
-+  void thread_end() {MySQLRemoteBase::thread_end();}
-+
-+  bool check(const XMLCh* str, time_t expires) {auto_ptr_XMLCh temp(str); return check(temp.get(),expires);}
-+  bool check(const char* str, time_t expires);
-+};
-+
-+MySQLReplayCache::MySQLReplayCache(const DOMElement* e) : MySQLRemoteBase(e)
-+{
-+#ifdef _DEBUG
-+  saml::NDC ndc("MySQLReplayCache");
-+#endif
-+
-+  log = &(Category::getInstance("shibmysql.ReplayCache"));
-+}
-+
-+bool MySQLReplayCache::check(const char* str, time_t expires)
-+{
-+#ifdef _DEBUG
-+    saml::NDC ndc("check");
-+#endif
-+  
-+    // Remove expired entries
-+    string q = string("DELETE FROM replay WHERE expires < NOW()");
-+    MYSQL* mysql = getMYSQL();
-+    if (mysql_query(mysql, q.c_str())) {
-+        const char* err=mysql_error(mysql);
-+        log->error("Error deleting expired entries: %s", err);
-+    }
-+  
-+    string q2 = string("SELECT id FROM replay WHERE id='") + str + "'";
-+    if (mysql_query(mysql, q2.c_str())) {
-+        const char* err=mysql_error(mysql);
-+        log->error("Error searching for %s: %s", str, err);
-+            throw SAMLException("Replay cache failed, please inform application support staff.");
-+    }
-+
-+    // Did we find it?
-+    MYSQL_RES* rows = mysql_store_result(mysql);
-+    if (rows && mysql_num_rows(rows)>0) {
-+      mysql_free_result(rows);
-+      return false;
-+    }
-+
-+    ostringstream q3;
-+    q3 << "INSERT INTO replay VALUES('" << str << "'," << "FROM_UNIXTIME(" << expires << "))";
-+
-+    // then add it to the database
-+    if (mysql_query(mysql, q3.str().c_str())) {
-+        const char* err=mysql_error(mysql);
-+        log->error("Error inserting %s: %s", str, err);
-+            throw SAMLException("Replay cache failed, please inform application support staff.");
-+    }
-+    
-+    return true;
-+}
-+
-+/*************************************************************************
-+ * The registration functions here...
-+ */
-+
-+IPlugIn* new_mysql_ccache(const DOMElement* e)
-+{
-+  std::cerr << "returning new ShibMySQLCCache object" << std::endl << std::flush;
-+  ShibMySQLCCache* cc = new ShibMySQLCCache(e);
-+  if (cc) {
-+    std::cerr << "Got a new cache" << std::endl;
-+  } else {
-+    std::cerr << "FAILED to get a new cache" << std::endl;
-+  }
-+  return new ShibMySQLCCache(e);
-+}
-+
-+IPlugIn* new_mysql_replay(const DOMElement* e)
-+{
-+  std::cerr << "returning new MySQLReplayCache object" << std::endl << std::flush;
-+  return new MySQLReplayCache(e);
-+}
-+
-+#define REPLAYPLUGINTYPE "edu.internet2.middleware.shibboleth.sp.provider.MySQLRemoteReplayCacheProvider"
-+#define SESSIONPLUGINTYPE "edu.internet2.middleware.shibboleth.sp.provider.MySQLRemoteSessionCacheProvider"
-+
-+extern "C" int SHIBMYSQL_EXPORTS saml_extension_init(void*)
-+{
-+  // register this ccache type
-+  SAMLConfig::getConfig().getPlugMgr().regFactory(REPLAYPLUGINTYPE, &new_mysql_replay);
-+  SAMLConfig::getConfig().getPlugMgr().regFactory(SESSIONPLUGINTYPE, &new_mysql_ccache);
-+  return 0;
-+}
-+
-+extern "C" void SHIBMYSQL_EXPORTS saml_extension_term()
-+{
-+  // Shutdown MySQL
-+  mysql_library_end();
-+  SAMLConfig::getConfig().getPlugMgr().unregFactory(REPLAYPLUGINTYPE);
-+  SAMLConfig::getConfig().getPlugMgr().unregFactory(SESSIONPLUGINTYPE);
-+}
-Index: shibboleth-sp/shib-remote-mysql-ccache/shib_remote_mysql_ccache.dsp
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/shib_remote_mysql_ccache.dsp	2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,103 @@
-+# Microsoft Developer Studio Project File - Name="shib_mysql_ccache" - Package Owner=<4>
-+# Microsoft Developer Studio Generated Build File, Format Version 6.00
-+# ** DO NOT EDIT **
-+
-+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-+
-+CFG=shib_mysql_ccache - Win32 Debug
-+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-+!MESSAGE use the Export Makefile command and run
-+!MESSAGE 
-+!MESSAGE NMAKE /f "shib_mysql_ccache.mak".
-+!MESSAGE 
-+!MESSAGE You can specify a configuration when running NMAKE
-+!MESSAGE by defining the macro CFG on the command line. For example:
-+!MESSAGE 
-+!MESSAGE NMAKE /f "shib_mysql_ccache.mak" CFG="shib_mysql_ccache - Win32 Debug"
-+!MESSAGE 
-+!MESSAGE Possible choices for configuration are:
-+!MESSAGE 
-+!MESSAGE "shib_mysql_ccache - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-+!MESSAGE "shib_mysql_ccache - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-+!MESSAGE 
-+
-+# Begin Project
-+# PROP AllowPerConfigDependencies 0
-+# PROP Scc_ProjName ""
-+# PROP Scc_LocalPath ""
-+CPP=cl.exe
-+MTL=midl.exe
-+RSC=rc.exe
-+
-+!IF  "$(CFG)" == "shib_mysql_ccache - Win32 Release"
-+
-+# PROP BASE Use_MFC 0
-+# PROP BASE Use_Debug_Libraries 0
-+# PROP BASE Output_Dir "Release"
-+# PROP BASE Intermediate_Dir "Release"
-+# PROP BASE Target_Dir ""
-+# PROP Use_MFC 0
-+# PROP Use_Debug_Libraries 0
-+# PROP Output_Dir "Release"
-+# PROP Intermediate_Dir "Release"
-+# PROP Ignore_Export_Lib 0
-+# PROP Target_Dir ""
-+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SHIB_MYSQL_CCACHE_EXPORTS" /YX /FD /c
-+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I ".." /I "..\..\..\opensaml\c" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-+# ADD BASE RSC /l 0x409 /d "NDEBUG"
-+# ADD RSC /l 0x409 /d "NDEBUG"
-+BSC32=bscmake.exe
-+# ADD BASE BSC32 /nologo
-+# ADD BSC32 /nologo
-+LINK32=link.exe
-+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-+# ADD LINK32 log4cpp.lib libmysqld.lib xerces-c_2.lib saml_5.lib /nologo /dll /machine:I386 /out:"Release/shib-mysql-ccache.so" /libpath:"..\..\..\opensaml\c\saml\Release" /libpath:"\mysql-4.1.12\lib_release"
-+
-+!ELSEIF  "$(CFG)" == "shib_mysql_ccache - Win32 Debug"
-+
-+# PROP BASE Use_MFC 0
-+# PROP BASE Use_Debug_Libraries 1
-+# PROP BASE Output_Dir "Debug"
-+# PROP BASE Intermediate_Dir "Debug"
-+# PROP BASE Target_Dir ""
-+# PROP Use_MFC 0
-+# PROP Use_Debug_Libraries 1
-+# PROP Output_Dir "Debug"
-+# PROP Intermediate_Dir "Debug"
-+# PROP Ignore_Export_Lib 0
-+# PROP Target_Dir ""
-+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SHIB_MYSQL_CCACHE_EXPORTS" /YX /FD /GZ /c
-+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I ".." /I "..\..\..\opensaml\c" /D "_WINDOWS" /D "WIN32" /D "_DEBUG" /D "_MBCS" /FR /YX /FD /GZ /c
-+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-+# ADD BASE RSC /l 0x409 /d "_DEBUG"
-+# ADD RSC /l 0x409 /d "_DEBUG"
-+BSC32=bscmake.exe
-+# ADD BASE BSC32 /nologo
-+# ADD BSC32 /nologo
-+LINK32=link.exe
-+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-+# ADD LINK32 log4cppD.lib libmysqld.lib xerces-c_2D.lib saml_5D.lib /nologo /dll /debug /machine:I386 /out:"Debug/shib-mysql-ccache.so" /pdbtype:sept /libpath:"..\..\..\opensaml\c\saml\Debug" /libpath:"\mysql-4.1.12\lib_debug"
-+
-+!ENDIF 
-+
-+# Begin Target
-+
-+# Name "shib_mysql_ccache - Win32 Release"
-+# Name "shib_mysql_ccache - Win32 Debug"
-+# Begin Source File
-+
-+SOURCE=.\resource.h
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=".\shib-mysql-ccache.cpp"
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=.\shib_mysql_ccache.rc
-+# End Source File
-+# End Target
-+# End Project
-Index: shibboleth-sp/shib-remote-mysql-ccache/shib_remote_mysql_ccache.rc
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ shibboleth-sp/shib-remote-mysql-ccache/shib_remote_mysql_ccache.rc	2006-09-29 23:33:28.000000000 -0700
-@@ -0,0 +1,109 @@
-+//Microsoft Developer Studio generated resource script.
-+//
-+#include "resource.h"
-+
-+#define APSTUDIO_READONLY_SYMBOLS
-+/////////////////////////////////////////////////////////////////////////////
-+//
-+// Generated from the TEXTINCLUDE 2 resource.
-+//
-+#include "afxres.h"
-+
-+/////////////////////////////////////////////////////////////////////////////
-+#undef APSTUDIO_READONLY_SYMBOLS
-+
-+/////////////////////////////////////////////////////////////////////////////
-+// English (U.S.) resources
-+
-+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-+#ifdef _WIN32
-+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-+#pragma code_page(1252)
-+#endif //_WIN32
-+
-+#ifndef _MAC
-+/////////////////////////////////////////////////////////////////////////////
-+//
-+// Version
-+//
-+
-+VS_VERSION_INFO VERSIONINFO
-+ FILEVERSION 1,3,0,0
-+ PRODUCTVERSION 1,3,0,0
-+ FILEFLAGSMASK 0x3fL
-+#ifdef _DEBUG
-+ FILEFLAGS 0x1L
-+#else
-+ FILEFLAGS 0x0L
-+#endif
-+ FILEOS 0x40004L
-+ FILETYPE 0x2L
-+ FILESUBTYPE 0x0L
-+BEGIN
-+    BLOCK "StringFileInfo"
-+    BEGIN
-+        BLOCK "040904b0"
-+        BEGIN
-+            VALUE "Comments", "\0"
-+            VALUE "CompanyName", "Internet2\0"
-+            VALUE "FileDescription", "Shibboleth MySQL Cache Plugin\0"
-+            VALUE "FileVersion", "1, 3, 0, 0\0"
-+            VALUE "InternalName", "shib-mysql-ccache\0"
-+            VALUE "LegalCopyright", "Copyright © 2005 Internet2\0"
-+            VALUE "LegalTrademarks", "\0"
-+            VALUE "OriginalFilename", "shib-mysql-ccache.so\0"
-+            VALUE "PrivateBuild", "\0"
-+            VALUE "ProductName", "Shibboleth 1.3\0"
-+            VALUE "ProductVersion", "1, 3, 0, 0\0"
-+            VALUE "SpecialBuild", "\0"
-+        END
-+    END
-+    BLOCK "VarFileInfo"
-+    BEGIN
-+        VALUE "Translation", 0x409, 1200
-+    END
-+END
-+
-+#endif    // !_MAC
-+
-+
-+#ifdef APSTUDIO_INVOKED
-+/////////////////////////////////////////////////////////////////////////////
-+//
-+// TEXTINCLUDE
-+//
-+
-+1 TEXTINCLUDE DISCARDABLE 
-+BEGIN
-+    "resource.h\0"
-+END
-+
-+2 TEXTINCLUDE DISCARDABLE 
-+BEGIN
-+    "#include ""afxres.h""\r\n"
-+    "\0"
-+END
-+
-+3 TEXTINCLUDE DISCARDABLE 
-+BEGIN
-+    "\r\n"
-+    "\0"
-+END
-+
-+#endif    // APSTUDIO_INVOKED
-+
-+#endif    // English (U.S.) resources
-+/////////////////////////////////////////////////////////////////////////////
-+
-+
-+
-+#ifndef APSTUDIO_INVOKED
-+/////////////////////////////////////////////////////////////////////////////
-+//
-+// Generated from the TEXTINCLUDE 3 resource.
-+//
-+
-+
-+/////////////////////////////////////////////////////////////////////////////
-+#endif    // not APSTUDIO_INVOKED
-+
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 76e4100..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1,6 +0,0 @@
-dfsg
-remote-mysql
-64-bit
-gcc-4.3
-log4cpp-1.0
-native-syslog

-- 
Debian packaging for the Shibboleth Apache SP



More information about the Pkg-shibboleth-devel mailing list