Benoit Tellier created JAMES-3888:
-------------------------------------
Summary: Enforce sequetial ordering of IMAP requests for each
channels
Key: JAMES-3888
URL: https://issues.apache.org/jira/browse/JAMES-3888
Project: James Server
Issue Type: Improvement
Reporter: Benoit Tellier
Today IMAP requests are not executed in a sequencial order.
If a MUA sends two requests at once, we are going to execute both in parallel.
For instance sending `A1 SELECT INBOX\r\nA2 UID FETCH 1:100 (FLAGS)\r\n"` would
result in:
{code:java}
06:43:49.002 [INFO ] o.a.j.p.l.n.AbstractConfigurableAsyncServer - IMAP Service
bound to: 0.0.0.0:0
06:43:49.061 [INFO ] o.a.j.p.l.n.AbstractConfigurableAsyncServer - IMAP Service
is running on: interview1-HP-ProBook-440-G6
06:43:49.062 [INFO ] o.a.j.p.l.n.AbstractConfigurableAsyncServer - IMAP Service
handler hello name is: interview1-HP-ProBook-440-G6
06:43:49.063 [INFO ] o.a.j.p.l.n.AbstractConfigurableAsyncServer - IMAP Service
handler connection timeout is: 300
06:43:49.064 [INFO ] o.a.j.p.l.n.AbstractConfigurableAsyncServer - IMAP Service
connection backlog is: 200
06:43:49.530 [INFO ] o.a.j.p.l.n.AbstractConfigurableAsyncServer - Init IMAP
Service done
06:43:49.540 [DEBUG] o.a.j.m.s.StoreMailboxManager - createMailbox
#private:[email protected]:INBOX
06:43:49.722 [DEBUG] o.a.j.m.s.StoreMailboxManager - Loaded mailbox
#private:[email protected]:INBOX
06:43:50.192 [INFO ] o.a.j.i.n.ImapChannelUpstreamHandler - Connection
established from 127.0.0.1
06:43:50.683 [DEBUG] o.a.j.i.d.m.DefaultImapDecoder - Got <tag>: Tag{value=a0}
06:43:50.683 [DEBUG] o.a.j.i.d.m.DefaultImapDecoder - Got <command>: LOGIN
06:43:50.706 [DEBUG] o.a.j.i.p.AbstractAuthProcessor - INBOX exists. No need to
create it.
06:43:50.712 [DEBUG] o.a.j.i.d.m.DefaultImapDecoder - Got <tag>: Tag{value=A1}
06:43:50.713 [DEBUG] o.a.j.i.d.m.DefaultImapDecoder - Got <command>: SELECT
06:43:50.732 [DEBUG] o.a.j.m.s.StoreMailboxManager - Loaded mailbox
#private:[email protected]:INBOX
06:43:50.835 [DEBUG] o.a.j.i.d.m.DefaultImapDecoder - Got <tag>: Tag{value=A2}
06:43:50.836 [DEBUG] o.a.j.i.d.m.DefaultImapDecoder - Got <command>: UID
06:43:50.837 [DEBUG] o.a.j.i.d.p.UidCommandParser - Got <command>: UID FETCH
06:43:50.859 [DEBUG] o.a.j.m.s.StoreMailboxManager - Loaded mailbox 1
#private:[email protected]:INBOX
* 1 FETCH (FLAGS (\Recent) UID 1)
[...]
* 100 FETCH (FLAGS (\Recent) UID 100)
A2 OK FETCH completed.
* OK
[MAILBOXID (1)] Ok
* FLAGS (\Answered \Deleted \Draft \Flagged \Seen)
* 137 EXISTS
* 137 RECENT
* OK [UIDVALIDITY 1396946597] UIDs valid
* OK [UNSEEN 1] MailboxMessage 1 is first unseen
* OK [PERMANENTFLAGS (\Answered \Deleted \Draft \Flagged \Seen \*)] Limited
* OK [HIGHESTMODSEQ 137] Highest
* OK [UIDNEXT 138] Predicted next UID
A1 OK [READ-WRITE] SELECT completed.
{code}
We see that the FETCH request is incorrectly executed before the SELECT returns.
This, is not acceptable. As IMAP is a connected protocols, requests are not
independant from each others.
We need a solution to enforce sequencial ordering of IMAP execution at the
channel level.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]