{
va_list va;
- if (!auth_request->set->verbose)
- return;
+ if (auth_request->set->debug) {
+ /* auth_debug=yes overrides auth_verbose settings */
+ } else {
+ const char *db_auth_verbose = auth_request->userdb_lookup ?
+ auth_request->userdb->set->auth_verbose :
+ auth_request->passdb->set->auth_verbose;
+ switch (db_auth_verbose[0]) {
+ case 'y':
+ break;
+ case 'n':
+ return;
+ case 'd':
+ if (!auth_request->set->verbose)
+ return;
+ break;
+ default:
+ i_unreached();
+ }
+ }
va_start(va, format);
T_BEGIN {
DEF(SET_BOOL, deny),
DEF(SET_BOOL, pass),
DEF(SET_BOOL, master),
+ DEF(SET_ENUM, auth_verbose),
SETTING_DEFINE_LIST_END
};
.deny = FALSE,
.pass = FALSE,
- .master = FALSE
+ .master = FALSE,
+ .auth_verbose = "default:yes:no"
};
const struct setting_parser_info auth_passdb_setting_parser_info = {
DEF(SET_ENUM, result_failure),
DEF(SET_ENUM, result_internalfail),
+ DEF(SET_ENUM, auth_verbose),
+
SETTING_DEFINE_LIST_END
};
.skip = "never:found:notfound",
.result_success = "return-ok:return:return-fail:continue:continue-ok:continue-fail",
.result_failure = "continue:return:return-ok:return-fail:continue-ok:continue-fail",
- .result_internalfail = "continue:return:return-ok:return-fail:continue-ok:continue-fail"
+ .result_internalfail = "continue:return:return-ok:return-fail:continue-ok:continue-fail",
+
+ .auth_verbose = "default:yes:no"
};
const struct setting_parser_info auth_userdb_setting_parser_info = {
bool deny;
bool pass; /* deprecated, use result_success=continue instead */
bool master;
+ const char *auth_verbose;
};
struct auth_userdb_settings {
const char *result_success;
const char *result_failure;
const char *result_internalfail;
+ const char *auth_verbose;
};
struct auth_settings {