# HG changeset patch # User Timo Sirainen # Date 1302272872 -10800 # Node ID e2b747f88e546d7f5110a1d09d35a0bc9d6606e5 # Parent 1f545a4a1ffb4857078766f9da7993b2649ce92e doveadm import: Initialize the import user properly. diff -r 1f545a4a1ffb -r e2b747f88e54 src/doveadm/doveadm-mail-import.c --- a/src/doveadm/doveadm-mail-import.c Fri Apr 08 17:26:49 2011 +0300 +++ b/src/doveadm/doveadm-mail-import.c Fri Apr 08 17:27:52 2011 +0300 @@ -158,7 +158,7 @@ struct mail_storage_service_input input; struct mail_storage_service_user *service_user; struct mail_user *user; - const char *src_location, *error, *userdb_fields[2]; + const char *src_location, *error; if (str_array_length(args) < 3) doveadm_mail_help_name("import"); @@ -166,19 +166,19 @@ ctx->dest_parent = p_strdup(_ctx->pool, args[1]); ctx->ctx.search_args = doveadm_mail_build_search_args(args+2); - /* @UNSAFE */ - userdb_fields[0] = t_strconcat("mail=", src_location, NULL); - userdb_fields[1] = NULL; - /* create a user for accessing the source storage */ memset(&input, 0, sizeof(input)); input.module = "mail"; input.username = "doveadm"; - input.no_userdb_lookup = TRUE; - input.userdb_fields = userdb_fields; + input.flags_override_add = MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES | + MAIL_STORAGE_SERVICE_FLAG_NO_RESTRICT_ACCESS; + input.flags_override_remove = MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP; if (mail_storage_service_lookup_next(ctx->ctx.storage_service, &input, &service_user, &user, &error) < 0) i_fatal("Import user initialization failed: %s", error); + if (mail_namespaces_init_location(user, src_location, &error) < 0) + i_fatal("Import namespace initialization failed: %s", error); + ctx->src_user = user; mail_storage_service_user_free(&service_user); }