I am experiencing an issue with server side call forward always which I didn't see
before but I now believe has always existed. We recently switched phone manufacturers and
now have the ability to offer bridged line appearance (BLA). Part of the process for
offering BLA is to have the phones register with the shared attribute for a given line.
When we enable this attribute server side call forward always breaks. When I say break I
mean that the call forwards OK but the intermediate IP phone now rings which it never did
before.
Using ngrep I see that even with the old config we had the same message flow:
Invite (from PSTN gateway)->
Invite received at proxy->
Proxy responds to gateway with 200 OK->
Proxy loads forward address from mysql usr_preferences table
Proxy rewrite R-URI to the forward address -
avp_pushto("$ruri/username", "s:fwdaaddr");
Proxy send invite to this new address - but...
Proxy also sends invite to each contact address registered to the original
AOR. This should not happen but I think it was
Always happening and the old phones just ignored it. Any thoughts on why and
how to correct this behavior?
The ser.cfg snippets involved are included below:
Determine if call forward all is on:
# call forward always
if (avp_db_load("$ruri/username", "s:callfwdall")) {
if (avp_check("s:callfwdall","eq/y/i")) {
xlog("L_INFO", "\n[SER]: [%Tf] [%ci] User <%ru> has
enabled Call Forward Always\n");
avp_write("$ruri", "$ocn"); - save original RURI for
voicemail access if needed
if (avp_db_load("$ruri/username", "s:fwdaaddr")) {
avp_pushto("$ruri/username", "s:fwdaaddr");
rewritehostport("mydomain.edu");
xlog("L_INFO", "\n[SER]: [%Tf] [%ci] Calls for user
<%tu> FORWARDING to <%ru>\n");
route(2);
break;
};
And call relaying is done by:
route[2] {
xlog("L_INFO", "\n[SER]: Route block #2 campus 5-digit
extensions:\n\n");
xlog("L_INFO", "\n[SER]: [%Tf] [%ci] Route block #2: sending
oncampus call from <%fu> to local gateway\n");
avp_write("65", "inv_timeout");
rewritehostport("my-gwy-ip-address:5060");
t_on_failure("1"); # for gwy failover
t_relay();
break;
};
Thanks,Steve
Show replies by date