<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
Thanks for the response Ravzan, <br>
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
I attempted what I think is the mentioned solution, and apologies if this is not correct as I do not have a firm grasp of how osips handles branching, but by removing the branch route and doing location lookup in the main route right after the db_alias lookup
 if there are multiple sip users that dbalias resolves to then it's not looking up location for those branches, just the main branch.</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
### CODE ###</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
</div>
        alias_db_lookup("dbaliases");
<div>        if ( !lookup("location") ) {</div>
<div>            sl_send_reply(404, "User not found");</div>
<div>            return(0);</div>
<div>        }</div>
<div class="elementToProof"><br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
### CODE ###</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<div style="font-family: Consolas, "Courier New", monospace; font-weight: normal; font-size: 14px; line-height: 19px; color: rgb(204, 204, 204); background-color: rgb(31, 31, 31);">
<span><span class="ContentPasted0"></span></span></div>
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
So branched INVITEs are just getting routed without being looked up, which routes them back to osips. Is there a way to call the lookup in the main route and have it perform location lookups for all the branches created by dbalias lookup?</div>
<div id="appendonsend"></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);" class="elementToProof">
And in the previous sample that I linked with lookups called from the branch_route, calls will work as long as there's a UAS to call.  So as long as there's 1 branch that hasn't been dropped it will send that out, the only issue is if there are no possible
 endpoints. So if there's no sip users for that extension or no registrations for all sip users, I was trying to check the return code from t_relay and expected if there were no branches then relay would return a -3 response code but it seemingly still returns
 a 1 and a 500 SIP response is sent back to the UAC.  If I can get the t_relay to just return a -3 then all my problems are solved I think.  Or if there's a way to check before the relay if there are still branches to send and if not then respond 404.</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr" class="elementToProof"><span style="">No, this is not the solution :).</span><br>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText"><br>
The problem is you are calling t_relay, but after you evaluate each<br>
branch, it turns out t_relay does not actually relay anything, hence it<br>
returns an error.<br>
<br>
The proper way to do this is to figure out whether you do need to send<br>
any branches before calling t_relay() - this means that after the<br>
alias_db_lookup, you can simply call the lookup() function - if that<br>
fails, you should reply with a 404.<br>
But what I am missing is the 500 message - what happened with the call<br>
to the actual extension? Because from your script, it appears you still<br>
want to keep it as a branch, don't you? Isn't that branch properly sent?<br>
<br>
Also, the 500 sent to the client is very likely sent by the<br>
sl_reply_error() function - you can replace it with a 404. However, I'd<br>
still refactor everything to handle the branches in the main processing<br>
context, not in the branch route.<br>
<br>
My 2cents, best regards,<br>
<br>
Răzvan Crainea<br>
OpenSIPS Core Developer / SIPhub CTO<br>
<a href="http://www.opensips-solutions.com" data-auth="NotApplicable" id="OWA1f73e445-1378-ae94-200b-25aced82d150" class="OWAAutoLink">http://www.opensips-solutions.com</a> /
<a href="https://www.siphub.com" data-auth="NotApplicable" id="OWA4cacafa1-1db6-6fba-45e0-c862c8c7ae7f" class="OWAAutoLink">
https://www.siphub.com</a><br>
<br>
On 9/27/23 13:54, M S wrote:<br>
> Maybe a send_reply(404) after if(!lookup(location)), instead of drop?<br>
><br>
> On Tue, Sep 26, 2023 at 8:30 PM John Sliney <John.Sliney@lcs.com<br>
> <<a href="mailto:John.Sliney@lcs.com" id="OWAc06852ed-5e0d-ebb2-dfed-49fe27c9ba37" class="OWAAutoLink">mailto:John.Sliney@lcs.com</a>>> wrote:<br>
><br>
>     Hi,<br>
><br>
>     I’m currently attempting to take an INVITE from an Asterisk server<br>
>     that is requesting an extension number, perform dbalias lookups to<br>
>     have extensions turned into sip users (x1000 -> test_hardphone) and<br>
>     then do location lookups on those sip users.  There can be multiple<br>
>     sip users for each extension and multiple locations for each sip user.<br>
><br>
>     Using the code below partially works but when there are no location<br>
>     entries for the requested sip user, OpenSIPS returns a 500 and<br>
>     prints out “ERROR:  t_forward_nonack failed” how can I<br>
>     have OpenSIPS instead respond with a 404?<br>
><br>
>     ### CODE ###<br>
><br>
>     modparam("alias_db",        "append_branches",          1)<br>
><br>
>     route {<br>
>          if ( is_from_gw() ) {<br>
>              alias_db_lookup("dbaliases");<br>
>              t_on_branch("sip_user_branch");<br>
>          }<br>
>          route(relay);<br>
>          return(0);<br>
>     }<br>
><br>
>     branch_route[sip_user_branch] {<br>
>          route(lookup_sip_user);<br>
>     }<br>
><br>
>     route[lookup_sip_user] {<br>
>          if ( ! lookup("location")  ) {<br>
>              drop();<br>
>          }<br>
>     }<br>
><br>
>     route[relay] {<br>
>          if ( ! t_relay() ) {<br>
>              sl_reply_error();<br>
>              rtpproxy_unforce();<br>
>              return(0);<br>
>          }<br>
>     }<br>
><br>
>     ### CODE ###<br>
><br>
>     Any help would be appreciated, Thanks<br>
>     _______________________________________________<br>
>     Users mailing list<br>
>     Users@lists.opensips.org <<a href="mailto:Users@lists.opensips.org" id="OWA5696a85b-b9cb-6edc-9edd-4060658487a7" class="OWAAutoLink">mailto:Users@lists.opensips.org</a>><br>
>     <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" data-auth="NotApplicable" id="OWA7980f82e-482c-1103-d918-deebacd4d743" class="OWAAutoLink">
http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
>     <<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" data-auth="NotApplicable" id="OWA316d711d-2812-16cd-b9fa-cf800edab828" class="OWAAutoLink">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>><br>
><br>
><br>
> _______________________________________________<br>
> Users mailing list<br>
> Users@lists.opensips.org<br>
> <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" data-auth="NotApplicable" id="OWA01b4827e-5c87-0ae4-f8b5-6a817507da46" class="OWAAutoLink">
http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
<br>
_______________________________________________<br>
Users mailing list<br>
Users@lists.opensips.org<br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" data-auth="NotApplicable" id="OWA4fdf6cee-f812-c5ac-4c7d-5bc41032298f" class="OWAAutoLink">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</div>
</span></font></div>
</body>
</html>