[OpenSIPS-Users] retransmission causes new session

Douglas Lane doug at wd.co.za
Wed May 12 09:46:59 CEST 2010


Hi Guys,

I've been looking into my CDRTool issue of late with a customer, and 
I've noticed a trend to incorrectly captured billing.

What currently happens is the following:

Customer ------- (INVITE) -----------------> OpenSIPS (CSeq 102)
Customer <----- (100 Trying) ---------------- OpenSIPS
Customer <----- (407 Proxy Auth) ---------- OpenSIPS
Customer ------- (ACK) ---------------------> OpenSIPS
Customer ------- (INVITE with Auth) ----> OpenSIPS (CSeq 103)
Customer <----- (100 Trying) ---------------- OpenSIPS
Customer <----- (183 Session Progress) ---- OpenSIPS

And then this happens:

Customer ------- (INVITE with Auth) ----> OpenSIPS (CSeq 103)

According to Wireshark, this frame is an exact copy of the previous 
INVITE with Auth frame - so I can only assume its a retransmission from 
the customer's point of view (maybe our trying and session progress 
didn't get to them).

Anyway, then this causes a whole load of trouble, as our OpenSIPS will 
then do the following:

Customer <----- (100 Trying) ---------------- OpenSIPS
Customer <----- (407 Proxy Auth) ---------- OpenSIPS
Customer ------- (ACK) ---------------------> OpenSIPS
Customer ------- (INVITE with Auth) ----> OpenSIPS (CSeq 104)
Customer <----- (100 Trying) ---------------- OpenSIPS

The next two frames are relayied from our Asterisk server that is doing 
the PSTN connectivity
Customer <----- (491 Request Pending) ---- OpenSIPS (CSeq 104)
Customer <----- (491 Request Pending) ---- OpenSIPS (Retransmission of 
the above according to wireshark)
Customer ------- (ACK) ---------------------> OpenSIPS

Now the disaster is the fact that the first intial invite sets up the 
mediaproxy server for the relay, on CSeq 103. Then CSeq 104 comes in, 
and mediaproxy updates itself, however, the 491 cancels this 
transaction, and then mediaproxy ignores any updates for CSeq 103 - 
including when our Asterisk server receives an ANSWER and sends down the 
200 OK to the customer

While our radius server gets the billing information correctly, 
call-control sees the call as being cancelled, and then calls 
DebitBalance for a sum of 0 (as the call was not answered)m meanwhile 
radius is busy ticking over with rating.

Anyway, what I don't understand is I was under the impression OpenSIPS 
should be able to notice the difference between a new invite, and a 
retransmission and handle it accordingly. I'm assuming there is 
something wrong with my logic, so I was hoping someone could point me in 
the right direction of where to look and start debugging.

I look forward to your assistance.

Thanks
Doug



More information about the Users mailing list