I'm having a problem redirecting to voicemail. This may be an asterisk bug I'm not sure, can somebody confirm?
Network layout
GATEWAY - Asterisk 1.0.8-BRIstuffed-0.2.0-RC8h connected to a PRI line. (Additionally patched with http://bugs.digium.com/view.php?id=2687) PROXY - Ser version: ser 0.9.3 (i386/freebsd) FEATURE - Asterisk 1.0.8-BRIstuffed-0.2.0-RC8h handling voicemail.
GATEWAY---PROXY---FEATURE | | UA
For simplicity, hostnames and IPs replaced with the above names. USERNAME, DSTNUM and SRCNUM also used to replace the UA's username, the source number of the call, and the destination number of the call.
The basic SIP dialog goes:
Gateway invites proxy Gateway invites UA UA replies 180 Ringing.
Transaction times out and drops to failure route
PROXY invites FEATURE server (INVITE sip:*voicemail-busy-2002006@ FEATURE:5060 SIP/2.0.) PROXY cancels UA FEATURE replies 200 ok to PROXY PROXY replies 200 ok to GATEWAY FEATURE replies 200 ok to PROXY PROXY replies 200 ok to GATEWAY UA tells PROXY '487 Request Terminated.' FEATURE replies 200 ok to PROXY PROXY replies 200 ok to GATEWAY ...
For some reason, the asterisk gateway doesn't seem to be ACKing the 200 ok. I don't see any new invite or reinvite going to the gateway which I think may be what is confusing it.
Ser.cfg excerpt
## # User did not answer phone, or could not connect, or is on the phone and does not use call waiting. ## failure_route[3] { if(isflagset(10)) { if(t_check_status("486")) { if (!subst_user('/^/*voicemail-busy-/')){ log(1,"Err in subst_user\n"); } xlog("L_ERR", "Relaying to voicemail Busy\n"); } else { if (!subst_user('/^/*voicemail-noanswer-/')){ log(1,"Err in subst_user\n"); } xlog("L_ERR", "Relaying to voicemail No answer\n"); } rewritehostport("FEATURE:5060"); append_branch(); t_relay(); } }
Ngrep from PROXY's point of view http://pastebin.ca/23469 Ngrep from GATEWAY's point of view http://pastebin.ca/23470 Ngrep from FEATURE's point of view http://pastebin.ca/23471