X-Git-Url: http://www.project-moonshot.org/gitweb/?p=moonshot-firefox.git;a=blobdiff_plain;f=nsMoonshotSessionState.h;fp=nsMoonshotSessionState.h;h=42caaafc586767985a86ba25046d34be9779ae7f;hp=7e623d851e99e1ff8b6ec803b7661a3f045a58fb;hb=fa5af4ad005b29a3cbf770750fb3569f27e5b78e;hpb=c526e7660c6fe87820aed5dfa798a22efd4071be diff --git a/nsMoonshotSessionState.h b/nsMoonshotSessionState.h index 7e623d8..42caaaf 100644 --- a/nsMoonshotSessionState.h +++ b/nsMoonshotSessionState.h @@ -10,13 +10,30 @@ typedef enum { GSS_CTX_ESTABLISHED } gss_state_t; -class nsMoonshotSessionState : public nsISupports +class NS_EXPORT +nsMoonshotSessionState : public nsISupports { public: NS_DECL_ISUPPORTS - nsMoonshotSessionState(); - virtual ~nsMoonshotSessionState(); + nsMoonshotSessionState() { + gss_ctx = GSS_C_NO_CONTEXT; + gss_state = GSS_CTX_EMPTY; + gss_cred = GSS_C_NO_CREDENTIAL; + } + + virtual ~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_cred); + gss_ctx = GSS_C_NO_CONTEXT; + gss_cred = GSS_C_NO_CREDENTIAL; + gss_state = GSS_CTX_EMPTY; + } + void Reset(); gss_state_t gss_state;