Add name-based API to GSSRequest
authorScott Cantor <cantor.2@osu.edu>
Tue, 3 Apr 2012 21:38:27 +0000 (21:38 +0000)
committerScott Cantor <cantor.2@osu.edu>
Tue, 3 Apr 2012 21:38:27 +0000 (21:38 +0000)
src/shibresolver/resolver.cpp

index 5b2e70d..dd7bbbf 100644 (file)
@@ -144,9 +144,16 @@ void ShibbolethResolver::setRequest(const SPRequest* request)
     if (request) {
         const GSSRequest* gss = dynamic_cast<const GSSRequest*>(request);
         if (gss) {
-            // TODO: fix API to prevent destruction of contexts
+#ifdef SHIBRESOLVER_HAVE_GSSAPI_NAMINGEXTS
+            gss_name_t name = gss->getGSSName();
+            if (name != GSS_C_NO_NAME) {
+                addToken(name);
+                return;
+            }
+#endif
             gss_ctx_id_t ctx = gss->getGSSContext();
-            addToken(&ctx);
+            if (ctx != GSS_C_NO_CONTEXT)
+                addToken(&ctx);
         }
     }
 #endif