<div dir="ltr"><div>Thanks, have been working on this and it is working.<br><br></div>Btw, I would like to know, is there a way to resume route while using async avp_db_query? As currently setting/declaring another async route for DB query, looking for resume route in main routing script.<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 24, 2017 at 6:45 AM, Bogdan-Andrei Iancu <span dir="ltr"><<a href="mailto:bogdan@opensips.org" target="_blank">bogdan@opensips.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<tt>Hi Ahmed,<br>
<br>
Note the $rc holds the return code of the LAST executed
statement/instruction/function in the script. In the first case
you do it right by saving the ret code of the avp_db_query into a
separate variable, so you can use it even later.<br>
<br>
In the sync script, the $rc, when entering the resume route, it
will hold the return code of the avp_db_query() function. But the
$rc will be changed when doing the xlog(), the if(), etc...So when
you do the last xlog(), the $rc will have nothing to do with the </tt><tt>avp_db_query().
If you need it later in the script, better save it, as you do in
the first example.<br>
<br>
Regards,<br>
</tt>
<pre class="m_8980027315952255566moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a class="m_8980027315952255566moz-txt-link-freetext" href="http://www.opensips-solutions.com" target="_blank">http://www.opensips-solutions.<wbr>com</a></pre><div><div class="h5">
<div class="m_8980027315952255566moz-cite-prefix">On 01/20/2017 01:31 AM, Ahmed Munir
wrote:<br>
</div>
</div></div><blockquote type="cite"><div><div class="h5">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>Hi,<br>
<br>
</div>
Currently I'm trying to use async fucntion for
avp_db_query. The issue I'm facing while using it as not
retrieving or returning correct return code and not
execute later part of the routing script. See old &
new DB queries;<br>
<br>
</div>
Without Async:<br>
----------------------<br>
route[1]{<br>
...<br>
<br>
if($var(Outpluseflag) == 0) {<br>
avp_db_query("SELECT Outpulse_number,setid
FROM Prefix_data where Program_prefix =
'$var(pg_prefix)'", "$avp(outpluse), $avp(trunkid)");<br>
$var(res) = $retcode; # or you can just
use $retcode!<br>
xlog("--------- OB Route 1-1 DB fetched
value outpluse -> $avp(outpluse) | trunkid ->
$avp(trunkid) | Return Code: $rc | Var Res:
$var(res)-------");<br>
if ($var(res) > 0) {<br>
cache_store("local", "DID_$tU",
"$avp(outpluse)", 60);<br>
cache_store("local",
"Trunk_$tU", "$avp(trunkid)", 60);<br>
}<br>
#xlog("DB fetched value outpluse ->
$avp(outpluse) | trunkid -> $avp(trunkid) | Return Code
-> $var(res)");<br>
xlog("--------- OB Route 1-2 DB fetched
value outpluse -> $avp(outpluse) | trunkid ->
$avp(trunkid) | Return Code: $rc | Var Res:
$var(res)-------");<br>
}<br>
</div>
}<br>
<br>
With Async:<br>
-------------------<br>
</div>
route[1]{<br>
<br>
</div>
<div>...<br>
<br>
<div>
<div>
<div>
<div>if($var(Outpluseflag) == 0) {<br>
async(avp_db_query("SELECT Outpulse_number,setid
FROM Prefix_data where Program_prefix =
'$var(pg_prefix)'", "$avp(outpluse),
$avp(trunkid)"),ob_route_1);<br>
}<br>
}<br>
<br>
</div>
<div>route[ob_route_1]{<br>
xlog("--------- OB Route 1-1 DB fetched value
outpluse -> $avp(outpluse) | trunkid ->
$avp(trunkid) | Return Code: $rc-------");<br>
<br>
if ($rc > 0) {<br>
cache_store("local", "DID_$tU",
"$avp(outpluse)", 60);<br>
cache_store("local", "Trunk_$tU",
"$avp(trunkid)", 60);<br>
}<br>
xlog("--------- OB Route 1-2 DB fetched value
outpluse -> $avp(outpluse) | trunkid ->
$avp(trunkid) | Return Code: $rc-------");<br>
<br>
}<br clear="all">
</div>
<div>
<div><br>
<br>
</div>
<div>The records in xlog I'm getting without using
async;<br>
<br>
Jan 19 18:05:39 qorblpsisprxyd1
/usr/sbin/opensips[14040]: --------- OB Route 1-1 DB
fetched value outpluse -> <a href="tel:(609)%20902-0000" value="+16099020000" target="_blank">6099020000</a> | trunkid
-> 117 | Return Code: 1 | Var Res: 1-------<br>
Jan 19 18:05:39 qorblpsisprxyd1
/usr/sbin/opensips[14040]: --------- OB Route 1-2 DB
fetched value outpluse -> <a href="tel:(609)%20902-0000" value="+16099020000" target="_blank">6099020000</a> | trunkid
-> 117 | Return Code: 1 | Var Res: 1-------<br>
<br>
<div>Whereas, records in xlog I'm getting using
async;<br>
<br>
Jan 19 18:10:07 qorblpsisprxyd1
/usr/sbin/opensips[14109]: --------- OB Route 1-1
DB fetched value outpluse -> <a href="tel:(609)%20902-0000" value="+16099020000" target="_blank">6099020000</a> |
trunkid -> 117 | Return Code: 1-------<br>
Jan 19 18:10:07 qorblpsisprxyd1
/usr/sbin/opensips[14109]: --------- OB Route 1-2
DB fetched value outpluse -> <a href="tel:(609)%20902-0000" value="+16099020000" target="_blank">6099020000</a> |
trunkid -> 117 | Return Code: 0-------<br>
<br>
</div>
<div>Is there is way to properly retain the
$retcode/$rc in version 2.2.2? Seems like using
async return code(s) are not properly set or the
avp variables are not setting up correct using
async statement.<br>
<br>
</div>
<div>Please advise, if the above async db statement
is correct as shared in sample above.<br>
</div>
<br>
<br>
</div>
<div>-- <br>
<div class="m_8980027315952255566gmail_signature">Regards,<br>
<br>
Ahmed Munir Chohan<br>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="m_8980027315952255566mimeAttachmentHeader"></fieldset>
<br>
</div></div><pre>______________________________<wbr>_________________
Users mailing list
<a class="m_8980027315952255566moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a>
<a class="m_8980027315952255566moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-<wbr>bin/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
</div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Regards,<br><br>Ahmed Munir Chohan<br><br></div>
</div></div>