[Users] t_on_failure doesn't

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Aug 22 15:50:21 CEST 2006


is generated by t_relay automatically.
actually t_relay may return false only if sending an error reply fails......

regards,
bogdan

Klaus Darilion wrote:

> Is the auto-reply generated in t_relay or at the end of the script? 
> Would this work?
>         if (!t_relay()) {
>         rewrite URI
>         t_relay again?
>         };
>
> regards
> klaus
>
> Bogdan-Andrei Iancu wrote:
>
>> for the moment is not possible - please fill in a bug report on the 
>> tracker to have in mind to work out a solution for this.
>>
>> regards,
>> bogdan
>>
>> Nathan Hawkins wrote:
>>
>>> So am I correct in understanding that there is currently no way to
>>> handle this condition? This seems like a serious problem with using 
>>> TCP.
>>>
>>> Bogdan-Andrei Iancu wrote:
>>>  
>>>
>>>> Hi Nathan,
>>>>
>>>> failure route is called in case of a call failure (negative reply) and
>>>> not if a sending error occurred.
>>>>
>>>> the right way to do it will be to have a way to disable the auto reply
>>>> in case of error in  t_reply() and deal with the error from the 
>>>> script.
>>>>
>>>> regards,
>>>> bogdan
>>>>
>>>> Nathan Hawkins wrote:
>>>>
>>>>  
>>>>
>>>>> I'm trying to use the LCR module to do a failover between two
>>>>> gateways. For testing purposes, I have a gateway record pointed at an
>>>>> IP that isn't used. The problem is, I can't seem to get OpenSER to
>>>>> fail over to the other gateway. I want to use TCP (with TLS when I'm
>>>>> done), but I get this:
>>>>>
>>>>> Jul 20 15:36:57 asiago /usr/sbin/openser[11896]: route[6]: routing to
>>>>> INVITE sip:MYDID at MYIPADDRESS:5060;transport=tcp
>>>>> Jul 20 15:37:17 asiago /usr/sbin/openser[11896]: ERROR:
>>>>> tcp_blocking_connect: timeout (10)
>>>>> Jul 20 15:37:17 asiago /usr/sbin/openser[11896]: ERROR:
>>>>> tcpconn_connect: tcp_blocking_connect failed
>>>>> Jul 20 15:37:17 asiago /usr/sbin/openser[11896]: ERROR: tcp_send:
>>>>> connect failed
>>>>> Jul 20 15:37:17 asiago /usr/sbin/openser[11896]: msg_send: ERROR:
>>>>> tcp_send failed
>>>>> Jul 20 15:37:17 asiago /usr/sbin/openser[11896]:
>>>>> ERROR:tm:t_forward_nonack: sending request failed
>>>>>
>>>>> (IP and username censored.)
>>>>>
>>>>> OpenSER sends this to the caller:
>>>>> SIP/2.0 477 Unfortunately error on sending to next hop occurred 
>>>>> (477/TM)
>>>>>
>>>>> Why can't I catch this with either the return code from t_relay or
>>>>> the failure route?
>>>>>
>>>>> It will go to the failure route if I get a reply back from the next
>>>>> hop. But I need to fail to the other gateway.
>>>>>
>>>>> The relevent parts of the configs are shown below. (Addresses 
>>>>> censored.)
>>>>>
>>>>> Any help would greatly appreciated.
>>>>>
>>>>> Thanks,
>>>>>
>>>>>   ---Nathan
>>>>>
>>>>>
>>>>> Config snippet:
>>>>>
>>>>>   # ok, so maybe try a gateway...
>>>>>   if( load_gws() ) {
>>>>>       xlog("L_INFO","route[3]: gateway routing $rm $ru");
>>>>>       t_on_failure("1");
>>>>>       route(6);
>>>>>       return;
>>>>>   }
>>>>> }
>>>>>
>>>>> route[6] {
>>>>>   xlog("L_INFO","route[6]: $rm $ru");
>>>>>   t_on_failure("1");
>>>>>   t_on_reply("1");
>>>>>   if (!next_gw()) {
>>>>>       xlog("L_INFO","route[6]: no more gateways for $ru");
>>>>>       exit;
>>>>>   }
>>>>>   xlog("L_INFO","route[6]: routing to $rm $ru");
>>>>>   if(!t_relay()) {
>>>>>       xlog("L_INFO","route[6]: t_relay returned $rc");
>>>>>       sl_reply_error();
>>>>>   }
>>>>>   return;
>>>>> }
>>>>>
>>>>> failure_route[1] {
>>>>>   xlog("L_INFO","failure_route[1]: $rm $ru");
>>>>>   t_on_failure("1");
>>>>>   if(t_check_status("404")) {
>>>>>       xlog("L_INFO","failure_route[1]: failing call with 404 for 
>>>>> $ru");
>>>>>       return;
>>>>>   }
>>>>>   if (!next_gw()) {
>>>>>       xlog("L_INFO","route[6]: no more gateways for $ru");
>>>>>       exit;
>>>>>   }
>>>>>   append_branch();
>>>>>   xlog("L_INFO","failure_route[1]: sending $rm $ru");
>>>>>   if(!t_relay()) {
>>>>>       xlog("L_INFO","route[6]: t_relay returned $rc");
>>>>>   }
>>>>>   return;
>>>>> }
>>>>>
>>>>>
>>>>> Gateways:
>>>>>
>>>>> mysql> select * from gw where grp_id=4;
>>>>> +---------+--------+-----------+------+------------+-----------+--------+ 
>>>>>
>>>>>
>>>>> | gw_name | grp_id | ip_addr   | port | uri_scheme | transport |
>>>>> prefix |
>>>>> +---------+--------+-----------+------+------------+-----------+--------+ 
>>>>>
>>>>>
>>>>> | ithaka  |      4 | CENSORED | 5060 |       NULL |         2 | 
>>>>> NULL   |
>>>>> | larink  |      4 | BAD_ADDRESS | 5060 |       NULL |         2 |
>>>>> NULL   |
>>>>> +---------+--------+-----------+------+------------+-----------+--------+ 
>>>>>
>>>>>
>>>>> 2 rows in set (0.00 sec)
>>>>>
>>>>>
>>>>> ithaka is a working OpenSER proxy. larink is an empty IP address.
>>>>> (There used to be a server named larink.)
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at openser.org
>>>>> http://openser.org/cgi-bin/mailman/listinfo/users
>>>>>
>>>>>     
>>>>
>>>
>>>  
>>>
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at openser.org
>> http://openser.org/cgi-bin/mailman/listinfo/users
>
>





More information about the Users mailing list