Hi Liviu,
 I think that it was me that made that happen.
Backtracking my steps what I did was first I call sl_send_reply("100", "-Trying-")
because I don't know for how long I'm going to talk to the http server.
Second from route(PSTN) I call route(CGR_LCR_REQ) which in turn calls route(CGR_LCR_REPLY) to finish processing the request, and that route calls another route down the chain of routes that I'm calling for that message,that has nothing to do with the route that I called in the first place. And by the way I forgot and I quote from Types of routes page "Default action : if the request is not either forwarded nor replied, the route will simply discard the request at the end." And because I thought that it will auto magically continue execution from the line where I called route(CGR_LCR_REQ) and route(PSTN) in return . At this point I have a deadlock between Opensips that finished message processing and a client that is waithing for a reply. What I did was I rearranged the script execution where I first called route(CGR_LCR_REQ) instead of route(PSTN) and when that chain of routes finished successfully I called route(PSTN) at the end which continued executing the rest of PSTN route logic. I think that I got it right now but if you think from my elaborate explanation I did something wrong please correct me.

Hi Koce,

Does the first async rest_post() finish successfully by having its
resume route run? Could you please add some xlog() debugging prints, so
we can better understand where it gets stuck exactly?

Also, do you notice this behaviour with any HTTP server (100%
reproducible), or is it a timing corner-case of your scenario?

Liviu Chircu
OpenSIPS Developer
http://www.opensips-solutions.com

On 14.03.2016 23:16, Koce wrote:
>Hello I'm using Opensips 2.1 git version and when I try to execute the
>outline from the routing logic below I get Opensips hanging on
>route(CGR_LCR_REQ) when it finishes executing.What I'm trying to say
>is it hangs on that particular line as it is expecting something.
>So I'm wondering if I need to do a return on the end of that chained
>routing block?
>Also is there some kind of depth limit that Opensips can go in the
>routing route calling logic where it can't find it's way back,because
>If I comment out route(CGR_LCR_REQ) everything continues execution as
>planned?
>######################################
>if (is_method("INVITE")) {
>   sl_send_reply("100", "-Trying-");
>   xlog("L_INFO", "LOOKUPLOCATION_INVITE: [F=$fu R=$ru D=$du M=$rm
>IP=($si:$sp $Ri:$Rp) ID=$ci]");
>   if ($rU=~"(\+|00)?[0-9]{4,15}") {#PSTN LOGIC
>     route(PSTN);
>     xlog("L_INFO", "PSTN_PROCESSED_INVITE: [F=$fu R=$ru D=$du M=$rm
>IP=($si:$sp $Ri:$Rp) ID=$ci]");
>   }
>#rest of is_method("INVITE") route logic
>######
>route[PSTN]{
>   route(CGR_LCR_REQ); #hanging
>#rest of PSTN route logic
>}
>
>route[CGR_LCR_REQ]{
>#var assignment and route logic
>async(rest_post(),,,CGR_LCR_REPLY)
>}
>
>route[CGR_LCR_REPLY]{
>#route logic and var assignment
>async(rest_post(),,,CLI-REQ)
>}
>#and a few more route blocks calling async as outlined between
>CGR_LCR_REQ and CGR_LCR_REPLY
>

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to