On Sat, 25 Feb 2006 11:48:38 -0500, Kim Culhan wrote
On 2/25/06, Andres <andres(a)telesip.net>
wrote:
Kim Culhan wrote:
A UA is trying to send NOTIFY:
U 1.2.3.4:56839 -> 5.6.7.8:5060
NOTIFY
sip:machine.foo.com SIP/2.0.
There is no user in this NOTIFY message. So there is nothing that
SER
can lookup. This is probably just a keep-alive.
Yes I think it is just a keep-alive.
Thanks also to "Michal Matyska" <michal(a)iptel.org> who wrote:
Hmmm,
could you tell me from the message dump, which user do you want to
lookup?
This is what I don't understand, where is the user name located ?
What alternative action is there be if you have:
if (!lookup("location")) { sl_send_reply("404", "User Not Found
-
lookup_location"); break; };
So, what causes the lookup in userloc db to fail ?
As Michal points out, for a keep-alive message like this one
there is no user in the usrloc dbso it must return a 404 error ?
Is the UA sending the keep-alive doing the wrong thing ?
-kim
Is this a Snom phone by any chance? I know they use NOTIFY messages as a
keep-alive, although a few others do as well. In my config, I have a
section to handle just that:
if((method=="NOTIFY") && search("^Event: keep-alive")) {
sl_send_reply("200", "OK"); break; };
This is a Sipura SPA-841 with NAT Keep Alive Enable: set to YES
It sends a NOTIFY about every 10 seconds where the replies are:
SIP/2.0 404 User Not Found
Adding the above test for NOTIFY and keep-alive to
features-callfwd.cfg 15 2005-09-15:
# -----------------------------------------------------------------
# Call Type Processing Section
# -----------------------------------------------------------------
if (!is_uri_host_local()) {
if (is_from_local() || allow_trusted()) {
route(4);
route(1);
} else {
sl_send_reply("403", "Forbidden");
};
break;
};
if((method=="NOTIFY") && search("^Event: keep-alive"))
{
sl_send_reply("200", "OK");
break;
} else if (method=="CANCEL") {
route(1);
break;
Results in sending: SIP/2.0 200 OK to the Sipura.
regards
-kim
--
w8hdkim er