[OpenSIPS-Users] retransmission causes new session

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed May 12 10:50:24 CEST 2010


Hi Douglas,

The issue may be related to the fact you have the nonce reusage check 
enabled but you do not process the auth requests in a stateful manner 
(like not doing t_newtran ) before auth part.

What is happening is that the the retransmission (due stateless 
processing in your script) hits again the auth code - here the auth is 
denied as the nonce was already used when doing auth for the original 
INVITE; so the retransmission will be differently handled than the 
original request.

Solutions:
    1) force statefull processing before auth code, so that TM will 
automatically handle retransmissions (use t_newtran)
    2) disable the nonce reusage check (this will reduce the security on 
the system) - see http://www.opensips.org/html/docs/modules/1.6.x/auth.html

Regards,
Bogdan

Douglas Lane wrote:
> 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
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>   


-- 
Bogdan-Andrei Iancu
www.voice-system.ro




More information about the Users mailing list