+ }
+
+ mechs.count = 1;
+ mechs.elements = (gss_OID)text->mechanism;
+
+ if (authid != NULL) {
+ authid_buf.length = strlen(authid);
+ authid_buf.value = (void *)authid;
+ }
+
+ if (params->gss_creds == GSS_C_NO_CREDENTIAL && authid != NULL) {
+ maj_stat = gss_import_name(&min_stat, &authid_buf,
+ GSS_C_NT_USER_NAME, &text->client_name);
+ if (GSS_ERROR(maj_stat)) {
+ sasl_gs2_seterror(text->utils, maj_stat, min_stat);
+ return SASL_FAIL;
+ }
+
+ /* See if we have a default credential */
+ maj_stat = gss_acquire_cred(&min_stat,
+ text->client_name,
+ GSS_C_INDEFINITE,
+ &mechs,
+ GSS_C_INITIATE,
+ &text->client_creds,
+ NULL,
+ &text->lifetime);
+ if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CRED_UNAVAIL) {
+ sasl_gs2_seterror(text->utils, maj_stat, min_stat);
+ return SASL_FAIL;