Juha Heinanen writes:
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?
i tried that by adding clear_branches() call before append_branch():
static int next_gw(... ... /* Subsequent invocation in route block or any invocation in * failure route block => clear possible unconsumed branches and * append a new one. */ clear_branches(); uri_str.s = r_uri; uri_str.len = r_uri_len; LM_INFO("appending branch <%.*s>\n", uri_str.len, uri_str.s); if (append_branch(_m, &uri_str, 0, 0, Q_UNSPECIFIED, 0, 0) == -1) { LM_ERR("when appending branch <%.*s>\n", uri_str.len, uri_str.s); return -1; }
but still, syslog shows that the first branch is still in the destination set:
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")
May 16 16:40:24 localhost /usr/sbin/sip-proxy[12343]: INFO: lcr [lcr_mod.c:1951]: appending branch sip:00358407058055@lohi.tutpro.com:5060 May 16 16:40:24 localhost /usr/sbin/sip-proxy[12343]: ERROR: found next gw <Contact: sip:00358407058055@sars.tutpro.com;transport=tcp,sip:00358407058055@lohi.tutpro.com:5060>
what it is that i'm missing here?
-- juha