<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">That is what failure_routes are for. You can “catch” the 404 in a failure_route and choose somewhere else to attempt to send the call. You don’t have to just send back the response all the time.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">But what I think David was trying to ask is just why you are combining the lb_start and lookup calls always into a single if statement. This is very confusing and will end up with lb_start and/or lookup being called more than once in many
 cases. I don’t use the load_balancer module, but I think calling lb_start multiple times in the same call/transaction may skew the load balancing stats.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In your code snippet, you are even calling both lb_start and lookup again within if legs where their return values have already been checked.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:black">Ben Newlin </span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Users <users-bounces@lists.opensips.org> on behalf of Michael Vale via Users <users@lists.opensips.org><br>
<b>Reply-To: </b>Michael Vale <masked@vale.ski>, OpenSIPS users mailling list <users@lists.opensips.org><br>
<b>Date: </b>Sunday, April 5, 2020 at 9:57 AM<br>
<b>To: </b>David Villasmil <david.villasmil.work@gmail.com>, OpenSIPS users mailling list <users@lists.opensips.org><br>
<b>Subject: </b>Re: [OpenSIPS-Users] using load balancer and lookup together<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Ok, to explain,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Using your logic,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">To call say '555' will goto Voicemail, if I disable voicemail it will return a 404 instead of going to the load balancer.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">That's fine, if 555 is an extension, but if it's (for this example) a PSTN number (or a all-else catch all, like I'm trying to achieve) thats not OK because I get a 404 rather than it getting routed to the load balancer.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If 555 is an extension/user the call will go through to the registered extension, but if it's not registered in the usrloc table, it goes to 404, instead of the load balancer.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If I reverse the logic, It will goto the load balancer even if it's a registered extension, or Too Many Hops, depending on how I adjust the logic.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I cannot seem to create a catch all for non-usrloc registered extension calls to goto the load balancer otherwise return a 404.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I hope I explained it well enough. I will keep trying,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Michael.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">On Sun, 2020-04-05 at 11:47 +0100, David Villasmil wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #729FCF 1.5pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">Why are you trying to do all at once?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Why not first do the lookup <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://github.com/davidcsi/kamailio-private-public/blob/a81d7f777a8c5ee2dbb32311f7e6b5a3cf94bf32/kamailio.cfg#L771">https://github.com/davidcsi/kamailio-private-public/blob/a81d7f777a8c5ee2dbb32311f7e6b5a3cf94bf32/kamailio.cfg#L771</a><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">and then start load balancing?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://github.com/davidcsi/kamailio-private-public/blob/a81d7f777a8c5ee2dbb32311f7e6b5a3cf94bf32/kamailio.cfg#L1109">https://github.com/davidcsi/kamailio-private-public/blob/a81d7f777a8c5ee2dbb32311f7e6b5a3cf94bf32/kamailio.cfg#L1109</a><o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Do you have some special need to fulfill?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">David<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Sun, 5 Apr 2020 at 06:34, Michael Vale via Users <<a href="mailto:users@lists.opensips.org">users@lists.opensips.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #729FCF 1.5pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">hi,<br>
<br>
perhaps this can be solved with a failure route and or a check status<br>
but i dont know and it would be nice if i could do it without it.<br>
<br>
no matter how i write the script, either a uac to uac call goes to the<br>
load balancer or the load balancer is stuck with a 404 reply from the<br>
script or uac to uac works but when one end is not registered it goes<br>
to the load balancer instead of getting a 404.<br>
<br>
i've tried failure routes and get the same problem.  here is a snippet.<br>
<br>
       if (!lb_start(1,"pstn")) && (!lookup("location","m",)) {<br>
                lb_disable_dst();<br>
                #route(relay);<br>
                #send_reply(404,"No user or gateway");<br>
                        if (lb_start(1,"pstn")) {<br>
                                send_reply(500,"SIPSIPSIPS");<br>
                                #       t_relay();<br>
                                exit;<br>
                        }<br>
#               exit;<br>
                } else if (lookup("location","m")) &&<br>
(!lb_start(1,"pstn")) {<br>
                        lb_disable_dst();<br>
                        route(relay);<br>
                        exit;<br>
                } else if (lb_start(1,"pstn")) &&<br>
(lookup("location","m")) {<br>
                        lb_disable_dst();<br>
                        route(relay);<br>
                        exit;<br>
                } else if (!lookup("location","m")) &&<br>
(!lb_start(1,"pstn")) {<br>
                        send_reply(404,"Not Found");<br>
                        exit;<br>
                } else if (lb_start(1,"pstn")) &&<br>
(!lookup("location","m")) {<br>
#                       #lb_disable_dst();<br>
                        if (!lookup("location","m")) {<br>
                                route(relay);<br>
                                exit;<br>
                        }<br>
                        if (lookup("location","m")) {<br>
                                lb_disable_dst();<br>
                                route(relay);<br>
                                exit;<br>
                        }<br>
                }<br>
<br>
thanks in advance,<br>
<br>
michael.<br>
<br>
<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><o:p></o:p></p>
</blockquote>
</div>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">Regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">David Villasmil <o:p></o:p></p>
<div>
<p class="MsoNormal">email: <a href="mailto:david.villasmil.work@gmail.com" target="_blank">
david.villasmil.work@gmail.com</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">phone: +34669448337<o:p></o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
</body>
</html>