Guys,
I was able to figure out why I was getting occasional sl_send_reply errors
with some ACK messages. I don't know if this is something that needs to
be corrected at a deeper level, but I'll give you the rundown:
1. UA Makes a call to a bad number
2. Bad number is actually valid so it gets routed to the GW
3. GW responds 404
4. ACK loop occurs.
When the ACK loop happens, SIP captures reveal the following (watch the
Max-Forwards):
#1
..
Max-Forwards: 9
Record-Route: <sip:ser;ftag=0014a934057d001145ed0fa2-6f6f2e8e;lr=on>
Via: SIP/2.0/UDP ser;branch=0
Via: SIP/2.0/UDP 192.168.249.83:5060;received=otherip;branch=z9hG4bK140d833e
..
#2
..
Record-Route: <sip:ser;ftag=0014a934057d001145ed0fa2-6f6f2e8e;lr=on>
Max-Forwards: 8
Record-Route: <sip:ser;ftag=0014a934057d001145ed0fa2-6f6f2e8e;lr=on>
Via: SIP/2.0/UDP ser;branch=0
Via: SIP/2.0/UDP ser;branch=0
Via: SIP/2.0/UDP
192.168.249.83:5060;received=otherip;branch=z9hG4bK140d833e
..
Etc. etc. until Max Forwards counts down to 0, at which point:
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too Many Hops");
break;
};
And naturally:
sl_send_reply: I won't send a reply for ACK!!
So, I've obviously been able to avoid this by changing to:
if (!mf_process_maxfwd_header("10")) {
if (method!="ACK") {
sl_send_reply("483", "Too Many Hops");
};
break;
};
Now, the greater question: is the ACK loop being generated by a defective
message. If so, is it anything to worry about? And in either case is
putting the method check in there a valid solution?
Can anyone advise?
Thanks,
-Corey
*********************************************
This message has been scanned for viruses and
dangerous content, and is believed to be clean.