auth_stream_reply_add(reply, "nodelay", NULL);
get_client_extra_fields(request, reply);
+ switch (request->passdb_result) {
+ case PASSDB_RESULT_INTERNAL_FAILURE:
+ case PASSDB_RESULT_SCHEME_NOT_AVAILABLE:
+ case PASSDB_RESULT_USER_UNKNOWN:
+ case PASSDB_RESULT_PASSWORD_MISMATCH:
+ case PASSDB_RESULT_OK:
+ break;
+ case PASSDB_RESULT_USER_DISABLED:
+ auth_stream_reply_add(reply, "user_disabled", NULL);
+ break;
+ case PASSDB_RESULT_PASS_EXPIRED:
+ auth_stream_reply_add(reply, "pass_expired", NULL);
+ break;
+ }
+
auth_request_handle_failure(request, reply);
}
request->private_callback.verify_plain);
} else {
auth_request_ref(request);
+ request->passdb_result = result;
request->private_callback.verify_plain(result, request);
auth_request_unref(&request);
}
but the user was unknown there */
result = PASSDB_RESULT_USER_UNKNOWN;
}
+ request->passdb_result = result;
request->private_callback.
lookup_credentials(result, credentials, size, request);
}
struct auth_stream_reply *extra_cache_fields;
/* the whole userdb result reply */
struct auth_stream_reply *userdb_reply;
+ /* Result of passdb lookup */
+ enum passdb_result passdb_result;
const struct mech_module *mech;
const struct auth_settings *set;