diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2024-01-02 22:32:02 +0100 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2024-01-02 22:32:02 +0100 |
commit | 0cc13f891cdcdc474416cdb63d48245a1820af10 (patch) | |
tree | 3274652bc50eaae4cab9ffd8c3d031ee6432a17f /src/imap | |
parent | b66b9f75fe0c078dfd34dd45d5ce80786aba8c2c (diff) | |
download | aerogramme-refactor/imap-flow.tar.gz aerogramme-refactor/imap-flow.zip |
migration to imap-flow seems done!refactor/imap-flow
Diffstat (limited to 'src/imap')
-rw-r--r-- | src/imap/command/authenticated.rs | 1 | ||||
-rw-r--r-- | src/imap/command/examined.rs | 12 | ||||
-rw-r--r-- | src/imap/command/selected.rs | 12 |
3 files changed, 19 insertions, 6 deletions
diff --git a/src/imap/command/authenticated.rs b/src/imap/command/authenticated.rs index 74ebbfa..1bb4c6d 100644 --- a/src/imap/command/authenticated.rs +++ b/src/imap/command/authenticated.rs @@ -432,6 +432,7 @@ impl<'a> AuthenticatedContext<'a> { Ok(( Response::build() .message("Select completed") + .to_req(self.req) .code(Code::ReadWrite) .set_body(data) .ok()?, diff --git a/src/imap/command/examined.rs b/src/imap/command/examined.rs index eec85cd..7de94f4 100644 --- a/src/imap/command/examined.rs +++ b/src/imap/command/examined.rs @@ -7,7 +7,7 @@ use imap_codec::imap_types::fetch::MacroOrMessageDataItemNames; use imap_codec::imap_types::search::SearchKey; use imap_codec::imap_types::sequence::SequenceSet; -use crate::imap::command::anystate; +use crate::imap::command::{anystate, authenticated}; use crate::imap::flow; use crate::imap::mailbox_view::MailboxView; use crate::imap::response::Response; @@ -48,8 +48,14 @@ pub async fn dispatch(ctx: ExaminedContext<'_>) -> Result<(Response<'static>, fl flow::Transition::None, )), - // The command does not belong to this state - _ => anystate::wrong_state(ctx.req.tag.clone()), + // In examined mode, we fallback to authenticated when needed + _ => { + authenticated::dispatch(authenticated::AuthenticatedContext { + req: ctx.req, + user: ctx.user, + }) + .await + } } } diff --git a/src/imap/command/selected.rs b/src/imap/command/selected.rs index d5dcd61..220a952 100644 --- a/src/imap/command/selected.rs +++ b/src/imap/command/selected.rs @@ -10,7 +10,7 @@ use imap_codec::imap_types::response::{Code, CodeOther}; use imap_codec::imap_types::search::SearchKey; use imap_codec::imap_types::sequence::SequenceSet; -use crate::imap::command::{anystate, MailboxName}; +use crate::imap::command::{anystate, authenticated, MailboxName}; use crate::imap::flow; use crate::imap::mailbox_view::MailboxView; use crate::imap::response::Response; @@ -59,8 +59,14 @@ pub async fn dispatch<'a>( uid, } => ctx.copy(sequence_set, mailbox, uid).await, - // The command does not belong to this state - _ => anystate::wrong_state(ctx.req.tag.clone()), + // In selected mode, we fallback to authenticated when needed + _ => { + authenticated::dispatch(authenticated::AuthenticatedContext { + req: ctx.req, + user: ctx.user, + }) + .await + } } } |