This is clearly a minefield.
I need to know if my server is broken or not.
When a client is inactive it can get unsolicited responses, flag changes
, exists, expunge etc.
According to what I read, if a client does a search and then does
nothing for 45 minutes, the server CANNOT send any expunge messages
because it does not know if the next command MIGHT be a fetch.
Is this really correct, should I only send unsolicited after a command.
In which case, you lose all ability to synchronise clients because of
the command sequence.
As my server stands ATM I can have four clients connected and they all
remain perfectly in sync. However, if I have to start predicting what
the client will do and holding data back indefinably this will result in
all sorts of a mess.
Surly, rather than having a situation where the server has to remember
the state of each client, there should be a server response that tells
the client that its data may be out of sync.
Surly, a client that receives any EXPUNGE should know this.
Rfc3501:
6.4.5. FETCH Command
Arguments: sequence set
message data item names or macro
Responses: untagged responses: FETCH
Result: OK - fetch completed
NO - fetch error: can't fetch that data
BAD - command unknown or arguments invalid
Therefore there is no way that a NO response can be considered a bug in
the server, it's a valid response ! If a client errors in response to a
NO then IT is broken.
NO [NOOPFIRST] wins my vote
Regards
Richard Bang
Floosietek Ltd
[EMAIL PROTECTED]
http://www.floosietek.com