-I$(top_srcdir)/src/lib-mail \
-I$(top_srcdir)/src/lib-imap \
-I$(top_srcdir)/src/lib-imap-client \
+ -I$(top_srcdir)/src/lib-sasl/ \
-I$(top_srcdir)/src/lib-index \
-I$(top_srcdir)/src/lib-storage \
-I$(top_srcdir)/src/lib-storage/list \
#include "imapc-attribute.h"
#include "imapc-settings.h"
#include "imapc-storage.h"
+#include "dsasl-client.h"
#define DNS_CLIENT_SOCKET_NAME "dns-client"
it's a bug. */
params.flags |= IMAPC_PARAMETER_CLIENT_DISABLED;
- if (*imapc_set->imapc_password == '\0') {
- *error_r = "missing imapc_password";
- settings_free(imapc_set);
- return -1;
+ if (!array_is_empty(&imapc_set->imapc_sasl_mechanisms)) {
+ const char *mech_name;
+ array_foreach_elem(&imapc_set->imapc_sasl_mechanisms, mech_name) {
+ const struct dsasl_client_mech *mech =
+ dsasl_client_mech_find(mech_name);
+ if (mech == NULL) {
+ *error_r =
+ t_strdup_printf("imapc_sasl_mechanism: "
+ "'%s' is not supported",
+ mech_name);
+ settings_free(imapc_set);
+ return -1;
+ } else if (dsasl_client_mech_uses_password(mech) &&
+ *imapc_set->imapc_password == '\0') {
+ *error_r = "Missing imapc_password";
+ settings_free(imapc_set);
+ return -1;
+ }
+ }
}
params.override_dns_client_socket_path = *ns->user->set->base_dir == '\0' ? "" :
t_strconcat(ns->user->set->base_dir, "/",