[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CAP 10: 10.1. CAP Commands (CMD) (ABORT/CONTINUE)




Andrea wrote on 01/30/2003 05:16:54 AM:
> >    o  finish sending complete replies to any outstanding "MSG" messages
> >       it has received on that channel, and ensure that the final frames
> >       of those replies have been successfully delivered, i.e.,
> >
> > which tells me that the CS wont accept the session close attempt until it
> > finishes dealing w/the unbounded query; there may be outstanding response
> > messages to send back still as the command progresses!.  Im still no BEEP
> > guru so Ill defer to them when Im slapped and corrected otherwise.
>
> This is implementation independent really. Nothing here says you have
> to complete processing the query, you only need to send a failure
> ANS or RPY to each outstanding command for the channel, before accepting
> the shutdown request.
>
> Do you agree or do I have to get into more details?

I think that the bit about not actually having to complete the command is a bit suspect but Ill leave that to other BEEP savy folks to comment on.

Besides the case in question is not a failure, its where the CS is told just keep processing while the CUA waits.

On the bright side, Im finally able to put a better spin on the question I raised about unbounded commands now that Ive had a weekend to chew on it.  

As Larry noted (but I didnt absorb until I was home), the current peer protocols (IMAP, POP3, etc) use a mode where ALL calls are unbounded and the requestor MUST wait for them to complete (or the net to disconnect, etc.)  As such those UAs have no real recourse but to just drop the network connection when the user clicks on Cancel or takes some action.  This is implicit in their designs and implementations.  In CAP we have taken the philosophy that commands are generally timed so that the CUA can be more interactive w/controlling the CS.  As such I had totally blanked out the need for an unbounded command and I think that PDAs are not related to that discussion as some suggested.

Ok, so now I grok the scenario for it (ie: I built a CUA that acts like older UAs and only does unbounded commands) but Im not sure that preserving that behaviour is a necessary/cool idea.  If we plan to keep unbounded commands in then we really should devise a way to issue a CANCEL command so we dont have to basically drop everything else that is going on on other sessions and reconnect, reauthenticate, etc.  The command can be pretty simple, have it take the channel and CMDID as inputs and then it just cancels the current command on that channel (presumably the unbounded one instead of one that is bounded and thus easily ABORTable).  Also, given that we allow unbounded commands and bounded commands I think a couple lines in the draft to the effect of "If you use unbounded commands then you either MUST wait for them to complete or you have to do ... " would be nice.  At a minimum we should probably have a suggestion about the benefits of bounded vs unbounded and why...  (After all there have to be other folks out there who step in it just like I did...)

Given that we are building entirely new UAs and a new protocol here, does anyone see a pressing need to have unbounded commands?  If we made all commands unbounded then that would remove the need for an explicit cancel mechanism and some prose in the draft.  Im flexible either way now but applying the KISS mantra makes me lean towards no unbounded commands in CAP...  Others??

> I can understand your points, I can't really question their validity,
> however no matter what you do, you will still have to deal with
> interactive CUAs which need to deal with a user. A CU might decide
> to cancel a command before the latency expires, so we still need a
> mechanism for that, right?

I would expect that a CUA would NOT set timeouts so high as to be essentially unbounded.  I would also expect them to not be too low so as to generate lots of excessive traffic (CONTINUE;LATENCY=1 is a BAD idea...).   Since (nearly?) all of the responses so far have been "Well I may want to cancel the command because the user pressed Esc or clicked on Cancel or..." I think that nearly all of us view the SOP as being bounded commands.    With current peer protocols like POP3 or IMAP the UA simply terminates the connection and considers the task done.  This is still an option but not as gentle as a CANCEL command.

If you think we need a CANCEL command even for bounded commands Id at least be open to hearing more on that...

Bruce
===========================================================================
Bruce Kahn                                INet: Bruce_Kahn@xxxxxxxxxxxxxxxx
Messaging & Collaboration                 Phone: 978.399.6496
IBM Software Group                         FAX: and nothing but the FAX...
Standard disclaimers apply, even where prohibited by law...