[OpenSER-Devel] [Serdev] Possible bug in the tm module in the presence of packet loss/branches

Dan Pascu dan at ag-projects.com
Thu Mar 13 12:01:13 CET 2008


On Thursday 13 March 2008, Rick van Rein wrote:
> Dan,
>
> But, to get involved with the discussion itself, what you are trying to
> do is deny relativity.  

I don't think I am. I'm not speaking of the race condition case where the 
200 OK and the CANCEL arrive at the same time and it order of them can be 
viewed as relative. I can live with the uncertainty in that case and 
users can live with that as well. The issue I raised is with a 200 OK 
that can come much later (10-15 seconds later) and still establish a 
connection even though a CANCEL was issued 10 seconds before it. There is 
no relativity involved there, the order of events is the same for all 
observers involved, yet a user request to cancel the call was ignored 
because some provisional reply was not received. No user would accept 
that he has no control over establishing a call and that his choice to 
end it is ignored.

What I would find useful in this case is that once a CANCEL has arrived, 
all call setup activities should cease on all branches, with or without 
provisional replies and if a 200 OK comes later it should be ignored and 
instead a CANCEL should be forwarded to indicate that the 200 OK is late 
and is no longer accepted by the originator. Maybe this is not specified 
by the RFC, but I believe it to be a much better choice than to forward 
the 200 OK, then ACK it and then send a BYE to close the call.

> Also technically, you could setup a maximum to the amount of money to
> be taken from a customer's account for things like call setup or
> minutes. If the numbers published their cost somewhere, you could
> simply deny their use.  We have a phone system in the Netherlands with
> special "suspect" number ranges (090x "area"codes).  And our operators
> always mention the price of those numbers along with the number itself.
>
> Legally, I am tempted to say that the caller took the initiative to
> ring a number and he should have known better than to ring such an
> expensive number.  But that thought may be the result of living in the
> Netherlands, where operators publish the call price alongside their
> numbers.

I don't know how to say this, because I already said it more than 5 times. 
The issue is _NOT_ about money or a misplaced accounting entry I can 
correct by hand. The issue is about the user not having control over 
canceling his call. Consider this example that involved no money or 
highly priced destinations.

I call a support center for some service, which is listed as being free of 
charge. An initial prompt informs me that if I accept the call, the call 
will be recorded and my SIP address as well as any information I passed 
on during the conversation can be shared with the operator's partners for 
marketing purposes. I do not accept the terms and cancel the call, but 
the system ignores my cancel and still connects me to the service, even 
though it is just to issue a BYE to close it, but I still got connected 
like if I accepted the terms. I had no way of knowing in advance about 
the terms, there is no price listed anywhere, so how can I chose not to 
dial the number in the first place? Do you want to spend you time 
cleaning this situation up, looking up for SIP experts that can testify 
that you were not at fault, that there was no race condition, that is 
just a flaw in the protocol and then trying to get that operator to 
remove you from their databases and whomever they gave those databases 
to, when the wrong is already done and you are already targeted by 
marketing campains that ring your phone at whatever time they please?

On a different perspective, how would you feel if your mobile phone 
operator would tell you that pressing the "end call" button on your 
mobile may be ignored? Would you want to use such a service? 
Because with SIP, that is a very possibility.

-- 
Dan



More information about the Devel mailing list