diff --git a/kamailio/default.cfg b/kamailio/default.cfg index e197fb5..1af80db 100644 --- a/kamailio/default.cfg +++ b/kamailio/default.cfg @@ -454,9 +454,11 @@ route[HANDLE_OPTIONS] } #!endif - ## TODO: remove nat if client is sending options - sl_send_reply("200", "Rawr!!"); + + #!ifdef NAT_TRAVERSAL_ROLE + route(KEEPALIVE_ON_OPTIONS); + #!endif } exit; } @@ -479,7 +481,12 @@ route[HANDLE_NOTIFY] } #!endif - ## TODO: verify we're not routing to ourselves + ## verify we're not routing to ourselves + if(is_myself($du)) { + xlog("L_INFO", "$ci|log|notify from internal to invalid destination $ruid\n"); + sl_send_reply("200", "Rawr!!"); + exit; + } route(INTERNAL_TO_EXTERNAL_RELAY); } else { @@ -489,7 +496,6 @@ route[HANDLE_NOTIFY] } #!endif - ## TODO: remove nat if client is sending notify for keepalive if($hdr(Event) == "keep-alive") { xlog("L_INFO", "$ci|stop|replying to keep alive\n"); @@ -498,6 +504,11 @@ route[HANDLE_NOTIFY] xlog("L_INFO", "$ci|stop|consuming event $hdr(Event)\n"); sl_send_reply("200", "Rawr!!"); } + + #!ifdef NAT_TRAVERSAL_ROLE + route(KEEPALIVE_ON_NOTIFY); + #!endif + } exit; } diff --git a/kamailio/keepalive.cfg b/kamailio/keepalive.cfg index fd13a59..faf52a2 100644 --- a/kamailio/keepalive.cfg +++ b/kamailio/keepalive.cfg @@ -189,3 +189,15 @@ route[KEEPALIVE_ON_EXPIRED_REGISTRATION] $var(Query) = $_s(DELETE FROM keepalive where contact like "$ulc(exp=>addr)%"); mq_add("keepalive_db_queue", "$uuid(g)", "$var(Query)"); } + +route[KEEPALIVE_ON_OPTIONS] +{ + $var(Query) = $_s(UPDATE keepalive set selected = 3 where contact like "%alias=$si~$sp~$prid%"); + mq_add("keepalive_db_queue", "$uuid(g)", "$var(Query)"); +} + +route[KEEPALIVE_ON_NOTIFY] +{ + $var(Query) = $_s(UPDATE keepalive set selected = 4 where contact like "%alias=$si~$sp~$prid%"); + mq_add("keepalive_db_queue", "$uuid(g)", "$var(Query)"); +}