--- /dev/null
+#include "nsMoonshotSessionState.h"
+
+nsMoonshotSessionState::nsMoonshotSessionState()
+{
+ gss_ctx = GSS_C_NO_CONTEXT;
+ gss_state = GSS_CTX_EMPTY;
+ gss_cred = GSS_C_NO_CREDENTIAL;
+}
+
+nsMoonshotSessionState::~nsMoonshotSessionState()
+{
+ OM_uint32 min_stat;
+
+ 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_ctx);
+
+ gss_ctx = GSS_C_NO_CONTEXT;
+ gss_cred = GSS_C_NO_CREDENTIAL;
+ gss_state = GSS_CTX_EMPTY;
+}
+
+void
+nsMoonshotSessionState::Reset()
+{
+ OM_uint32 min_stat;
+
+ if (gss_ctx != GSS_C_NO_CONTEXT)
+ gss_delete_sec_context(&min_stat, &gss_ctx, GSS_C_NO_BUFFER);
+ gss_ctx = GSS_C_NO_CONTEXT;
+ gss_state = GSS_CTX_EMPTY;
+}
+
+NS_IMPL_ISUPPORTS0(nsMoonshotSessionState)
--- /dev/null
+#ifndef _nsMoonshotSessionState_h__
+#define _nsMoonshotSessionState_h__
+
+#include <gssapi.h>
+
+class nsMoonshotSessionState : public nsISupports
+{
+ public:
+ NS_DECL_ISUPPORTS;
+
+ nsMoonshotSessionState();
+ virtual ~nsMoonshotSessionState();
+ NS_IMETHOD Reset();
+
+ enum {
+ GSS_CTX_EMPTY,
+ GSS_CTX_IN_PROGRESS,
+ GSS_CTX_ESTABLISHED
+ } gss_state;
+
+ gss_cred_id_t gss_cred;
+
+ private:
+}
+
+#endif