<div dir="ltr"><br><br>
<div class="gmail_quote">On Wed, Oct 5, 2011 at 2:34 PM, Uri Shacked <span dir="ltr"><<a href="mailto:ushacked@gmail.com">ushacked@gmail.com</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div dir="ltr">
<div>OK...</div>
<div>now i see the problem is some where in the cfg file...</div>
<div>i get te following error :</div>
<div> </div>
<div> 0(3774) : <core> [cfg.y:3406]: parse error in config file //etc/kamailio/kamailio.cfg, from line 944, column 2 to line 945, column 0: syntax error<br> 0(3774) : <core> [cfg.y:3406]: parse error in config file //etc/kamailio/kamailio.cfg, from line 944, column 2 to line 945, column 0: bad command<br>
ERROR: bad config file (2 errors)<br> 0(3774) DEBUG: tm [t_funcs.c:122]: DEBUG: tm_shutdown : start<br> 0(3774) DEBUG: tm [t_funcs.c:125]: DEBUG: tm_shutdown : emptying hash table<br> 0(3774) DEBUG: tm [t_funcs.c:127]: DEBUG: tm_shutdown : removing semaphores<br>
0(3774) DEBUG: tm [t_funcs.c:129]: DEBUG: tm_shutdown : destroying tmcb lists<br> 0(3774) DEBUG: tm [t_funcs.c:132]: DEBUG: tm_shutdown : done<br> 0(3774) DEBUG: <core> [mem/shm_mem.c:236]: shm_mem_destroy<br> 0(3774) DEBUG: <core> [mem/shm_mem.c:239]: destroying the shared memory lock<br>
<br><br>here is my complete cfg file.</div>
<div>any ideas?</div>
<div> </div>
<div><span lang="HE">
<p dir="ltr"><font size="1">...</font></p>
<p dir="ltr"><font size="1">#</font><font size="1">####### Routing Logic ########</font></p>
<p dir="ltr"><font size="1"> </font></p>
<p dir="ltr"><font size="1"># Main SIP request routing logic</font></p>
<p dir="ltr"><font size="1"># - processing of any incoming SIP request starts with this route</font></p>
<p dir="ltr"><font size="1">route {</font></p>
<p dir="ltr"><font size="1">setflag(FLT_TRC); # Trace message</font></p>
<p dir="ltr"><font size="1"># per request initial checks</font></p>
<p dir="ltr"><font size="1">route(REQINIT);</font></p>
<p dir="ltr"><font size="1"># NAT detection</font></p>
<p dir="ltr"><font size="1">route(NAT);</font></p>
<p dir="ltr"><font size="1"># handle requests within SIP dialogs</font></p>
<p dir="ltr"><font size="1">route(WITHINDLG);</font></p>
<p dir="ltr"><font size="1">### only initial requests (no To tag)</font></p>
<p dir="ltr"><font size="1"># CANCEL processing</font></p>
<p dir="ltr"><font size="1">if (is_method("CANCEL"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">if (t_check_trans())</font></p>
<p dir="ltr"><font size="1">t_relay();</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">t_check_trans();</font></p>
<p dir="ltr"><font size="1"># authentication</font></p>
<p dir="ltr"><font size="1">route(AUTH);</font></p>
<p dir="ltr"><font size="1"># record routing for dialog forming requests (in case they are routed)</font></p>
<p dir="ltr"><font size="1"># - remove preloaded route headers</font></p>
<p dir="ltr"><font size="1">remove_hf("Route");</font></p>
<p dir="ltr"><font size="1">if (is_method("INVITE|SUBSCRIBE"))</font></p>
<p dir="ltr"><font size="1">record_route();</font></p>
<p dir="ltr"><font size="1"># account only INVITEs</font></p>
<p dir="ltr"><font size="1">if (is_method("INVITE"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_DIALPLAN</font></p>
<p dir="ltr"><font size="1">dp_translate("1", "$rU/$rU");</font></p>
<p dir="ltr"><font size="1">xlog("translated to $rU \n");</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_CARRIERROUTE</font></p>
<p dir="ltr"><font size="1">####cr_user_carrier("$rU", "$td", "$avp(carrierid)"); </font></p>
<p dir="ltr"><font size="1">####xlog("translated to var $avp(carrierid) \n");</font></p>
<p dir="ltr"><font size="1">cr_route("OSP1", "kamailio2", "$rU", "$rU", "call_id");</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">setflag(FLT_ACC); # do accounting</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># dispatch requests to foreign domains</font></p>
<p dir="ltr"><font size="1">route(SIPOUT);</font></p>
<p dir="ltr"><font size="1">### requests for my local domains</font></p>
<p dir="ltr"><font size="1"># handle presence related requests</font></p>
<p dir="ltr"><font size="1">route(PRESENCE);</font></p>
<p dir="ltr"><font size="1"># handle registrations</font></p>
<p dir="ltr"><font size="1">route(REGISTRAR);</font></p>
<p dir="ltr"><font size="1">if ($rU==$null)</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1"># request with no Username in RURI</font></p>
<p dir="ltr"><font size="1">sl_send_reply("484","Address Incomplete");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># dispatch destinations to PSTN</font></p>
<p dir="ltr"><font size="1">route(PSTN);</font></p>
<p dir="ltr"><font size="1"># user location service</font></p>
<p dir="ltr"><font size="1">route(LOCATION);</font></p>
<p dir="ltr"><font size="1">route(RELAY);</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"> </font></p>
<p dir="ltr"><font size="1">route[RELAY] {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_NAT</font></p>
<p dir="ltr"><font size="1">if (check_route_param("nat=yes")) {</font></p>
<p dir="ltr"><font size="1">setbflag(FLB_NATB);</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if (isflagset(FLT_NATS) || isbflagset(FLB_NATB)) {</font></p>
<p dir="ltr"><font size="1">route(RTPPROXY);</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">/* example how to enable some additional event routes */</font></p>
<p dir="ltr"><font size="1">if (is_method("INVITE")) {</font></p>
<p dir="ltr"><font size="1">#t_on_branch("BRANCH_ONE");</font></p>
<p dir="ltr"><font size="1">t_on_reply("REPLY_ONE");</font></p>
<p dir="ltr"><font size="1">t_on_failure("FAIL_ONE");</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if (!t_relay()) {</font></p>
<p dir="ltr"><font size="1">sl_reply_error();</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Per SIP request initial checks</font></p>
<p dir="ltr"><font size="1">route[REQINIT] {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_ANTIFLOOD</font></p>
<p dir="ltr"><font size="1"># flood dection from same IP and traffic ban for a while</font></p>
<p dir="ltr"><font size="1"># be sure you exclude checking trusted peers, such as pstn gateways</font></p>
<p dir="ltr"><font size="1"># - local host excluded (e.g., loop to self)</font></p>
<p dir="ltr"><font size="1">if(src_ip!=myself)</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">if($sht(ipban=>$si)!=$null)</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1"># ip is already blocked</font></p>
<p dir="ltr"><font size="1">xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if (!pike_check_req())</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n");</font></p>
<p dir="ltr"><font size="1">$sht(ipban=>$si) = 1;</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">if (!mf_process_maxfwd_header("10")) {</font></p>
<p dir="ltr"><font size="1">sl_send_reply("483","Too Many Hops");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if(!sanity_check("1511", "7"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">xlog("Malformed SIP message from $si:$sp\n");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_PIPELIMIT</font></p>
<p dir="ltr"><font size="1"># perform pipe match for INVITE method</font></p>
<p dir="ltr"><font size="1">if (is_method("INVITE")) {</font></p>
<p dir="ltr"><font size="1">if (!pl_check("avg")) {</font></p>
<p dir="ltr"><font size="1">pl_drop();</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if (!pl_check("peek")) {</font></p>
<p dir="ltr"><font size="1">pl_drop();</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#endif</font></p>
<p dir="ltr"><font size="1"></font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_DIALOG</font></p>
<p dir="ltr"><font size="1">xlog("currently active dialogs are $DLG_count\n");</font></p>
<div class="im">
<p dir="ltr"><font size="1">dlg_manage();</font></p>
<p dir="ltr"><font size="1">dlg_setflag(FLT_DLG);</font></p>
<p dir="ltr"><font size="1">if (is_method("INVITE")) {</font></p>
<p dir="ltr"><font size="1">$var(size) = 0;</font></p>
<p dir="ltr"><font size="1">get_profile_size("test","$rU","$var(size)");</font></p>
<p dir="ltr"><font size="1">xlog("currently, the user $rU has $var(size) active calls\n");</font></p>
<p dir="ltr"><font size="1">if( $var(size) >= 5 )</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">sl_send_reply("507", "Simultaneous calls limit reached");</font></p>
<p dir="ltr"><font size="1">xlog("Limit of $var(size) active calls has been reached \n");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">set_dlg_profile("test","$rU");</font></p>
<p dir="ltr"><font size="1">}</font></p></div>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Handle requests within SIP dialogs</font></p>
<p dir="ltr"><font size="1">route[WITHINDLG] {</font></p>
<p dir="ltr"><font size="1">if (has_totag()) {</font></p>
<p dir="ltr"><font size="1"># sequential request withing a dialog should</font></p>
<p dir="ltr"><font size="1"># take the path determined by record-routing</font></p>
<p dir="ltr"><font size="1">if (loose_route()) {</font></p>
<p dir="ltr"><font size="1">if (is_method("BYE")) {</font></p>
<p dir="ltr"><font size="1">setflag(FLT_ACC); # do accounting ...</font></p>
<p dir="ltr"><font size="1">setflag(FLT_ACCFAILED); # ... even if the transaction fails</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">route(RELAY);</font></p>
<p dir="ltr"><font size="1">} else {</font></p>
<p dir="ltr"><font size="1">if (is_method("SUBSCRIBE") && uri == myself) {</font></p>
<p dir="ltr"><font size="1"># in-dialog subscribe requests</font></p>
<p dir="ltr"><font size="1">route(PRESENCE);</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if ( is_method("ACK") ) {</font></p>
<p dir="ltr"><font size="1">if ( t_check_trans() ) {</font></p>
<p dir="ltr"><font size="1"># no loose-route, but stateful ACK;</font></p>
<p dir="ltr"><font size="1"># must be an ACK after a 487</font></p>
<p dir="ltr"><font size="1"># or e.g. 404 from upstream server</font></p>
<p dir="ltr"><font size="1">t_relay();</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">} else {</font></p>
<p dir="ltr"><font size="1"># ACK without matching transaction ... ignore and discard</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">sl_send_reply("404","Not here");</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Handle SIP registrations</font></p>
<p dir="ltr"><font size="1">route[REGISTRAR] {</font></p>
<p dir="ltr"><font size="1">if (is_method("REGISTER"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">if(isflagset(FLT_NATS))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">setbflag(FLB_NATB);</font></p>
<p dir="ltr"><font size="1"># uncomment next line to do SIP NAT pinging </font></p>
<p dir="ltr"><font size="1">## setbflag(FLB_NATSIPPING);</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if (!save("location"))</font></p>
<p dir="ltr"><font size="1">sl_reply_error();</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># USER location service</font></p>
<p dir="ltr"><font size="1">route[LOCATION] {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_ALIASDB</font></p>
<p dir="ltr"><font size="1"># search in DB-based aliases</font></p>
<p dir="ltr"><font size="1">alias_db_lookup("dbaliases");</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">if (!lookup("location")) {</font></p>
<p dir="ltr"><font size="1">switch ($rc) {</font></p>
<p dir="ltr"><font size="1">case -1:</font></p>
<p dir="ltr"><font size="1">case -3:</font></p>
<p dir="ltr"><font size="1">t_newtran();</font></p>
<p dir="ltr"><font size="1">t_reply("404", "Not Found");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">case -2:</font></p>
<p dir="ltr"><font size="1">sl_send_reply("405", "Method Not Allowed");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># when routing via usrloc, log the missed calls also</font></p>
<p dir="ltr"><font size="1">if (is_method("INVITE"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">setflag(FLT_ACCMISSED);</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Presence server route</font></p>
<p dir="ltr"><font size="1">route[PRESENCE] {</font></p>
<p dir="ltr"><font size="1">if(!is_method("PUBLISH|SUBSCRIBE"))</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_PRESENCE</font></p>
<p dir="ltr"><font size="1">if (!t_newtran())</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">sl_reply_error();</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">};</font></p>
<p dir="ltr"><font size="1">if(is_method("PUBLISH"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">handle_publish();</font></p>
<p dir="ltr"><font size="1">t_release();</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">else</font></p>
<p dir="ltr"><font size="1">if( is_method("SUBSCRIBE"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">handle_subscribe();</font></p>
<p dir="ltr"><font size="1">t_release();</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1"></font></p>
<p dir="ltr"><font size="1"># if presence enabled, this part will not be executed</font></p>
<p dir="ltr"><font size="1">if (is_method("PUBLISH") || $rU==$null)</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">sl_send_reply("404", "Not here");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Authentication route</font></p>
<p dir="ltr"><font size="1">route[AUTH] {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_AUTH</font></p>
<p dir="ltr"><font size="1">if (is_method("REGISTER"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1"># authenticate the REGISTER requests (uncomment to enable auth)</font></p>
<p dir="ltr"><font size="1">if (!www_authorize("$td", "subscriber"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">www_challenge("$td", "0");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if ($au!=$tU)</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">sl_send_reply("403","Forbidden auth ID");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">} else {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_IPAUTH</font></p>
<p dir="ltr"><font size="1">if(allow_source_address())</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1"># source IP allowed</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1"># authenticate if from local subscriber</font></p>
<p dir="ltr"><font size="1">if (from_uri==myself)</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">if (!proxy_authorize("$fd", "subscriber")) {</font></p>
<p dir="ltr"><font size="1">proxy_challenge("$fd", "0");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if (is_method("PUBLISH"))</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">if ($au!=$tU) {</font></p>
<p dir="ltr"><font size="1">sl_send_reply("403","Forbidden auth ID");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">} else {</font></p>
<p dir="ltr"><font size="1">if ($au!=$fU) {</font></p>
<p dir="ltr"><font size="1">sl_send_reply("403","Forbidden auth ID");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">consume_credentials();</font></p>
<p dir="ltr"><font size="1"># caller authenticated</font></p>
<p dir="ltr"><font size="1">} else {</font></p>
<p dir="ltr"><font size="1"># caller is not local subscriber, then check if it calls</font></p>
<p dir="ltr"><font size="1"># a local destination, otherwise deny, not an open relay here</font></p>
<p dir="ltr"><font size="1">if (!uri==myself)</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">sl_send_reply("403","Not relaying");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Caller NAT detection route</font></p>
<p dir="ltr"><font size="1">route[NAT] {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_NAT</font></p>
<p dir="ltr"><font size="1">force_rport();</font></p>
<p dir="ltr"><font size="1">if (nat_uac_test("19")) {</font></p>
<p dir="ltr"><font size="1">if (method=="REGISTER") {</font></p>
<p dir="ltr"><font size="1">fix_nated_register();</font></p>
<p dir="ltr"><font size="1">} else {</font></p>
<p dir="ltr"><font size="1">fix_nated_contact();</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">setflag(FLT_NATS);</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># RTPProxy control</font></p>
<p dir="ltr"><font size="1">route[RTPPROXY] {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_NAT</font></p>
<p dir="ltr"><font size="1">if (is_method("BYE")) {</font></p>
<p dir="ltr"><font size="1">unforce_rtp_proxy();</font></p>
<p dir="ltr"><font size="1">} else if (is_method("INVITE")){</font></p>
<p dir="ltr"><font size="1">force_rtp_proxy();</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if (!has_totag()) add_rr_param(";nat=yes");</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Routing to foreign domains</font></p>
<p dir="ltr"><font size="1">route[SIPOUT] {</font></p>
<p dir="ltr"><font size="1">if (!uri==myself)</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1">append_hf("P-hint: outbound\r\n");</font></p>
<p dir="ltr"><font size="1">route(RELAY);</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># PSTN GW routing</font></p>
<p dir="ltr"><font size="1">route[PSTN] {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_PSTN</font></p>
<p dir="ltr"><font size="1"># check if PSTN GW IP is defined</font></p>
<p dir="ltr"><font size="1">if (strempty($sel(cfg_get.pstn.gw_ip))) {</font></p>
<p dir="ltr"><font size="1">xlog("SCRIPT: PSTN rotuing enabled but pstn.gw_ip not defined\n");</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># route to PSTN dialed numbers starting with '+' or '00'</font></p>
<p dir="ltr"><font size="1"># (international format)</font></p>
<p dir="ltr"><font size="1"># - update the condition to match your dialing rules for PSTN routing</font></p>
<p dir="ltr"><font size="1">if(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$"))</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1"># only local users allowed to call</font></p>
<p dir="ltr"><font size="1">if(from_uri!=myself) {</font></p>
<p dir="ltr"><font size="1">sl_send_reply("403", "Not Allowed");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">$ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip);</font></p>
<p dir="ltr"><font size="1">route(RELAY);</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">return;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># XMLRPC routing</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_XMLRPC</font></p>
<p dir="ltr"><font size="1">route[XMLRPC]</font></p>
<p dir="ltr"><font size="1">{</font></p>
<p dir="ltr"><font size="1"># allow XMLRPC from localhost</font></p>
<p dir="ltr"><font size="1">if ((method=="POST" || method=="GET")</font></p>
<p dir="ltr"><font size="1">&& (src_ip==127.0.0.1)) {</font></p>
<p dir="ltr"><font size="1"># close connection only for xmlrpclib user agents (there is a bug in</font></p>
<p dir="ltr"><font size="1"># xmlrpclib: it waits for EOF before interpreting the response).</font></p>
<p dir="ltr"><font size="1">if ($hdr(User-Agent) =~ "xmlrpclib")</font></p>
<p dir="ltr"><font size="1">set_reply_close();</font></p>
<p dir="ltr"><font size="1">set_reply_no_connect();</font></p>
<p dir="ltr"><font size="1">dispatch_rpc();</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">send_reply("403", "Forbidden");</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1"># Sample branch router</font></p>
<p dir="ltr"><font size="1">branch_route[BRANCH_ONE] {</font></p>
<p dir="ltr"><font size="1">xdbg("new branch at $ru\n");</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Sample onreply route</font></p>
<p dir="ltr"><font size="1">onreply_route[REPLY_ONE] {</font></p>
<p dir="ltr"><font size="1">xdbg("incoming reply\n");</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_NAT</font></p>
<p dir="ltr"><font size="1">if ((isflagset(FLT_NATS) || isbflagset(FLB_NATB))</font></p>
<p dir="ltr"><font size="1">&& status=~"(183)|(2[0-9][0-9])") {</font></p>
<p dir="ltr"><font size="1">force_rtp_proxy();</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">if (isbflagset("6")) {</font></p>
<p dir="ltr"><font size="1">fix_nated_contact();</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">route[STATS] {</font></p>
<p dir="ltr"><font size="1">sql_query("ca",</font></p>
<p dir="ltr"><font size="1">"insert into statistics (time_stamp,shm_used_size,shm_real_used_size,"</font></p>
<p dir="ltr"><font size="1">"shm_max_used_size,shm_free_used_size,ul_users,ul_contacts) values ($Ts,"</font></p>
<p dir="ltr"><font size="1">"$stat(used_size),$stat(real_used_size),$stat(max_used_size),"</font></p>
<p dir="ltr"><font size="1">"$stat(free_size),$stat(location-users),$stat(location-contacts))",</font></p>
<p dir="ltr"><font size="1">"ra");</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># Sample failure route</font></p>
<p dir="ltr"><font size="1">failure_route[FAIL_ONE] {</font></p>
<p dir="ltr"><font size="1">#!ifdef WITH_NAT</font></p>
<p dir="ltr"><font size="1">if (is_method("INVITE")</font></p>
<p dir="ltr"><font size="1">&& (isbflagset(FLB_NATB) || isflagset(FLT_NATS))) {</font></p>
<p dir="ltr"><font size="1">unforce_rtp_proxy();</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1">#!endif</font></p>
<p dir="ltr"><font size="1">if (t_is_canceled()) {</font></p>
<p dir="ltr"><font size="1">exit;</font></p>
<p dir="ltr"><font size="1">}</font></p>
<p dir="ltr"><font size="1"># uncomment the following lines if you want to block client </font></p>
<p dir="ltr"><font size="1"># redirect based on 3xx replies.</font></p>
<p dir="ltr"><font size="1">##if (t_check_status("3[0-9][0-9]")) {</font></p>
<p dir="ltr"><font size="1">##t_reply("404","Not found");</font></p>
<p dir="ltr"><font size="1">## exit;</font></p>
<p dir="ltr"><font size="1">##}</font></p>
<p dir="ltr"><font size="1"># uncomment the following lines if you want to redirect the failed </font></p>
<p dir="ltr"><font size="1"># calls to a different new destination</font></p>
<p dir="ltr"><font size="1">##if (t_check_status("486|408")) {</font></p>
<p dir="ltr"><font size="1">## sethostport("<a href="http://192.168.2.100:5060/" target="_blank">192.168.2.100:5060</a>");</font></p>
<p dir="ltr"><font size="1">## append_branch();</font></p>
<p dir="ltr"><font size="1">## # do not set the missed call flag again</font></p>
<p dir="ltr"><font size="1">## t_relay();</font></p>
<p dir="ltr"><font size="1">##}</font></p>
<p dir="ltr"><font size="1">}</font></p></span></div>
<div>
<div></div>
<div class="h5">
<div> </div>
<div class="gmail_quote">On Wed, Oct 5, 2011 at 12:12 PM, Uri Shacked <span dir="ltr"><<a href="mailto:ushacked@gmail.com" target="_blank">ushacked@gmail.com</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div dir="ltr"><br><br>
<div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Uri Shacked</b> <span dir="ltr"><<a href="mailto:uri.shacked@gmail.com" target="_blank">uri.shacked@gmail.com</a>></span><br>
Date: Wed, Oct 5, 2011 at 11:48 AM<br>Subject: dialog ref Error<br>To: <a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br><br><br>
<div dir="ltr">
<div>Hi,</div>
<div> </div>
<div>i keep on getting this error:</div>
<div>Oct 5 14:39:33 Kamailio2 /usr/sbin/kamailio[21568]: DEBUG: dialog [dlg_hash.c:247]: new dialog on hash 531<br>Oct 5 14:39:33 Kamailio2 /usr/sbin/kamailio[21568]: DEBUG: dialog [dlg_handlers.c:264]: route_set , contact <a href="http://sip:036264529@10.2.0.55:5061" target="_blank">sip:036264529@10.2.0.55:5061</a>, cseq 1 and bind_addr udp:<a href="http://10.2.0.5:5060/" target="_blank">10.2.0.5:5060</a><br>
Oct 5 14:39:33 Kamailio2 /usr/sbin/kamailio[21568]: DEBUG: dialog [dlg_hash.c:519]: ref dlg 0xb417f5a0 with 3 -> 3<br>Oct 5 14:39:33 Kamailio2 /usr/sbin/kamailio[21568]: DEBUG: dialog [dlg_hash.c:600]: unref dlg 0xb417f5a0 with 1, crt ref count: 3<br>
</div>
<div> </div>
<div>anyone knows what it is?</div>
<div> </div>
<div>here is the dialog part in my cfg:</div>
<div> </div>
<div><span lang="HE">
<p dir="ltr"><font size="1"><strong># ------ dialog params --------</strong></font></p>
<p dir="ltr"><font size="1">modparam("dialog", "db_url", DBURL)</font></p>
<p dir="ltr"><font size="1">##modparam("dialog", "rr_param", "did")</font></p>
<p dir="ltr"><font size="1">modparam("dialog", "default_timeout", 7200)</font></p>
<p dir="ltr"><font size="1">modparam("dialog", "dlg_match_mode", </font></p></span><font face="Courier New"><font face="Courier New"><span lang="EN"><font size="1">0</font></span></font></font><span lang="HE"><font size="1">)</font>
<p dir="ltr"><font size="1">modparam("dialog", "detect_spirals", 1)</font></p>
<p dir="ltr"><font size="1">modparam("dialog", "db_mode", 1)</font></p>
<p dir="ltr"><font size="1">##modparam("dialog", "db_fetch_rows", 100)</font></p>
<p dir="ltr"><font size="1">modparam("dialog", "dlg_flag", FLT_DLG)</font></p>
<p dir="ltr"><font size="1">modparam("dialog", "profiles_with_value", "test")</font></p>
<p><span lang="HE"><font size="1"></font></span> </p>
<p><span lang="HE"><font size="1">..........</font></span></p>
<p><span lang="HE"><font size="1">dlg_manage();</font></span></p>
<p dir="ltr"><font size="1">##dlg_setflag(FLT_DLG);</font></p>
<p dir="ltr"><font size="1">if (is_method("INVITE")) {</font></p>
<p dir="ltr"><font size="1">$var(size) = 0;</font></p>
<p dir="ltr"><font size="1">get_profile_size("test","$rU","$var(size)");</font></p>
<p dir="ltr"><font size="1">xlog("currently, the user $rU has $var(size) active calls\n");</font></p>
<p dir="ltr"><font size="1">if( $var(size) >= 5 )</font><font size="1">{</font></p>
<p dir="ltr"><font size="1">sl_send_reply("507", "Simultaneous calls limit reached");</font></p>
<p dir="ltr"><font size="1">xlog("Limit of $var(size) active calls has been reached \n");</font></p>
<p dir="ltr"><font size="1">exit;</font><font size="1">}</font></p>
<p dir="ltr"><font size="1">set_dlg_profile("test","$rU");</font><font size="1">}</font></p>
<p dir="ltr"><font size="1">........</font></p></span></div></div></div><br></div></blockquote></div><br></div></div></div></blockquote></div><br></div>