Hi<br><br>I am using kamailio 1.5.0 and asterisk 1.6.0.5<br><br>I have successfully registered and call from one sip phone to another and also outgoing dialing on mobile and landline number.<br><br>But when i hangup any one phone, 2nd call can&#39;t be hangup automatically...<br>
<br>Here is my &quot;kamailio.cfg&quot; file..<br><br><br><br>listen = 192.168.1.68 <br>port = 5060<br>mpath = &quot;/usr/local/lib/kamailio/modules&quot;<br>#children = 8<br>debug = 7<br>fork = yes<br>#group = &quot;openser&quot;<br>
#user = &quot;openser&quot;<br>#disable_tcp = no<br>#log_facility = LOG_DAEMON<br>log_facility = LOG_LOCAL0<br>log_stderror = no<br>#tcp_children = 4<br>#mhomed = no<br>#server_signature = yes<br>#sock_group = &quot;openser&quot;<br>
#sock_mode = 0600<br>#sock_user = &quot;openser&quot;<br>#unix_sock = &quot;/tmp/openser.sock&quot;<br>#unix_sock_children = 1<br>#reply_to_via = no<br>#sip_warning = no<br>#check_via = no<br>dns = no<br>rev_dns = no<br>#disable_core_dump = no<br>
#dns_try_ipv6 = yes<br>#dns_use_search_list = yes<br><br>loadmodule &quot;usrloc.so&quot;<br>modparam(&quot;usrloc&quot;, &quot;user_column&quot;, &quot;username&quot;)<br>modparam(&quot;usrloc&quot;, &quot;domain_column&quot;, &quot;domain&quot;)<br>
modparam(&quot;usrloc&quot;, &quot;contact_column&quot;, &quot;contact&quot;)<br>modparam(&quot;usrloc&quot;, &quot;expires_column&quot;, &quot;expires&quot;)<br>modparam(&quot;usrloc&quot;, &quot;q_column&quot;, &quot;q&quot;)<br>
modparam(&quot;usrloc&quot;, &quot;callid_column&quot;, &quot;callid&quot;)<br>modparam(&quot;usrloc&quot;, &quot;cseq_column&quot;, &quot;cseq&quot;)<br>modparam(&quot;usrloc&quot;, &quot;methods_column&quot;, &quot;methods&quot;)<br>
modparam(&quot;usrloc&quot;, &quot;flags_column&quot;, &quot;flags&quot;)<br>modparam(&quot;usrloc&quot;, &quot;user_agent_column&quot;, &quot;user_agent&quot;)<br>modparam(&quot;usrloc&quot;, &quot;received_column&quot;, &quot;received&quot;)<br>
modparam(&quot;usrloc&quot;, &quot;socket_column&quot;, &quot;socket&quot;)<br>modparam(&quot;usrloc&quot;, &quot;use_domain&quot;, 0)<br>modparam(&quot;usrloc&quot;, &quot;desc_time_order&quot;, 0)<br>modparam(&quot;usrloc&quot;, &quot;timer_interval&quot;, 60)<br>
modparam(&quot;usrloc&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br>modparam(&quot;usrloc&quot;, &quot;db_mode&quot;, 1)<br>modparam(&quot;usrloc&quot;, &quot;matching_mode&quot;, 0)<br>
modparam(&quot;usrloc&quot;, &quot;cseq_delay&quot;, 20)<br>modparam(&quot;usrloc&quot;, &quot;nat_bflag&quot;, 6)<br><br>loadmodule &quot;pv.so&quot;<br><br>loadmodule &quot;registrar.so&quot;<br>modparam(&quot;registrar&quot;, &quot;default_expires&quot;, 3600)<br>
modparam(&quot;registrar&quot;, &quot;min_expires&quot;, 60)<br>modparam(&quot;registrar&quot;, &quot;max_expires&quot;, 0)<br>modparam(&quot;registrar&quot;, &quot;default_q&quot;, 0)<br>modparam(&quot;registrar&quot;, &quot;append_branches&quot;, 1)<br>
modparam(&quot;registrar&quot;, &quot;case_sensitive&quot;, 0)<br>modparam(&quot;registrar&quot;, &quot;received_param&quot;, &quot;received&quot;)<br>modparam(&quot;registrar&quot;, &quot;max_contacts&quot;, 1)<br>modparam(&quot;registrar&quot;, &quot;retry_after&quot;, 0)<br>
modparam(&quot;registrar&quot;, &quot;method_filtering&quot;, 0)<br>modparam(&quot;registrar&quot;, &quot;path_mode&quot;, 2)<br>modparam(&quot;registrar&quot;, &quot;path_use_received&quot;, 0)<br>modparam(&quot;registrar&quot;, &quot;received_avp&quot;, &quot;$avp(i:801)&quot;)<br>
<br>loadmodule &quot;rr.so&quot;<br>modparam(&quot;rr&quot;, &quot;enable_full_lr&quot;, 0)<br>modparam(&quot;rr&quot;, &quot;append_fromtag&quot;, 1)<br>modparam(&quot;rr&quot;, &quot;enable_double_rr&quot;, 1)<br>modparam(&quot;rr&quot;, &quot;add_username&quot;, 0)<br>
<br>loadmodule &quot;tm.so&quot;<br>modparam(&quot;tm&quot;, &quot;fr_timer&quot;, 3)<br>modparam(&quot;tm&quot;, &quot;fr_inv_timer&quot;, 35)<br>modparam(&quot;tm&quot;, &quot;wt_timer&quot;, 5)<br>modparam(&quot;tm&quot;, &quot;delete_timer&quot;, 2)<br>
#modparam(&quot;tm&quot;, &quot;noisy_ctimer&quot;, 1)<br>modparam(&quot;tm&quot;, &quot;ruri_matching&quot;, 1)<br>modparam(&quot;tm&quot;, &quot;via1_matching&quot;, 1)<br>modparam(&quot;tm&quot;, &quot;unix_tx_timeout&quot;, 2)<br>
modparam(&quot;tm&quot;, &quot;restart_fr_on_each_reply&quot;, 1)<br>modparam(&quot;tm&quot;, &quot;pass_provisional_replies&quot;, 0)<br>modparam(&quot;tm&quot;, &quot;fr_inv_timer_avp&quot;, &quot;$avp(s:callee_fr_inv_timer)&quot;)<br>
<br>loadmodule &quot;xlog.so&quot;<br>modparam(&quot;xlog&quot;, &quot;buf_size&quot;, 4096)<br>modparam(&quot;xlog&quot;, &quot;force_color&quot;, 0)<br><br>loadmodule &quot;mi_fifo.so&quot;<br>modparam(&quot;mi_fifo&quot;, &quot;fifo_name&quot;, &quot;/tmp/kamailio_fifo&quot;)<br>
#modparam(&quot;mi_fifo&quot;, &quot;fifo_mode&quot;, 0660)<br>#modparam(&quot;mi_fifo&quot;, &quot;fifo_group&quot;, &quot;openser&quot;)<br>#modparam(&quot;mi_fifo&quot;, &quot;fifo_user&quot;, &quot;openser&quot;)<br>#modparam(&quot;mi_fifo&quot;, &quot;reply_dir&quot;, &quot;/tmp/&quot;)<br>
#modparam(&quot;mi_fifo&quot;, &quot;reply_indent&quot;, &quot;\t&quot;)<br><br>loadmodule &quot;domain.so&quot;<br>modparam(&quot;domain&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br>
modparam(&quot;domain&quot;, &quot;db_mode&quot;, 1)<br>modparam(&quot;domain&quot;, &quot;domain_table&quot;, &quot;domain&quot;)<br>modparam(&quot;domain&quot;, &quot;domain_col&quot;, &quot;domain&quot;)<br><br>loadmodule &quot;nathelper.so&quot;<br>
modparam(&quot;nathelper&quot;, &quot;natping_interval&quot;, 60)<br>modparam(&quot;nathelper&quot;, &quot;ping_nated_only&quot;, 1)<br>modparam(&quot;nathelper&quot;, &quot;rtpproxy_sock&quot;, &quot;unix:/var/run/rtpproxy.sock&quot;)<br>
#modparam(&quot;nathelper&quot;, &quot;rtpproxy_disable&quot;, 0)<br>modparam(&quot;nathelper&quot;, &quot;rtpproxy_disable_tout&quot;, 60)<br>modparam(&quot;nathelper&quot;, &quot;rtpproxy_tout&quot;, 1)<br>modparam(&quot;nathelper&quot;, &quot;rtpproxy_retr&quot;, 5)<br>
modparam(&quot;nathelper&quot;, &quot;sipping_method&quot;, &quot;OPTIONS&quot;)<br>modparam(&quot;nathelper&quot;, &quot;received_avp&quot;, &quot;$avp(i:801)&quot;)<br><br>loadmodule &quot;textops.so&quot;<br><br>#loadmodule &quot;uri.so&quot;<br>
<br>loadmodule &quot;sl.so&quot;<br>modparam(&quot;sl&quot;, &quot;enable_stats&quot;, 1)<br><br>loadmodule &quot;maxfwd.so&quot;<br>modparam(&quot;maxfwd&quot;, &quot;max_limit&quot;, 256)<br><br>loadmodule &quot;db_mysql.so&quot;<br>
modparam(&quot;db_mysql&quot;, &quot;ping_interval&quot;, 300)<br>modparam(&quot;db_mysql&quot;, &quot;auto_reconnect&quot;, 1)<br><br>loadmodule &quot;auth.so&quot;<br>modparam(&quot;auth&quot;, &quot;nonce_expire&quot;, 300)<br>
modparam(&quot;auth&quot;, &quot;rpid_suffix&quot;, &quot;;party=calling;id-type=subscriber;screen=yes&quot;)<br>modparam(&quot;auth&quot;, &quot;rpid_avp&quot;, &quot;$avp(s:rpid)&quot;)<br><br>loadmodule &quot;auth_db.so&quot;<br>
modparam(&quot;auth_db&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br>modparam(&quot;auth_db&quot;, &quot;user_column&quot;, &quot;username&quot;)<br>modparam(&quot;auth_db&quot;, &quot;domain_column&quot;, &quot;domain&quot;)<br>
modparam(&quot;auth_db&quot;, &quot;password_column&quot;, &quot;password&quot;)<br>modparam(&quot;auth_db&quot;, &quot;password_column_2&quot;, &quot;ha1b&quot;)<br>modparam(&quot;auth_db&quot;, &quot;calculate_ha1&quot;, 1)<br>
modparam(&quot;auth_db&quot;, &quot;use_domain&quot;, 1)<br>modparam(&quot;auth_db&quot;, &quot;load_credentials&quot;, &quot;$avp(s:caller_uuid)=uuid&quot;)<br><br>loadmodule &quot;uri_db.so&quot;<br>#modparam(&quot;uri_db&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br>
#modparam(&quot;uri_db&quot;, &quot;db_table&quot;, &quot;uri&quot;)<br>#modparam(&quot;uri_db&quot;, &quot;user_column&quot;, &quot;username&quot;)<br>#modparam(&quot;uri_db&quot;, &quot;domain_column&quot;, &quot;domain&quot;)<br>
#modparam(&quot;uri_db&quot;, &quot;uriuser_column&quot;, &quot;uri_user&quot;)<br>#modparam(&quot;uri_db&quot;, &quot;subscriber_table&quot;, &quot;subscriber&quot;)<br>#modparam(&quot;uri_db&quot;, &quot;subscriber_user_column&quot;, &quot;username&quot;)<br>
#modparam(&quot;uri_db&quot;, &quot;subscriber_domain_column&quot;, &quot;domain&quot;)<br>#modparam(&quot;uri_db&quot;, &quot;use_uri_table&quot;, 0)<br>#modparam(&quot;uri_db&quot;, &quot;use_domain&quot;, 1)<br><br>loadmodule &quot;avpops.so&quot;<br>
modparam(&quot;avpops&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br>modparam(&quot;avpops&quot;, &quot;avp_table&quot;, &quot;usr_preferences&quot;)<br>modparam(&quot;avpops&quot;, &quot;use_domain&quot;, 1)<br>
modparam(&quot;avpops&quot;, &quot;uuid_column&quot;, &quot;uuid&quot;)<br>modparam(&quot;avpops&quot;, &quot;username_column&quot;, &quot;username&quot;)<br>modparam(&quot;avpops&quot;, &quot;domain_column&quot;, &quot;domain&quot;)<br>
modparam(&quot;avpops&quot;, &quot;attribute_column&quot;, &quot;attribute&quot;)<br>modparam(&quot;avpops&quot;, &quot;value_column&quot;, &quot;value&quot;)<br>modparam(&quot;avpops&quot;, &quot;type_column&quot;, &quot;type&quot;)<br>
<br>loadmodule &quot;lcr.so&quot;<br>modparam(&quot;lcr&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br>modparam(&quot;lcr&quot;, &quot;gw_table&quot;, &quot;gw&quot;)<br>modparam(&quot;lcr&quot;, &quot;gw_name_column&quot;, &quot;gw_name&quot;)<br>
modparam(&quot;lcr&quot;, &quot;ip_addr_column&quot;, &quot;ip_addr&quot;)<br>modparam(&quot;lcr&quot;, &quot;port_column&quot;, &quot;port&quot;)<br>modparam(&quot;lcr&quot;, &quot;uri_scheme_column&quot;, &quot;uri_scheme&quot;)<br>
modparam(&quot;lcr&quot;, &quot;transport_column&quot;, &quot;transport&quot;)<br>modparam(&quot;lcr&quot;, &quot;grp_id_column&quot;, &quot;grp_id&quot;)<br>modparam(&quot;lcr&quot;, &quot;lcr_table&quot;, &quot;lcr&quot;)<br>
modparam(&quot;lcr&quot;, &quot;strip_column&quot;, &quot;strip&quot;)<br>modparam(&quot;lcr&quot;, &quot;prefix_column&quot;, &quot;prefix&quot;)<br>modparam(&quot;lcr&quot;, &quot;from_uri_column&quot;, &quot;from_uri&quot;)<br>
modparam(&quot;lcr&quot;, &quot;priority_column&quot;, &quot;priority&quot;)<br>modparam(&quot;lcr&quot;, &quot;flags_avp&quot;, &quot;$avp(i:712)&quot;)<br>modparam(&quot;lcr&quot;, &quot;gw_uri_avp&quot;, &quot;$avp(i:1400)&quot;)<br>
modparam(&quot;lcr&quot;, &quot;ruri_user_avp&quot;, &quot;$avp(i:1402)&quot;)<br>#modparam(&quot;lcr&quot;, &quot;contact_avp&quot;, &quot;$avp(1401)&quot;)<br>modparam(&quot;lcr&quot;, &quot;fr_inv_timer_avp&quot;, &quot;$avp(s:fr_inv_timer_avp)&quot;)<br>
modparam(&quot;lcr&quot;, &quot;fr_inv_timer&quot;, 90)<br>modparam(&quot;lcr&quot;, &quot;fr_inv_timer_next&quot;, 30)<br>modparam(&quot;lcr&quot;, &quot;rpid_avp&quot;, &quot;$avp(s:rpid)&quot;)<br><br>loadmodule &quot;alias_db.so&quot;<br>
modparam(&quot;alias_db&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br>modparam(&quot;alias_db&quot;, &quot;user_column&quot;, &quot;username&quot;)<br>modparam(&quot;alias_db&quot;, &quot;domain_column&quot;, &quot;domain&quot;)<br>
modparam(&quot;alias_db&quot;, &quot;alias_user_column&quot;, &quot;alias_username&quot;)<br>modparam(&quot;alias_db&quot;, &quot;alias_domain_column&quot;, &quot;alias_domain&quot;)<br>modparam(&quot;alias_db&quot;, &quot;use_domain&quot;, 0)<br>
<br>loadmodule &quot;uac.so&quot;<br>modparam(&quot;uac&quot;, &quot;rr_store_param&quot;, &quot;vsf&quot;)<br>modparam(&quot;uac&quot;, &quot;from_restore_mode&quot;, &quot;auto&quot;)<br>modparam(&quot;uac&quot;, &quot;from_passwd&quot;, &quot;s1p:Wiz4rd!&quot;)<br>
<br>loadmodule &quot;acc.so&quot;<br>modparam(&quot;acc&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br># flag to record to db<br>modparam(&quot;acc&quot;, &quot;db_flag&quot;, 1)<br>
modparam(&quot;acc&quot;, &quot;db_missed_flag&quot;, 2)<br># flag to log to syslog<br>modparam(&quot;acc&quot;, &quot;log_flag&quot;, 1)<br>modparam(&quot;acc&quot;, &quot;log_missed_flag&quot;, 2)<br># use extra accounting to record caller and callee username/domain<br>
# - take them from From URI and R-URI<br>modparam(&quot;acc&quot;, &quot;log_extra&quot;, &quot;src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd&quot;)<br>modparam(&quot;acc&quot;, &quot;db_extra&quot;, &quot;src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd&quot;)<br>
<br><br>########################################################################<br># Request route &#39;main&#39;<br>########################################################################<br>route[0]<br>{<br>    xlog(&quot;L_INFO&quot;, &quot;New request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
    force_rport();<br>    if(msg:len &gt; max_len)<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Message too big - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        sl_send_reply(&quot;513&quot;, &quot;Message Too Big&quot;);<br>
        exit;<br>    }<br>    if (!mf_process_maxfwd_header(&quot;10&quot;))<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Too many hops - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        sl_send_reply(&quot;483&quot;, &quot;Too Many Hops&quot;);<br>
        exit;<br>    }<br>    if(!is_method(&quot;REGISTER&quot;))<br>    {<br>        if(nat_uac_test(&quot;19&quot;))<br>        {<br>            record_route(&quot;;nat=yes&quot;);<br>        }<br>        else<br>        {<br>
            record_route();<br>        }<br>    }<br>                                                                               <br>      if (is_method(&quot;SUBSCRIBE&quot;)) {<br>        # challenge/response<br>            if (!www_authorize(&quot;&quot;, &quot;subscriber&quot;)) {<br>
                  www_challenge(&quot;&quot;, &quot;0&quot;);<br>                  exit;<br>            }<br>        exit;<br>      }<br><br>    if(is_method(&quot;CANCEL&quot;)) || is_method(&quot;BYE&quot;))<br>    {<br>
        unforce_rtp_proxy();<br>    }<br>    if(loose_route())<br>    {<br>    #    if(!has_totag())<br>        #     {<br>    #        <br>    #        xlog(&quot;L_INFO&quot;, &quot;Initial loose-routing rejected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
    #        sl_send_reply(&quot;403&quot;, &quot;Initial Loose-Routing Rejected&quot;);<br>    #        exit;<br>    #    }<br>        if(nat_uac_test(&quot;19&quot;) || search(&quot;^Route:.*;nat=yes&quot;))<br>        {<br>
            fix_nated_contact();<br>            setbflag(6);<br>        }<br>        <br>        route(8);<br>    }<br>    if(is_method(&quot;REGISTER&quot;))<br>    {<br>        route(7);<br>    }<br>    if(is_method(&quot;INVITE&quot;))<br>
    {<br>        route(9);<br>    }<br>    if(is_method(&quot;CANCEL&quot;) || is_method(&quot;ACK&quot;))<br>    {<br>        route(13);<br>    }<br>    <br>    route(14);<br>}<br><br>########################################################################<br>
# Request route &#39;clear-usr-preferences-caller&#39;<br>########################################################################<br>route[1]<br>{<br>    xlog(&quot;L_INFO&quot;, &quot;Clear caller preferences - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
    avp_delete(&quot;$avp(s:caller_cli)/g&quot;);<br>    avp_delete(&quot;$avp(s:clir)/g&quot;);<br>    <br>}<br><br>########################################################################<br># Request route &#39;clear-usr-preferences-callee&#39;<br>
########################################################################<br>route[2]<br>{<br>    xlog(&quot;L_INFO&quot;, &quot;Clear callee preferences - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    avp_delete(&quot;$avp(s:callee_fr_inv_timer)/g&quot;);<br>
    avp_delete(&quot;$avp(s:cfu)/g&quot;);<br>    avp_delete(&quot;$avp(s:cfc)/g&quot;);<br>    <br>}<br><br>########################################################################<br># Request route &#39;usr-preferences-caller&#39;<br>
########################################################################<br>route[3]<br>{<br>    route(1);<br>    xlog(&quot;L_INFO&quot;, &quot;Load caller preferences for uuid &#39;$avp(s:caller_uuid)&#39; - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
    # load caller avps<br>    avp_db_load(&quot;$avp(s:caller_uuid)&quot;, &quot;*&quot;);<br>    avp_copy(&quot;$avp(s:cli)&quot;, &quot;$avp(s:caller_cli)/d&quot;);<br>    if(is_avp_set(&quot;$avp(s:clir)/n&quot;) &amp;&amp; avp_check(&quot;$avp(s:clir)&quot;, &quot;eq/i:1&quot;))<br>
    {<br>        # mark for anonymization<br>        setflag(28);<br>    }<br>    <br>}<br><br>########################################################################<br># Request route &#39;usr-preferences-callee&#39;<br>
########################################################################<br>route[4]<br>{<br>    xlog(&quot;L_INFO&quot;, &quot;Load callee preferences for uuid &#39;$avp(s:callee_uuid)&#39; - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
    # load callee avps<br>    avp_db_load(&quot;$avp(s:callee_uuid)&quot;, &quot;*&quot;);<br>    if(is_avp_set(&quot;$avp(s:cfu)/s&quot;))<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Call-forward-unconditional to &#39;$avp(s:cfu)&#39; found - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        avp_delete(&quot;$avp(s:caller_uuid)/g&quot;);<br>        avp_copy(&quot;$avp(s:callee_uuid)&quot;, &quot;$avp(s:caller_uuid)/d&quot;);<br>        avp_pushto(&quot;$ru&quot;, &quot;$avp(s:cfu)&quot;);<br>        <br>
        route(3);<br>        route(10);<br>        exit;<br>    }<br>    if(is_avp_set(&quot;$avp(s:ringtimeout)/n&quot;))<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Setting ring timeout to $avp(s:ringtimeout) secs - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        avp_copy(&quot;$avp(s:ringtimeout)&quot;, &quot;$avp(s:callee_fr_inv_timer)/d&quot;);<br>    }<br>    <br>}<br><br>########################################################################<br># Request route &#39;clir&#39;<br>
########################################################################<br>route[5]<br>{<br>    if(isflagset(28) &amp;&amp; !isflagset(27))<br>    {<br>        setflag(27);<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Anonymize caller - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        uac_replace_from(&quot;Anonymous&quot;,&quot;sip:anonymous@anonymous.invalid&quot;);<br>        if(is_present_hf(&quot;Privacy&quot;))<br>        {<br>            remove_hf(&quot;Privacy&quot;);<br>        }<br>        append_hf(&quot;Privacy: id\r\n&quot;);<br>
    }<br>    <br>}<br><br>########################################################################<br># Request route &#39;stop-rtp-proxy&#39;<br>########################################################################<br>
route[6]<br>{<br>    if(isflagset(22))<br>    {<br>        unforce_rtp_proxy();<br>    }<br>    <br>}<br><br>########################################################################<br># Request route &#39;base-route-register&#39;<br>
########################################################################<br>route[7]<br>{<br>    sl_send_reply(&quot;100&quot;, &quot;Trying&quot;);<br>    if(!www_authorize(&quot;&quot;, &quot;subscriber&quot;)) <br>    {<br>
        <br>        xlog(&quot;L_INFO&quot;, &quot;Register authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        www_challenge(&quot;&quot;, &quot;0&quot;);<br>        exit;<br>    }<br>    if(!check_to()) <br>
    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Spoofed To-URI detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        sl_send_reply(&quot;403&quot;, &quot;Spoofed To-URI Detected&quot;);<br>        exit;<br>
    }<br>    consume_credentials();<br>    if(!search(&quot;^Contact:[ ]*\*&quot;) &amp;&amp; nat_uac_test(&quot;19&quot;)) <br>    {<br>        fix_nated_register();<br>        setbflag(6);<br>    }<br>    if(!save(&quot;location&quot;)) <br>
    {<br>        <br>        xlog(&quot;L_ERR&quot;, &quot;Saving contact failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        sl_reply_error();<br>        exit;<br>    }<br>    <br>    xlog(&quot;L_INFO&quot;, &quot;Registration successful - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
    exit;<br>    <br>}<br><br>########################################################################<br># Request route &#39;base-outbound&#39;<br>########################################################################<br>
route[8]<br>{<br>    if(is_present_hf(&quot;P-Asserted-Identity&quot;))<br>    {<br>        remove_hf(&quot;P-Asserted-Identity&quot;);<br>    }<br>    if(is_present_hf(&quot;Remote-Party-ID&quot;))<br>    {<br>        remove_hf(&quot;Remote-Party-ID&quot;);<br>
    }<br>    if(is_avp_set(&quot;$avp(s:caller_cli)/s&quot;))<br>    {<br>        if(!isflagset(28))<br>        {<br>            <br>            xlog(&quot;L_INFO&quot;, &quot;Set caller CLI &#39;$avp(s:caller_cli)&#39; - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
            append_hf(&quot;P-Asserted-Identity: &lt;$avp(s:caller_cli)&gt;\r\n&quot;);<br>        }<br>    }<br>    <br>    route(5);<br>    if(isbflagset(6))<br>    {<br>        if(!isflagset(22) &amp;&amp; !search(&quot;^Content-Length:[ ]*0&quot;))<br>
        {<br>            setflag(22);<br>            force_rtp_proxy();<br>        }<br>        <br>        t_on_reply(&quot;2&quot;);<br>    }<br>    else<br>    {<br>        <br>        t_on_reply(&quot;1&quot;);<br>    }<br>
    if(!isflagset(21))<br>    {<br>        <br>        t_on_failure(&quot;2&quot;);<br>    }<br>    if(isflagset(29))<br>    {<br>        append_branch();<br>    }<br>    if(is_present_hf(&quot;Proxy-Authorization&quot;))<br>
    {<br>        consume_credentials();<br>    }<br>    <br>    xlog(&quot;L_INFO&quot;, &quot;Request leaving server, D-URI=&#39;$du&#39; - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    # no 100 (we already sent it) and no DNS blacklisting<br>
    if(!t_relay(&quot;0x05&quot;))<br>    {<br>        sl_reply_error();<br>        if(is_method(&quot;INVITE&quot;) &amp;&amp; isbflagset(6))<br>        {<br>            unforce_rtp_proxy();<br>        }<br>    }<br>    exit;<br>
    <br>}<br><br>########################################################################<br># Request route &#39;base-route-invite&#39;<br>########################################################################<br>route[9]<br>
{<br>    sl_send_reply(&quot;100&quot;, &quot;Trying&quot;);<br>    if(from_gw())<br>    {<br>        $avp(s:caller_uuid)=&quot;0&quot;;<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Call from PSTN&#39; - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        setflag(23);<br>        $avp(s:ringtimeout)=1000;<br>    }<br>    else<br>    {<br>        if(!proxy_authorize(&quot;&quot;, &quot;subscriber&quot;)) <br>        {<br>            <br>            xlog(&quot;L_INFO&quot;, &quot;Proxy authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
            proxy_challenge(&quot;&quot;, &quot;0&quot;);<br>            exit;<br>        }<br>        if(!check_from()) <br>        {<br>            <br>            xlog(&quot;L_INFO&quot;, &quot;Spoofed From-URI detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
            sl_send_reply(&quot;403&quot;, &quot;Spoofed From-URI Detected&quot;);<br>            exit;<br>        }<br>    }<br>    <br>    route(3);<br>    if(nat_uac_test(&quot;19&quot;)) <br>    {<br>        fix_nated_contact();<br>
        setbflag(6);<br>    }<br>    <br>    route(10);<br>}<br><br>########################################################################<br># Request route &#39;invite-find-callee&#39;<br>########################################################################<br>
route[10]<br>{<br>    if(alias_db_lookup(&quot;dbaliases&quot;))<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Callee was aliased - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    }<br>    <br>    route(2);<br>
    if(!is_domain_local(&quot;$rd&quot;))<br>    {<br>        setflag(20);<br>        $avp(s:callee_uuid) = &quot;0&quot;;<br>        <br>        route(12);<br>    }<br>    avp_delete(&quot;$avp(s:callee_uuid)&quot;);<br>
    avp_db_query(&quot;select uuid from subscriber where username = &#39;$rU&#39;&quot;, &quot;$avp(s:callee_uuid)&quot;);<br>    if(is_avp_set(&quot;$avp(s:callee_uuid)/s&quot;))<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Callee is local, uuid=&#39;$avp(s:callee_uuid)&#39; - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        route(11);<br>    }<br>    else<br>    {<br>        $avp(s:callee_uuid) = &quot;0&quot;;<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Callee is not local - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        route(12);<br>    }<br>    exit;<br>    <br>}<br><br>########################################################################<br># Request route &#39;invite-to-internal&#39;<br>########################################################################<br>
route[11]<br>{<br>    route(4);<br>    if(!lookup(&quot;location&quot;)) <br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Local user offline - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        sl_send_reply(&quot;404&quot;, &quot;User Offline&quot;);<br>
    }<br>    else<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Local user online - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        route(8);<br>    }<br>    exit;<br>    <br>}<br><br>########################################################################<br>
# Request route &#39;invite-to-external&#39;<br>########################################################################<br>route[12]<br>{<br>    if(isflagset(20))<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Call to foreign domain - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        route(8);<br>        exit;<br>    }<br>    if(!isflagset(23))<br>    {<br>                <br>        if(uri =~ &quot;^sip:\*86@.*&quot;)<br>                {<br>               xlog(&quot;L_INFO&quot;, &quot;User accessing Voicemail - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
                 rewritehostport(&quot;<a href="http://voicemailserver.vpbx.com:5060">voicemailserver.vpbx.com:5060</a>&quot;);<br>    route(8);<br>                }<br><br><br>        # don&#39;t allow calls relaying from PSTN to PSTN, if not explicitely forwarded<br>
        else if(uri =~ &quot;^sip:[0-9]+@&quot;)<br>        {<br>            # only route numeric users to PSTN<br>            if(!load_gws())<br>            {<br>                <br>                xlog(&quot;L_ERR&quot;, &quot;Error loading PSTN gateways - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
                sl_send_reply(&quot;503&quot;, &quot;PSTN Termination Currently Unavailable&quot;);<br>                exit;<br>            }<br>            if(!next_gw())<br>            {<br>                <br>                xlog(&quot;L_ERR&quot;, &quot;No PSTN gateways available - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
                sl_send_reply(&quot;503&quot;, &quot;PSTN Termination Currently Unavailable&quot;);<br>                exit;<br>            }<br>            setflag(21);<br>            <br>            t_on_failure(&quot;1&quot;);<br>
            route(8);<br>        }<br>    }<br>    <br>    xlog(&quot;L_INFO&quot;, &quot;Call to unknown user - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    sl_send_reply(&quot;404&quot;, &quot;User Not Found&quot;);<br>
    exit;<br>    <br>}<br><br>########################################################################<br># Request route &#39;base-route-local&#39;<br>########################################################################<br>
route[13]<br>{<br>    t_on_reply(&quot;1&quot;);<br>    if(t_check_trans())<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Request leaving server - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    }<br>
    else<br>        {<br><br>                xlog(&quot;L_INFO&quot;, &quot;Dropping mis-routed request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        exit;<br>        }<br>    if(!t_relay())<br>    {<br>
        sl_reply_error();<br>    }<br>    exit;<br>    <br>}<br><br><br>########################################################################<br># Request route &#39;base-route-generic&#39;<br>########################################################################<br>
route[14]<br>{<br>    xlog(&quot;L_INFO&quot;, &quot;Method not supported - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    sl_send_reply(&quot;501&quot;, &quot;Method Not Supported Here&quot;);<br>    exit;<br>
    <br>}<br><br>########################################################################<br># Request route &#39;base-filter-failover&#39;<br>########################################################################<br>route[15]<br>
{<br>    if(!t_check_status(&quot;408|500|503&quot;))<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;No failover routing needed for this response code - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        route(6);<br>        exit;<br>    }<br>    <br>}<br><br><br>########################################################################<br>#Send the call out<br>########################################################################<br>
<br>route[16]<br>{<br>#send the call outward<br><br> if(method==&quot;INVITE&quot; &amp;&amp; !isflagset(10))<br> {<br>  t_on_failure(&quot;2&quot;);<br> };<br> <br> if (!t_relay()) <br> {<br>  xlog(&quot;L_WARN&quot;, &quot;ERROR: t_relay failed&quot;);<br>
  sl_reply_error();<br> };<br><br>}<br><br>########################################################################<br># Request route &#39;Voicemail and Asterisk for further processing&#39;<br>########################################################################<br>
failure_route[3]<br>{<br>    <br>         if(!t_was_cancelled())<br>         {<br>          revert_uri();<br>          rewritehostport(&quot;<a href="http://voicemailserver.vpbx.com:5060">voicemailserver.vpbx.com:5060</a>&quot;);<br>
          append_branch();<br>          #PREVENT SOME CRAZY VOICEMAIL LOOP<br>        xlog(&quot;L_INFO&quot;, &quot;No Answer Sending the call to Voicemail  - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>           setflag(10);<br>
           route(8);<br> }<br>}<br>########################################################################<br># Reply route &#39;base-standard-reply&#39;<br>########################################################################<br>
onreply_route[1]<br>{<br>    xlog(&quot;L_INFO&quot;, &quot;Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    exit;<br>    <br>}<br><br>########################################################################<br>
# Reply route &#39;base-nat-reply&#39;<br>########################################################################<br>onreply_route[2]<br>{<br>    xlog(&quot;L_INFO&quot;, &quot;NAT-Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
    if(nat_uac_test(&quot;1&quot;))<br>    {<br>        fix_nated_contact();<br>    }<br>    if(isbflagset(6) &amp;&amp; status=~&quot;(180)|(183)|2[0-9][0-9]&quot;) <br>    {<br>        if(!search(&quot;^Content-Length:[ ]*0&quot;))<br>
        {<br>            force_rtp_proxy();<br>        }<br>    }<br>    exit;<br>    <br>}<br><br>########################################################################<br># Failure route &#39;pstn-failover&#39;<br>########################################################################<br>
failure_route[1]<br>{<br>    xlog(&quot;L_INFO&quot;, &quot;Failure route for PSTN entered - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    route(15);<br>    if(!next_gw())<br>    {<br>        <br>        xlog(&quot;L_ERR&quot;, &quot;Failed to select next PSTN gateway - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        route(6);<br>        exit;<br>    }<br>    <br>    t_on_failure(&quot;3&quot;);<br>    route(8);<br>}<br><br>########################################################################<br># Failure route &#39;base-standard-failure&#39;<br>
########################################################################<br>failure_route[2]<br>{<br>    if(!t_was_cancelled())<br>    {<br>        revert_uri();<br>        seturi(&quot;sip:*<a href="mailto:87@openser.org">87@openser.org</a>&quot;);<br>
        rewritehostport(&quot;<a href="http://voicemailserver.vpbx.com:5060">voicemailserver.vpbx.com:5060</a>&quot;);<br>        append_branch();<br>        xlog(&quot;L_INFO&quot;,&quot;Call to Voicemail&quot;);<br>        setflag(10);<br>
        route(10);<br>    }<br>    if(t_check_status(&quot;422|481|487&quot;))<br>    {<br>        <br>        xlog(&quot;L_INFO&quot;, &quot;Final reply - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        route(6);<br>
        exit;<br>    }<br>    <br>    t_on_branch(&quot;1&quot;);<br>    xlog(&quot;L_INFO&quot;, &quot;Redirect from UAC intercepted - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>    route(10);<br>    if($avp(s:cfc) != NULL)<br>
    {<br>        avp_pushto(&quot;$ru&quot;, &quot;$avp(s:cfc)&quot;);<br>        setflag(29);<br>        append_branch();<br>        <br>        t_on_branch(&quot;1&quot;);<br>        xlog(&quot;L_INFO&quot;, &quot;CFC detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
        route(10);<br>    }<br>    <br>    route(15);<br>    route(6);<br>}<br><br>########################################################################<br># Branch route &#39;cfc-drop-local&#39;<br>########################################################################<br>
branch_route[1]<br>{<br>    if(is_domain_local(&quot;$rd&quot;))<br>    {<br>        xlog(&quot;L_INFO&quot;, &quot;Dropping local branch - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>        drop();<br>    }<br>
    <br>}<br><br><br><br clear="all"><br>-- <br>Regards,<br><br>Chandrakant Solanki<br>