[sr-dev] appending a new branch in route block

Juha Heinanen jh at tutpro.com
Sun May 16 15:27:51 CEST 2010


if t_relay() fails in route block so that failure route is not executed,
is request uri "consumed" so that if a new branch is added by in the
route block, that branch will be the only remaining one?

in the test that i made, two lcr gws match the request uri.  in route
block i have:

load_gws();
next_gw();  /* sets request-uri to uri of first gw */

while ($true) {

  t_on_branch("BRANCHES");

  if (t_relay()) {
    xlog("Relaying succeeded with result $rc\n");
    exit;
  } else {
    xlog("Relaying failed with result $rc\n");
  };

  if (!next_gw()) { /* tries to append the next gw as a new branch */
    xlog("L_WARN", "No more gws\n");
    send_reply("503", "Service not available");
    exit;
  };

  xlog("found next gw <$ds>\n")

};

and in branch route block BRANCHES i have

branch_route [BRANCHES] {

  xlog("L_INFO", "Relaying $rm <$ru>\n");
  return;

};

when proxy receives a request, i get to syslog (some lcr DBGs are
changed to INFOs):

May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: INFO: lcr [lcr_mod.c:1532]: added gw_uri_avp <1|1|00||lohi.tutpro.com|5060||1|4096> with weight <8192865>
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: INFO: lcr [lcr_mod.c:1532]: added gw_uri_avp <1|1|00||sars.tutpro.com|||2|64> with weight <3725453>
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: INFO: Relaying INVITE <sip:00358407058055 at sars.tutpro.com;transport=tcp>
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: ERROR: tm [ut.h:295]: ERROR: uri2dst: failed to resolve "sars.tutpro.com" :unresolvable A or AAAA request (-7)
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: ERROR: tm [t_fwd.c:1391]: ERROR: t_forward_nonack: failure to add branches
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: ERROR: Relaying failed with result -478
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: INFO: lcr [lcr_mod.c:1949]: appending branch <sip:00358407058055 at lohi.tutpro.com:5060>
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: ERROR: found next gw <Contact: sip:00358407058055 at sars.tutpro.com;transport=tcp, sip:00358407058055 at lohi.tutpro.com:5060>
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: ERROR: tm [ut.h:295]: ERROR: uri2dst: failed to resolve "sars.tutpro.com" :unresolvable A or AAAA request (-7)
May 16 15:58:49 localhost /usr/sbin/sip-proxy[11412]: ERROR: Relaying succeeded with result 1
May 16 15:58:54 localhost /usr/sbin/sip-proxy[11459]: WARNING: No more gws

the first gw domain name sars.tutpro.com does not exist and the tm
errors are as they should.  then next_gw() appends a new branch, but
based on the "found next gw" log message it looks like sars.tutpro.com
is still in the destination set.

is this how it is supposed to be?  if so, looks like i there is a bug in
next_gw() in that it should clear the previous branch before adding a
new one in case the previous branch was not consumed by t_relay?

another strange thing is, why the branch route is executed only once
(for the first t_relay) although the script is calling t_relay() two
times and t_on_branch() is called before each call?

-- juha



More information about the sr-dev mailing list