[SR-Users] problem with relaying after t_susped() and t_continue()

Daniel-Constantin Mierla miconda at gmail.com
Mon Mar 21 09:55:56 CET 2016


Hello,

haven't looked at error message, but if you call sleep() after
t_suspend(), then you don't gain any benefits, because you still block
the worker process, so you could just do sleep and relay.

If you want to resume execution of an invite after 5 seconds, without
blocking a worker for those 5 seconds, then see:

https://www.kamailio.org/docs/modules/stable/modules/async.html#async.f.async_route

Cheers,
Daniel

On 09/03/16 16:50, Uri Shacked wrote:
>
> I have a problem when using t_suspend() and t_continue().
>
> Let's say I would like to have a 5 sec delay before relaying an INVITE.
>
> For example the following code:
>
> / /
>
> /                route[MYROUTE] {/
>
> /                                t_newtran();/
>
> /                                if (is_method("INVITE")) {/
>
> /                                                t_reply("100",
> "Trying");/
>
> /                                                t_reply("180", "In
> Queue");/
>
> /                                                $sht(a=>$ci::t_index)
> = $T(id_index);/
>
> /                                                $sht(a=>$ci::t_label)
> = $T(id_label);/
>
> /                                               
> $sht(a=>$ci::t_suspended) = 1;/
>
> /                                               
> xlog("L_WARN","SUSPENDING t_index = $sht(a=>$ci::t_index) and t_label
> = $sht(a=>$ci::t_label)");/
>
> /                                                t_suspend();/
>
> /                                                sleep(5);/
>
> /                                                if (t_is_canceled())
> drop;/
>
> /                                               
> $sht(a=>$ci::t_suspended) = 0;/
>
> /                                               
> t_continue("$avp(t_index)","$avp(t_label)","1");/
>
> /                                }///
>
> /                                route(RELAY);/
>
> /                                exit;/
>
> /                }///
>
> /                ///
>
> /                route[1] {/
>
> /                                xlog("L_WARN","After transaction
> continue\n");/
>
> /                                route(RELAY);/
>
> /                                exit;/
>
> /                }///
>
>  
>
> When using this code, I get the following error: 
>
> Mar  9 16:49:32 mysip /usr/local/sbin/kamailio[5260]: WARNING:
> <script>: After transaction continue
>
> Mar  9 16:49:32 mysip /usr/local/sbin/kamailio[5260]: ERROR: <core>
> [resolve.c:1693]: sip_hostport2su(): could not resolve hostname: "mysip"
>
> Mar  9 16:49:32 mysip /usr/local/sbin/kamailio[5260]: ERROR: tm
> [ut.h:319]: uri2dst2(): failed to resolve "mysip"
>
> Mar  9 16:49:32 mysip /usr/local/sbin/kamailio[5260]: ERROR: tm
> [t_fwd.c:1711]: t_forward_nonack(): ERROR: t_forward_nonack: failure
> to add branches
>
> Mar  9 16:49:32 mysip /usr/local/sbin/kamailio[5260]: ERROR: sl
> [sl_funcs.c:363]: sl_reply_error(): ERROR: sl_reply_error used:
> Unresolvable destination (478/SL)
>
> Mar  9 16:49:32 mysip /usr/local/sbin/kamailio[5260]: BUG: tm
> [t_lookup.c:1481]: t_unref(): tm: t_unref: REQ_ERR DELAYED should have
> been caught much earlier for 0x7fd4e727a468: 27 (hex 1b)
>
>  
>
> If I try to t_continue() without any route:
>
> t_continue("$avp(t_index)","$avp(t_label)","");
>
> The call is working great and the following error pops up:
>
> Mar  9 17:10:36 mysip /usr/local/sbin/kamailio[5830]: ERROR: tmx
> [tmx_mod.c:635]: w_t_continue(): empty action lists in route block []
>
>  
>
> Am I doing something wrong?
>
>  
>
> My other question is regarding CANCEL.
>
> Let's assume I suspended the INVITE and in these 5 sec I received
> CANCEL for it.
>
> Is there a short and elegant way to remove the transaction from
> suspension?
>
> For now I do:
>
> / /
>
> /                if (is_method("CANCEL")) {/
>
> /                                if (t_check_trans()) {/
>
> /                                               
> if($sht(a=>$ci::t_suspended) == 1) {/
>
> /                                                               
> t_continue("$sht(a=>$ci::t_index)","$sht(a=>$ci::t_label)","");/
>
> /                                                               
> xlog("L_WARN","After transaction continue\n");/
>
> /                                                }///
>
> /                                                route(RELAY);/
>
> /                                }///
>
> /                                exit;/
>
> /                }///
>
>  
>
> Thanks,
>
> Uri
>
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla
http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio World Conference, Berlin, May 18-20, 2016 - http://www.kamailioworld.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20160321/0b0dcd31/attachment.html>


More information about the sr-users mailing list