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




Reply via email to