From: Karl Fleischmann Date: Thu, 4 Apr 2024 11:34:08 +0000 (+0200) Subject: lib-imap-client, lib-storage: Move imapc_host validation into imapc_connection_connect X-Git-Tag: 2.4.1~821 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c2f2d604181b21dca1a2bc62da2ff327027b1fdd;p=thirdparty%2Fdovecot%2Fcore.git lib-imap-client, lib-storage: Move imapc_host validation into imapc_connection_connect --- diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 3003c8d582..31150d8fae 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -1922,7 +1922,7 @@ void imapc_connection_connect(struct imapc_connection *conn) imapc_connection_set_state(conn, IMAPC_CONNECTION_STATE_CONNECTING); if (conn->ips_count > 0) { /* do nothing */ - } else if (conn->client->set.host[0] == '\0') { + } else if (HAS_ANY_BITS(conn->client->params.flags, IMAPC_PARAMETER_CLIENT_DISABLED)) { e_error(conn->event, "imapc host is empty"); imapc_connection_set_disconnected(conn); return; diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 3b183b636b..ab50541e22 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -323,19 +323,13 @@ int imapc_storage_client_create(struct mailbox_list *list, return -1; i_zero(&set); - if ((ns->flags & NAMESPACE_FLAG_UNUSABLE) != 0) { + set.host = imapc_set->imapc_host; + if ((ns->flags & NAMESPACE_FLAG_UNUSABLE) != 0 || *set.host == '\0') { /* Shared namespace user doesn't actually exist. Don't try to access the user via imapc, but also don't make this a visible error. If any code path tries to connect to imapc, - it's a bug. Use an empty host to enforce this. */ - set.host = ""; - } else { - set.host = imapc_set->imapc_host; - if (*set.host == '\0') { - *error_r = "missing imapc_host"; - settings_free(imapc_set); - return -1; - } + it's a bug. */ + params.flags |= IMAPC_PARAMETER_CLIENT_DISABLED; } set.port = imapc_set->imapc_port; if (imapc_set->imapc_user[0] != '\0')