Cool. So in theory, i should just be able to place
t_check_trans();
right inline in my script in place of all my incorrect logic and it will
just take care of everything, right? If I am reading this correctly, I
don't even need to conditionally check to see the result as I am only
concerned about the retransmission scenario and the t_check_trans() call
will break/exit the script...
Thanks for your help.
On Mon, Aug 30, 2010 at 1:28 PM, Uriel Rozenbaum <uriel.rozenbaum(a)gmail.com>
wrote:
Hi,
Check t_check_trans() from tm module.
It does all on its own
http://kamailio.org/docs/modules/1.5.x/tm.html#id2509242
Cheers,
Uriel
On Mon, Aug 30, 2010 at 2:19 PM, Geoffrey Mina <geoffreymina(a)gmail.com>
wrote:
> Hello,
> I have a question about what the proper way to handle a duplicate
> presentation of an INVITE is. On occasion I am seeing some packet loss
> and/or timing issues which are causing some of my end-points to
> retransmit
> the INVITE. Here is what I am doing in the most basic sense:
>
>
> ITSP (
Bandwidth.com) --> INVITE --> KAMAILIO --> DISPATCHER -->
Asterisk
> (B2BUA)
>
>
> I am seeing
Bandwidth.com send an INVITE which I already received. I
> keep
> track of all running transactions in a htable which has a key of
>
> $ci::$cs::$ft (as per RFC 3261).
>
> If I get an invite for something which already has a key in the hashmap,
> I
> am currently sending a "482 Loop Detected", but I don't think that
is
> correct as it causes the whole call to tear down instead of letting it
> continue and assuring
Bandwidth.com that I received the initial INVITE
> and
> am currently working on it.
>
> This is what I am currently doing:
>
> ##
> ## Check to make sure we don't already have an active
> ## transaction for this call-id, c-seq, and from-tag
> ## RFC3261 - 8.2.2.2
> ##
> ## We are going to add a key for this unique record if one
> ## doesn't already exist. The key automatically times out
> ## after 30 seconds, so we need not worry about cleanup
> ##
> if($sht(loop_check=>$ci::$cs::$ft) == null){
> xlog("L_INFO","No transaction found, adding to our
> hashtable\n");
> $sht(loop_check=>$ci::$cs::$ft) = 1;
> }else{
> xlog("L_ERR","Loop Detected: $ci::$cs::$ft\n");
> sl_send_reply("482","Loop Detected - Duplicate Session
> Presentation");
> exit;
> }
>
> Can I just swallow the second INVITE and do an exit; in my script?
> Should I do an sl_send_reply(100,"Trying")?
>
> Any advice would be greatly appreciated.
>
> Thanks,
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users(a)lists.sip-router.org
>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>