More comments on concurrency

As mentioned earlier, it is possible for a client to request attributes or contents of messages that are no longer available. Another application might have removed the message from the folder, and the SMAP client has not polled the server for changes to the folder's contents.

With one exception, the server should ignore requests for attributes or content of messages that are no longer available. When the client requests attributes or content of multiple messages, the unavailable messages should simply be omitted from the server's single or multi-line replies. When the client requests a single message, which is no longer available, the server may reply with either an explicit error message, or just a good status line reply, but without any single or multi-line replies containing the requested data.

Another acceptable response in this situation is for the server to return default data. The server can synthesize a short, generic message whose sole contents is the text "This message is no longer available.", and respond to queries as if this message has been put in place of the requested message.

Note

Here's the exception. The server should always remember the unique identifiers of messages. The server should always respond to requests for UIDs, even if the message is no longer available. No two messages in a folder will ever have the same UID, so memorizing them should not be too difficult.