> From: Hyoungjoon Park
>
> I wonder if a user's INVITE transaction can be cancelled by
> other user. The
> scenario is as follows;
>
> User A                      User B                User C
>     ----------INVITE----------->
>    <--------100/180------------
>
>    <----------To cancel the transaction----------
>
>     ----------CANCEL---------->
>     <--------200 OK-------------
>
> The Question is that whether the user C is able to cancel the
> transaction
> between the user A and B.
> What kind of method can be used ? Would it be a REFER with
> method=cancel or
> just CANCEL ?

The transaction can't be canceled by someone else sending a CANCEL because a
CANCEL applies to a request only if it was sent within the same transaction,
from the same end, as the request being canceled.

If User B wanted to achieve this effect, it would send a 6xx class response,
which would cause User A to CANCEL any remaining forks of the INVITE.

I do not believe that there is any mechanism within SIP by which User C
could instruct User B to send a 6xx response.  User C might send User A a
REFER with method=CANCEL, but REFER does not provide User C a way to
instruct User A to insert the CANCEL into an existing dialog, so the CANCEL
will have no effect.

It might be possible for User C to forge a message from User B to User A,
which could cause User A to terminate the transaction.  But User B would be
unaware that the transaction had ended.

One method might achieve an effect similar to canceling -- User C could send
an INVITE with a Replaces: header specifying the dialog between User A and
User B.  User A would send OK to User C, establishing a dialog A -- C, and
it would CANCEL the INVITE to User B.  Once that was accomplished, User C
could send a BYE for the new dialog.

Dale

_______________________________________________
Sip-implementors mailing list
[email protected]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to