gssEapLocalAttrProviderInit(&minor);
#endif
#ifdef HAVE_OPENSAML
+ wpa_printf(MSG_INFO, "### gssEapAttrProvidersInitInternal(): Calling gssEapSamlAttrProvidersInit()");
major = gssEapSamlAttrProvidersInit(&minor);
- if (GSS_ERROR(major))
+ if (GSS_ERROR(major)) {
+ wpa_printf(MSG_ERROR, "### gssEapAttrProvidersInitInternal(): Error returned from gssEapSamlAttrProvidersInit; major code is %08X; minor is %08X", major, minor);
goto cleanup;
+ }
+#else
+ wpa_printf(MSG_INFO, "### gssEapAttrProvidersInitInternal(): Don't have OpenSAML; not calling gssEapSamlAttrProvidersInit()");
#endif
cleanup:
GSSEAP_ASSERT(major == GSS_S_COMPLETE);
#endif
+ wpa_printf(MSG_INFO, "### gssEapAttrProvidersInitInternal(): Setting gssEapAttrProvidersInitStatus to %08X", major);
gssEapAttrProvidersInitStatus = major;
GSSEAP_ONCE_LEAVE;
return gssEapAttrProvidersInitStatus;
}
-OM_uint32
-gssEapAttrProvidersFinalize(OM_uint32 *minor)
-{
- if (gssEapAttrProvidersInitStatus == GSS_S_COMPLETE) {
-#ifdef HAVE_SHIBRESOLVER
- gssEapLocalAttrProviderFinalize(minor);
-#endif
+
+namespace {
+
+ class finalize_class {
+ public:
+
+ finalize_class() {
+ wpa_printf(MSG_INFO, "### finalize_class::finalize_class(): Constructing");
+ }
+
+ ~finalize_class()
+ {
+ OM_uint32 minor = 0;
+
+ wpa_printf(MSG_INFO, "### ~finalize_class::~finalize_class() : initStatus=%08x", gssEapAttrProvidersInitStatus);
+
+ if (gssEapAttrProvidersInitStatus == GSS_S_COMPLETE) {
+ wpa_printf(MSG_INFO, "### ~finalize_class::~finalize_class() : really finalizing");
+
#ifdef HAVE_OPENSAML
- gssEapSamlAttrProvidersFinalize(minor);
+ gssEapSamlAttrProvidersFinalize(&minor);
#endif
- gssEapRadiusAttrProviderFinalize(minor);
-
- gssEapAttrProvidersInitStatus = GSS_S_UNAVAILABLE;
- }
+ gssEapRadiusAttrProviderFinalize(&minor);
- return GSS_S_COMPLETE;
+ gssEapAttrProvidersInitStatus = GSS_S_UNAVAILABLE;
+ }
+ }
+ } finalizer;
}
+
+
static gss_eap_attr_create_provider gssEapAttrFactories[ATTR_TYPE_MAX + 1];
/*
OM_uint32
gssEapExportAttrContext(OM_uint32 *minor,
- gss_name_t name,
+ gss_const_name_t name,
gss_buffer_t buffer)
{
if (name->attrCtx == NULL) {
OM_uint32
gssEapDuplicateAttrContext(OM_uint32 *minor,
- gss_name_t in,
+ gss_const_name_t in,
gss_name_t out)
{
gss_eap_attr_ctx *ctx = NULL;