]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap-client, lib-storage: Move imapc_host validation into imapc_connection_connect
authorKarl Fleischmann <karl.fleischmann@open-xchange.com>
Thu, 4 Apr 2024 11:34:08 +0000 (13:34 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:13 +0000 (12:34 +0200)
src/lib-imap-client/imapc-connection.c
src/lib-storage/index/imapc/imapc-storage.c

index 3003c8d582d0a37fae41eef322e13042828c344e..31150d8faee07ee5f1f62e8d0e778fcdbe53fef9 100644 (file)
@@ -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;
index 3b183b636b013f9d37e4cef5b3c8af2f5550c1c2..ab50541e225485059e025330b625e3358b88fc4c 100644 (file)
@@ -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')