From: Luke Howard Date: Sat, 4 Jan 2014 02:02:40 +0000 (+1100) Subject: GSS_S_PROMPTING_NEEDED support X-Git-Url: http://www.project-moonshot.org/gitweb/?p=cyrus-sasl.git;a=commitdiff_plain;h=69332d4cce1cfb8d094e1cb3b82d9030907c5eb7 GSS_S_PROMPTING_NEEDED support --- diff --git a/plugins/gs2.c b/plugins/gs2.c index 6e102ad..c04f99f 100644 --- a/plugins/gs2.c +++ b/plugins/gs2.c @@ -97,6 +97,10 @@ #define GS2_CB_FLAG_Y 0x02 #define GS2_NONSTD_FLAG 0x10 +#ifndef GSS_S_PROMPTING_NEEDED +#define GSS_S_PROMPTING_NEEDED (1 << (GSS_C_SUPPLEMENTARY_OFFSET + 5)) +#endif + typedef struct context { gss_ctx_id_t gss_ctx; gss_name_t client_name; @@ -834,7 +838,7 @@ cleanup: if (ret == SASL_OK && maj_stat != GSS_S_COMPLETE) { sasl_gs2_seterror(text->utils, maj_stat, min_stat); - ret = SASL_FAIL; + ret = (maj_stat == GSS_S_PROMPTING_NEEDED) ? SASL_INTERACT : SASL_FAIL; } if (ret < SASL_OK) sasl_gs2_free_context_contents(text); @@ -1704,7 +1708,7 @@ interact: cleanup: if (result == SASL_OK && maj_stat != GSS_S_COMPLETE) { sasl_gs2_seterror(text->utils, maj_stat, min_stat); - result = SASL_FAIL; + result = (maj_stat == GSS_S_PROMPTING_NEEDED) ? SASL_INTERACT : SASL_FAIL; } gss_release_buffer(&min_stat, &cred_authid);