From miconda@gmail.com Mon May 5 18:18:19 2014 From: Daniel-Constantin Mierla To: sr-dev@lists.kamailio.org Subject: Re: [sr-dev] Forcing TCP connection reuse doesn't use the failure_route when the connection has gone. Date: Mon, 05 May 2014 18:18:11 +0200 Message-ID: <5367B9C3.8030602@gmail.com> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2014130397==" --===============2014130397== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Hello, there are two ways: - handle the response code for t_relay() together with setting the flag for not sending responses internally - set http://kamailio.org/docs/modules/stable/modules/tm.html#tm.p.failure_exec_mode Cheers, Daniel On 01/05/14 19:54, Waite, Hugh wrote: > > I have an edge-proxy which accepts TCP connections from clients. When > I know that the clients are behind NATs (for example), I use the > set_forward_no_connect() function to force connection reuse and avoid > timeouts. In the case where the connection has already gone, the > system sends a “477 Unfortunately error on sending to next hop > occurred (477/TM)” response back to the registrar. > > These connections are using outbound, so I would like to convert this > into a “430 Flow Failed” response to the registrar, but the 477 > response doesn’t seem to trigger the onreply_route or failure_route. > > Is there a way of trapping and handling this failure? If not, do we > need more flexibility in handling this particular tcp_send error (or > other similar ones)? Other systems may wish to try additional > destinations from the failure route. > > Snippets of my cfg and logs are below. The con_reuse flag is checked > in tcp_send at tcp_main.c:1846 > > Regards, > > Hugh > > route[RELAY] { > > xlog("L_INFO", "$rm: route[RELAY]\n"); > > loose_route(); > > $var(lr_ret) = $rc; > > if ($var(lr_ret) == 2) { > > xlog("L_INFO", "$rm: loose route with > outbound\n"); > > t_on_failure("FAIL_OUTBOUND"); > > set_forward_no_connect(); > > if (t_relay() < 0) { > > xlog("L_WARN", "$rm: loose route with outbound failed\n"); > > sl_send_reply("500", "Something bad happened"); > > } > > exit; > > } > > . . . > > } > > May 1 17:01:08 kamailio-cep[28226]: INFO: