return FALSE;
}
- if (*set->base == '\0') {
- *error_r = "No ldap_base given";
- return FALSE;
- }
-
- if (*set->uris == '\0' && *set->hosts == '\0') {
- *error_r = "Neither ldap_uris nor ldap_hosts set";
- return FALSE;
- }
-
#ifndef LDAP_HAVE_INITIALIZE
if (*set->uris != '\0') {
*error_r = "ldap_uris set, but Dovecot compiled without support for LDAP uris "
}
#endif
+ return TRUE;
+}
+
+/* </settings checks> */
+
+int ldap_setting_post_check(const struct ldap_settings *set, const char **error_r)
+{
+ if (*set->base == '\0') {
+ *error_r = "No ldap_base given";
+ return -1;
+ }
+
+ if (*set->uris == '\0' && *set->hosts == '\0') {
+ *error_r = "Neither ldap_uris nor ldap_hosts set";
+ return -1;
+ }
+
if (set->version < 3) {
if (set->sasl_bind) {
*error_r = "ldap_sasl_bind=yes requires ldap_version=3";
- return FALSE;
+ return -1;
}
if (set->starttls) {
*error_r = "ldap_starttls=yes requires ldap_version=3";
- return FALSE;
+ return -1;
}
}
- return TRUE;
+ return 0;
}
-
-/* </settings checks> */
{
const struct ldap_settings *set;
const struct ssl_settings *ssl_set;
+ const char *error;
set = settings_get_or_fatal(event, &ldap_setting_parser_info);
ssl_set = settings_get_or_fatal(event, &ssl_setting_parser_info);
+ if (ldap_setting_post_check(set, &error) < 0)
+ i_fatal("LDAP: %s", error);
/* see if it already exists */
struct ldap_connection *conn = db_ldap_conn_find(set, ssl_set);