On Sun, 4 Jan 2004, David Harris wrote:
> What I want to know now is "why is the Exchange server using this
> extension?".

It is "not incorrect" for Exchange to send it without client permission.
flag-extension is part of the rule of mbx-list-flags (via mbx-list-oflag)
in RFC 3501, thus a server *may* send unilaterally and a client is obliged
to handle it.

Note that there are other places in the base specification which permit
the server to do unilateral extended things without client permission.
The most notable examples are system flags (another flag-extension) and
BODYSTRUCTURE (body-extension).  Response codes are arguably another
example.

More to the point, though that's what RFC 3348 requires; there is no
client-based trigger for the CHILDREN extension.  RFC 3348 choose to go
this route rather than have a separate command to enable it.  I did not
like this for a different reason: \HasChildren and \HasNoChildren are
expensive to calculate in a UNIX filesystem based server, and thus I would
not want to do the work unless I knew that the client cared.

This is one of the things that has lead to the listext work in IMAPEXT.
Clearly we did not want to add CLIST and CLSUB and CRLIST and CRLSUB, but
that is where we were heading if we insist upon a client trigger for
CHILDREN.

> Or am I simply misunderstanding this issue? Is it in fact legal for a
> server to issue any response it wants in this case?

Yes, you misunderstood; but no, it isn't legal for the server to issue
just "any response it wants".  However, it should be noted that there *is*
some extensibility in certain server responses that the base specification
requires all clients to accept, even if it doesn't say what those
responses mean.  The idea is that such things as flags and BODYSTRUCTURE
and response codes can be extended and a compliant client will just ignore
the extended data rather than barfing.

-- Mark --

http://staff.washington.edu/mrc
Science does not emerge from voting, party politics, or public debate.
Si vis pacem, para bellum.

Reply via email to