> 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
