From c394fa689f57e30e6d3e2b3abb0420e21c093e5c Mon Sep 17 00:00:00 2001 From: mdecimus Date: Tue, 28 Jan 2025 18:49:36 +0100 Subject: [PATCH] Creating a mailbox in a shared folder results in wrong hierarchy (fixes #1128) --- Cargo.lock | 76 ++++++++++++++--------------- crates/cli/Cargo.toml | 2 +- crates/common/Cargo.toml | 2 +- crates/directory/Cargo.toml | 2 +- crates/email/Cargo.toml | 2 +- crates/imap-proto/Cargo.toml | 2 +- crates/imap/Cargo.toml | 2 +- crates/imap/src/op/create.rs | 5 +- crates/jmap-proto/Cargo.toml | 2 +- crates/jmap/Cargo.toml | 2 +- crates/main/Cargo.toml | 2 +- crates/managesieve/Cargo.toml | 2 +- crates/nlp/Cargo.toml | 2 +- crates/pop3/Cargo.toml | 2 +- crates/smtp/Cargo.toml | 2 +- crates/spam-filter/Cargo.toml | 2 +- crates/store/Cargo.toml | 2 +- crates/trc/Cargo.toml | 2 +- crates/trc/event-macro/Cargo.toml | 2 +- crates/utils/Cargo.toml | 2 +- crates/utils/proc-macros/Cargo.toml | 2 +- tests/Cargo.toml | 2 +- 22 files changed, 60 insertions(+), 61 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index efa721f8..24206931 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1204,7 +1204,7 @@ dependencies = [ [[package]] name = "common" -version = "0.11.2" +version = "0.11.4" dependencies = [ "aes-gcm-siv", "ahash 0.8.11", @@ -1218,7 +1218,7 @@ dependencies = [ "dns-update", "futures", "hostname 0.4.0", - "hyper 1.5.2", + "hyper 1.6.0", "idna", "imagesize", "imap_proto", @@ -1799,7 +1799,7 @@ dependencies = [ [[package]] name = "directory" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "argon2", @@ -2046,7 +2046,7 @@ dependencies = [ [[package]] name = "email" -version = "0.11.2" +version = "0.11.4" dependencies = [ "aes", "aes-gcm", @@ -2162,7 +2162,7 @@ dependencies = [ [[package]] name = "event_macro" -version = "0.11.2" +version = "0.11.4" dependencies = [ "proc-macro2", "quote", @@ -2958,9 +2958,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -3000,9 +3000,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -3041,7 +3041,7 @@ checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http 1.2.0", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "rustls 0.23.21", "rustls-pki-types", @@ -3057,7 +3057,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "pin-project-lite", "tokio", @@ -3075,7 +3075,7 @@ dependencies = [ "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.2", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -3268,7 +3268,7 @@ checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" [[package]] name = "imap" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "common", @@ -3294,7 +3294,7 @@ dependencies = [ [[package]] name = "imap_proto" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "chrono", @@ -3351,9 +3351,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.10" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeffd0d77fc9a0bc8ec71b6364089028b48283b534f874178753723ad9241f42" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", "number_prefix", @@ -3519,7 +3519,7 @@ dependencies = [ [[package]] name = "jmap" -version = "0.11.2" +version = "0.11.4" dependencies = [ "aes-gcm", "aes-gcm-siv", @@ -3535,7 +3535,7 @@ dependencies = [ "futures-util", "hkdf", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "jmap_proto", "lz4_flex", @@ -3594,7 +3594,7 @@ dependencies = [ [[package]] name = "jmap_proto" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "fast-float", @@ -3947,9 +3947,9 @@ dependencies = [ [[package]] name = "mail-parser" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8f64d96d3235bb1390e3d8efd745deb66b85595ce4db431a3ddc0e841a6015" +checksum = "187a2b93c4c8c32f552ee06c2d99915e575de2fc7e04b07891c9edfee5b8edd6" dependencies = [ "encoding_rs", "hashify", @@ -3975,7 +3975,7 @@ dependencies = [ [[package]] name = "mail-server" -version = "0.11.2" +version = "0.11.4" dependencies = [ "common", "directory", @@ -3995,7 +3995,7 @@ dependencies = [ [[package]] name = "managesieve" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "bincode", @@ -4273,7 +4273,7 @@ dependencies = [ [[package]] name = "nlp" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "bincode", @@ -4818,7 +4818,7 @@ dependencies = [ [[package]] name = "pop3" -version = "0.11.2" +version = "0.11.4" dependencies = [ "common", "directory", @@ -4977,7 +4977,7 @@ dependencies = [ [[package]] name = "proc_macros" -version = "0.11.2" +version = "0.11.4" dependencies = [ "proc-macro2", "quote", @@ -5539,7 +5539,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-rustls 0.27.5", "hyper-util", "ipnet", @@ -6476,7 +6476,7 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smtp" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "bincode", @@ -6487,7 +6487,7 @@ dependencies = [ "email", "form_urlencoded", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "lru-cache", "mail-auth", @@ -6565,11 +6565,11 @@ dependencies = [ [[package]] name = "spam-filter" -version = "0.11.2" +version = "0.11.4" dependencies = [ "common", "decancer", - "hyper 1.5.2", + "hyper 1.6.0", "idna", "infer 0.16.0", "mail-auth", @@ -6619,7 +6619,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stalwart-cli" -version = "0.11.2" +version = "0.11.4" dependencies = [ "clap", "console", @@ -6650,7 +6650,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "store" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "arc-swap", @@ -6859,7 +6859,7 @@ dependencies = [ [[package]] name = "tests" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "async-trait", @@ -6876,7 +6876,7 @@ dependencies = [ "form_urlencoded", "futures", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "imap", "imap_proto", @@ -7188,7 +7188,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-timeout", "hyper-util", "percent-encoding", @@ -7298,7 +7298,7 @@ dependencies = [ [[package]] name = "trc" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "base64 0.22.1", @@ -7545,7 +7545,7 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "utils" -version = "0.11.2" +version = "0.11.4" dependencies = [ "ahash 0.8.11", "base64 0.22.1", diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 6f762ec1..6539b890 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Stalwart Labs Ltd. "] license = "AGPL-3.0-only OR LicenseRef-SEL" repository = "https://github.com/stalwartlabs/cli" homepage = "https://github.com/stalwartlabs/cli" -version = "0.11.2" +version = "0.11.4" edition = "2021" readme = "README.md" resolver = "2" diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 94c2dde8..492b2fc9 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "common" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/directory/Cargo.toml b/crates/directory/Cargo.toml index 161e4e4f..52c8fc4b 100644 --- a/crates/directory/Cargo.toml +++ b/crates/directory/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "directory" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/email/Cargo.toml b/crates/email/Cargo.toml index 3a83365e..960b9418 100644 --- a/crates/email/Cargo.toml +++ b/crates/email/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "email" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/imap-proto/Cargo.toml b/crates/imap-proto/Cargo.toml index 03eea7f9..d37bfeb9 100644 --- a/crates/imap-proto/Cargo.toml +++ b/crates/imap-proto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "imap_proto" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/imap/Cargo.toml b/crates/imap/Cargo.toml index 86cdb50d..37a55cd3 100644 --- a/crates/imap/Cargo.toml +++ b/crates/imap/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "imap" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/imap/src/op/create.rs b/crates/imap/src/op/create.rs index 6386b2f3..297581dc 100644 --- a/crates/imap/src/op/create.rs +++ b/crates/imap/src/op/create.rs @@ -297,8 +297,7 @@ impl SessionData { let mut parent_mailbox_name = None; let (account_id, path) = { let mailboxes = self.mailboxes.lock(); - let first_path_item = path.first().unwrap(); - let account = if first_path_item == &self.server.core.jmap.shared_folder { + let account = if path.first() == Some(&self.server.core.jmap.shared_folder.as_str()) { // Shared Folders// if path.len() < 3 { return Err(trc::ImapEvent::Error @@ -306,7 +305,7 @@ impl SessionData { .details("Mailboxes under root shared folders are not allowed.") .code(ResponseCode::Cannot)); } - let prefix = Some(format!("{}/{}", first_path_item, path[1])); + let prefix = Some(format!("{}/{}", path.remove(0), path.remove(0))); // Locate account if let Some(account) = mailboxes diff --git a/crates/jmap-proto/Cargo.toml b/crates/jmap-proto/Cargo.toml index 022d7a40..67899f4a 100644 --- a/crates/jmap-proto/Cargo.toml +++ b/crates/jmap-proto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "jmap_proto" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/jmap/Cargo.toml b/crates/jmap/Cargo.toml index ad2d3614..1a568cac 100644 --- a/crates/jmap/Cargo.toml +++ b/crates/jmap/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "jmap" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/main/Cargo.toml b/crates/main/Cargo.toml index 57815e2b..c726b83b 100644 --- a/crates/main/Cargo.toml +++ b/crates/main/Cargo.toml @@ -7,7 +7,7 @@ homepage = "https://stalw.art" keywords = ["imap", "jmap", "smtp", "email", "mail", "server"] categories = ["email"] license = "AGPL-3.0-only OR LicenseRef-SEL" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/managesieve/Cargo.toml b/crates/managesieve/Cargo.toml index 372415f8..90c67c51 100644 --- a/crates/managesieve/Cargo.toml +++ b/crates/managesieve/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "managesieve" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/nlp/Cargo.toml b/crates/nlp/Cargo.toml index 54dd9005..069df1a9 100644 --- a/crates/nlp/Cargo.toml +++ b/crates/nlp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nlp" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/pop3/Cargo.toml b/crates/pop3/Cargo.toml index 7579d9cb..45274724 100644 --- a/crates/pop3/Cargo.toml +++ b/crates/pop3/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pop3" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/smtp/Cargo.toml b/crates/smtp/Cargo.toml index df27edbc..391fc49d 100644 --- a/crates/smtp/Cargo.toml +++ b/crates/smtp/Cargo.toml @@ -7,7 +7,7 @@ homepage = "https://stalw.art/smtp" keywords = ["smtp", "email", "mail", "server"] categories = ["email"] license = "AGPL-3.0-only OR LicenseRef-SEL" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/spam-filter/Cargo.toml b/crates/spam-filter/Cargo.toml index ae68d884..d6dcd16c 100644 --- a/crates/spam-filter/Cargo.toml +++ b/crates/spam-filter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "spam-filter" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/store/Cargo.toml b/crates/store/Cargo.toml index 2ec6807d..f352230e 100644 --- a/crates/store/Cargo.toml +++ b/crates/store/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "store" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/trc/Cargo.toml b/crates/trc/Cargo.toml index 585a7fe9..9455003c 100644 --- a/crates/trc/Cargo.toml +++ b/crates/trc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trc" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/trc/event-macro/Cargo.toml b/crates/trc/event-macro/Cargo.toml index b31e3ffc..d41a1774 100644 --- a/crates/trc/event-macro/Cargo.toml +++ b/crates/trc/event-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "event_macro" -version = "0.11.2" +version = "0.11.4" edition = "2021" [lib] diff --git a/crates/utils/Cargo.toml b/crates/utils/Cargo.toml index a5592efd..89fcaa77 100644 --- a/crates/utils/Cargo.toml +++ b/crates/utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "utils" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2" diff --git a/crates/utils/proc-macros/Cargo.toml b/crates/utils/proc-macros/Cargo.toml index fd04ec02..ab1ae33c 100644 --- a/crates/utils/proc-macros/Cargo.toml +++ b/crates/utils/proc-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "proc_macros" -version = "0.11.2" +version = "0.11.4" edition = "2021" [lib] diff --git a/tests/Cargo.toml b/tests/Cargo.toml index ec4021c0..a0b2e4a9 100644 --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tests" -version = "0.11.2" +version = "0.11.4" edition = "2021" resolver = "2"