IMAP: Fix shared folder double nesting (test suite credits to @ochnygosch) (fixes #2358 closes #2525)
This commit is contained in:
@@ -177,7 +177,7 @@ impl<T: SessionStream> SessionData<T> {
|
||||
let mut parent_mailbox_name = None;
|
||||
let (account_id, path) = {
|
||||
let mailboxes = self.mailboxes.lock();
|
||||
let (account, full_path) =
|
||||
let (account, full_path, prefix) =
|
||||
if path.first() == Some(&self.server.core.jmap.shared_folder.as_str()) {
|
||||
// Shared Folders/<username>/<folder>
|
||||
if path.len() < 3 {
|
||||
@@ -201,7 +201,7 @@ impl<T: SessionStream> SessionData<T> {
|
||||
.skip(1)
|
||||
.find(|account| account.prefix == prefix)
|
||||
{
|
||||
(account, full_path)
|
||||
(account, full_path, prefix)
|
||||
} else {
|
||||
#[allow(clippy::unnecessary_literal_unwrap)]
|
||||
return Err(trc::ImapEvent::Error.into_err().details(format!(
|
||||
@@ -215,7 +215,7 @@ impl<T: SessionStream> SessionData<T> {
|
||||
*root = "INBOX";
|
||||
}
|
||||
|
||||
(account, path.join("/"))
|
||||
(account, path.join("/"), None)
|
||||
} else {
|
||||
return Err(trc::ImapEvent::Error
|
||||
.into_err()
|
||||
@@ -241,6 +241,11 @@ impl<T: SessionStream> SessionData<T> {
|
||||
parent_mailbox_id = mailbox_id.into();
|
||||
parent_mailbox_name = mailbox_name.into();
|
||||
break;
|
||||
} else if prefix
|
||||
.as_ref()
|
||||
.is_some_and(|prefix| prefix == &mailbox_name)
|
||||
{
|
||||
break;
|
||||
} else {
|
||||
create_path.push(path.pop().unwrap());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user