Temporary: set mutual in flags token
[mech_eap.git] / mech_eap / util_attr.cpp
index d3c99d3..d1c0075 100644 (file)
 #include <new>
 
 /* lazy initialisation */
-#ifdef WIN32
-static volatile OM_uint32 gssEapAttrProvidersInitStatus = GSS_S_UNAVAILABLE;
-#else
 static GSSEAP_THREAD_ONCE gssEapAttrProvidersInitOnce = GSSEAP_ONCE_INITIALIZER;
 static OM_uint32 gssEapAttrProvidersInitStatus = GSS_S_UNAVAILABLE;
-#endif
 
 GSSEAP_ONCE_CALLBACK(gssEapAttrProvidersInitInternal)
 {
@@ -62,28 +58,23 @@ GSSEAP_ONCE_CALLBACK(gssEapAttrProvidersInitInternal)
     if (GSS_ERROR(major))
         goto cleanup;
 
-#ifdef HAVE_OPENSAML
-    major = gssEapSamlAttrProvidersInit(&minor);
-    if (GSS_ERROR(major))
-        goto cleanup;
-#endif
 
 #ifdef HAVE_SHIBRESOLVER
     /* Allow Shibboleth initialization failure to be non-fatal */
     gssEapLocalAttrProviderInit(&minor);
 #endif
+#ifdef HAVE_OPENSAML
+    major = gssEapSamlAttrProvidersInit(&minor);
+    if (GSS_ERROR(major))
+        goto cleanup;
+#endif
 
 cleanup:
 #ifdef GSSEAP_DEBUG
     GSSEAP_ASSERT(major == GSS_S_COMPLETE);
 #endif
 
-#ifdef WIN32
-    InterlockedCompareExchangeRelease(&gssEapAttrProvidersInitStatus,
-                                      major, GSS_S_UNAVAILABLE);
-#else
     gssEapAttrProvidersInitStatus = major;
-#endif
 
     GSSEAP_ONCE_LEAVE;
 }
@@ -91,12 +82,7 @@ cleanup:
 static OM_uint32
 gssEapAttrProvidersInit(OM_uint32 *minor)
 {
-#ifdef WIN32
-    if (gssEapAttrProvidersInitStatus == GSS_S_UNAVAILABLE)
-        gssEapAttrProvidersInitInternal();
-#else
     GSSEAP_ONCE(&gssEapAttrProvidersInitOnce, gssEapAttrProvidersInitInternal);
-#endif
 
     if (GSS_ERROR(gssEapAttrProvidersInitStatus))
         *minor = GSSEAP_NO_ATTR_PROVIDERS;