[Users] problem to detect a loop - load_contacts()/next_contacts()

Bogdan-Andrei Iancu bogdan at voice-system.ro
Thu Dec 8 16:35:55 CET 2005


Hi Matteo,

just a fast question: what is the IP of the server? is it possible to 
have a spiral?

regards,
bogdan



Matteo Piazza wrote:

> I have realized a serial forking with load_contacts() and 
> next_contacts(), but i have this problem:
> When the first time arrive the invite messages the contacts are loaded 
> by the function load_contacts(). So when the call flow enters in the 
> failure_route I can load the second contact. At this point the script 
> reload another time the contacts. But in this way Is is impossible to 
> load the third contact, because the script load the preference of the 
> new contact.
> For example:
> I call 309 at domain.it,
> the script loads 309 contacts and call the fisrt: 309 at domain.it
> 309 not answered,
> the scrip enters in failure route,
> it loads the 400 at domain.it and call 400,
> At this moment I loads the contacts of 400 at domain.it WRONG!!!!!
>
>
> In which way it is possibile to load the contacts only the firt time.
> I hope that the problem is clear.
>
> Best
> Matteo
> =======================================
>
>
> This is my location table
> ============================================================
>
> username | domain | contact                            |  q
> 400      |        | sip:400 at 192.168.9.193             | 1.00
> 401      |        | sip:400 at 192.168.9.194             | 1.00
> 308      |       | sip:308 at 192.168.9.181:5060          | 1.00
> 309      |       | sip:309 at 192.168.9.131;transport=udp | 1.00
> 309      |       | sip:400 at 192.168.9.97          | 0.80
> 309    |    | sip:401 at 192.168.9.97          | 0.60
>
>
>
> ....................
> ....................
> route{
> ......
> ......
> ......
>
>  if(load_contacts()){
>     xlog("L_ERR","LOAD CONTACTS!\n");
>  };
>
>  if(next_contacts()){
>     xlog("L_ERR","NEXT CONTACT!\n");
>  };
>
>  t_on_failure("1");
>  t_relay();
>  exit;
> }
>
> route[1] {
>  log(1,"ROUTE 1 !\n");
>   if (!t_relay()) {
>         sl_reply_error();
>         };
>         exit;
> }
>
>
> route[2] {
>         # send it out now; use stateful forwarding as it works reliably
>         # even for UDP2TCP
>         log(1,"ROUTE 2 !\n");
>         t_on_failure("1");
>         if (!t_relay()) {
>                 sl_reply_error();
>         };
>         exit;
> }
>
> failure_route[1] {
>  log(1,"FAILURE ROUTE !\n");
>  if (t_check_status("408")){
>         if (next_contacts()) {
>                 log(1,"NUOVO CONTATTO !\n");
>                 route(2);
>                 exit;
>         };
>  };
> exit;
> }
>
> This is the output:
> 7(5504) LOAD CONTACTS!
>  7(5504) NEXT CONTACT!
> 14(5518) FAILURE ROUTE !
> 14(5518) NUOVO CONTATTO !
> 14(5518) ROUTE 2 !
>  6(5502) LOAD CONTACTS!
>  6(5502) NEXT CONTACT!
>
>
>
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>





More information about the sr-users mailing list