[Users] t_on_failure doesn't

Nathan Hawkins utsl at quic.net
Tue Aug 22 14:48:16 CEST 2006


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
>>
>





More information about the sr-users mailing list