Revert "Revert "Add missing (?) library""
[moonshot-firefox.git] / nsMoonshotSessionState.h
index c29ef1b..42caaaf 100644 (file)
@@ -1,26 +1,44 @@
 #ifndef _nsMoonshotSessionState_h__
 #define _nsMoonshotSessionState_h__
 
+#include <nsISupportsUtils.h>
 #include <gssapi.h>
 
-class nsMoonshotSessionState : public nsISupports
+typedef enum {
+    GSS_CTX_EMPTY,
+    GSS_CTX_IN_PROGRESS,
+    GSS_CTX_ESTABLISHED
+} gss_state_t;
+
+class NS_EXPORT
+nsMoonshotSessionState : public nsISupports
 {
     public:
-       NS_DECL_ISUPPORTS;
+       NS_DECL_ISUPPORTS
 
-       nsMoonshotSessionState();
-       virtual ~nsMoonshotSessionState();
-       NS_IMETHOD Reset();
+       nsMoonshotSessionState() {
+           gss_ctx = GSS_C_NO_CONTEXT;
+           gss_state = GSS_CTX_EMPTY;
+           gss_cred = GSS_C_NO_CREDENTIAL;
+       }
 
-       enum {
-           GSS_CTX_EMPTY,
-           GSS_CTX_IN_PROGRESS,
-           GSS_CTX_ESTABLISHED
-       } gss_state;
+       virtual ~nsMoonshotSessionState() {
+           OM_uint32 min_stat;
 
-       gss_cred_id_t gss_cred;
+           if (gss_ctx != GSS_C_NO_CONTEXT)
+               gss_delete_sec_context(&min_stat, &gss_ctx, GSS_C_NO_BUFFER);
+           if (gss_cred != GSS_C_NO_CREDENTIAL)
+               gss_release_cred(&min_stat, &gss_cred);
+           gss_ctx = GSS_C_NO_CONTEXT;
+           gss_cred = GSS_C_NO_CREDENTIAL;
+           gss_state = GSS_CTX_EMPTY;
+       }
 
-    private:
-}
+       void Reset();
+
+       gss_state_t gss_state;
+       gss_cred_id_t gss_cred;
+       gss_ctx_id_t gss_ctx;
+};
 
 #endif