Module imap_codec::state[][src]

Expand description

3. State and Flow Diagram

Once the connection between client and server is established, an IMAP4rev1 connection is in one of four states. The initial state is identified in the server greeting. Most commands are only valid in certain states. It is a protocol error for the client to attempt a command while the connection is in an inappropriate state, and the server will respond with a BAD or NO (depending upon server implementation) command completion result.

          +----------------------+
          |connection established|
          +----------------------+
                     ||
                     \/
   +--------------------------------------+
   |          server greeting             |
   +--------------------------------------+
             || (1)       || (2)        || (3)
             \/           ||            ||
   +-----------------+    ||            ||
   |Not Authenticated|    ||            ||
   +-----------------+    ||            ||
    || (7)   || (4)       ||            ||
    ||       \/           \/            ||
    ||     +----------------+           ||
    ||     | Authenticated  |<=++       ||
    ||     +----------------+  ||       ||
    ||       || (7)   || (5)   || (6)   ||
    ||       ||       \/       ||       ||
    ||       ||    +--------+  ||       ||
    ||       ||    |Selected|==++       ||
    ||       ||    +--------+           ||
    ||       ||       || (7)            ||
    \/       \/       \/                \/
   +--------------------------------------+
   |               Logout                 |
   +--------------------------------------+
                     ||
                     \/
       +-------------------------------+
       |both sides close the connection|
       +-------------------------------+

(1) connection without pre-authentication (OK greeting)
(2) pre-authenticated connection (PREAUTH greeting)
(3) rejected connection (BYE greeting)
(4) successful LOGIN or AUTHENTICATE command
(5) successful SELECT or EXAMINE command
(6) CLOSE command, or failed SELECT or EXAMINE command
(7) LOGOUT command, server shutdown, or connection closed

Enums

State of the IMAP4rev1 connection.