goto cleanup;
ctx->state = GSSEAP_STATE_ESTABLISHED;
} else {
- *smFlags |= SM_FLAG_TRANSITION;
+ ctx->state = GSSEAP_STATE_REAUTHENTICATE;
}
cleanup:
OM_uint32 *smFlags)
{
*minor = 0;
- *smFlags |= SM_FLAG_TRANSITION | SM_FLAG_STOP_EVAL;
- return (ctx->state == GSSEAP_STATE_INITIATOR_EXTS) ?
- GSS_S_CONTINUE_NEEDED : GSS_S_COMPLETE;
+
+ if (ctx->state == GSSEAP_STATE_INITIATOR_EXTS) {
+ *smFlags |= SM_FLAG_TRANSITION | SM_FLAG_STOP_EVAL;
+ return GSS_S_CONTINUE_NEEDED;
+ } else {
+ ctx->state = GSSEAP_STATE_ESTABLISHED;
+ *smFlags |= SM_FLAG_STOP_EVAL;
+ return GSS_S_COMPLETE;
+ }
}
static struct gss_eap_sm eapGssInitiatorSm[] = {
SM_ITOK_FLAG_CRITICAL,
eapGssSmInitError,
},
-#ifdef GSSEAP_ENABLE_REAUTH
- {
- ITOK_TYPE_REAUTH_RESP,
- ITOK_TYPE_REAUTH_REQ,
- GSSEAP_STATE_INITIAL | GSSEAP_STATE_AUTHENTICATE,
- 0,
- eapGssSmInitGssReauth,
- },
-#endif
#ifdef GSSEAP_DEBUG
{
ITOK_TYPE_NONE,
eapGssSmInitVendorInfo,
},
#endif
+#ifdef GSSEAP_ENABLE_REAUTH
+ {
+ ITOK_TYPE_REAUTH_RESP,
+ ITOK_TYPE_REAUTH_REQ,
+ GSSEAP_STATE_INITIAL | GSSEAP_STATE_REAUTHENTICATE,
+ 0,
+ eapGssSmInitGssReauth,
+ },
+#endif
{
ITOK_TYPE_NONE,
ITOK_TYPE_NONE,