Creating a mailbox in a shared folder results in wrong hierarchy (fixes #1128)

This commit is contained in:
mdecimus 2025-01-28 18:49:36 +01:00
parent 84d3c82179
commit c394fa689f
22 changed files with 60 additions and 61 deletions

76
Cargo.lock generated
View file

@ -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",

View file

@ -5,7 +5,7 @@ authors = ["Stalwart Labs Ltd. <hello@stalw.art>"]
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"

View file

@ -1,6 +1,6 @@
[package]
name = "common"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "directory"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "email"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "imap_proto"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "imap"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -297,8 +297,7 @@ impl<T: SessionStream> SessionData<T> {
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/<username>/<folder>
if path.len() < 3 {
return Err(trc::ImapEvent::Error
@ -306,7 +305,7 @@ impl<T: SessionStream> SessionData<T> {
.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

View file

@ -1,6 +1,6 @@
[package]
name = "jmap_proto"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "jmap"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -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"

View file

@ -1,6 +1,6 @@
[package]
name = "managesieve"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "nlp"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "pop3"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -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"

View file

@ -1,6 +1,6 @@
[package]
name = "spam-filter"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "store"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "trc"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "event_macro"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
[lib]

View file

@ -1,6 +1,6 @@
[package]
name = "utils"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"

View file

@ -1,6 +1,6 @@
[package]
name = "proc_macros"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
[lib]

View file

@ -1,6 +1,6 @@
[package]
name = "tests"
version = "0.11.2"
version = "0.11.4"
edition = "2021"
resolver = "2"