<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:278221447;
        mso-list-template-ids:-1669300632;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:1253514563;
        mso-list-template-ids:-1180803338;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FR" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I’m a newbie too and I’m looking at the 5.0.0 version.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">For your issue, it seems you want to use jsonrpcs module, but it is not loaded.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Try to add the “loadmodule "jsonrpcs.so" in your file.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Cordialement<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Patrick GINHOUX</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">De :</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> sr-users [mailto:sr-users-bounces@lists.sip-router.org]
<b>De la part de</b> Mostafa Zare<br>
<b>Envoyé :</b> mercredi 15 mars 2017 16:39<br>
<b>À :</b> sr-users@lists.sip-router.org<br>
<b>Objet :</b> [SR-Users] mi_fifo: No module matching <jsonrpcs> found<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">hi guys<o:p></o:p></p>
<div>
<p class="MsoNormal">i'm newbie to kamailio.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">i've installed kamailio version 5 (and all the modules) from pkgs on a jessie debian.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">i have the below config on my kamailio.cfg<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">when i try to start kamailio service it throws the following error.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">what's the problem?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
systemctl status kamailio:<o:p></o:p></li></ul>
</div>
<div>
<div>
<p class="MsoNormal">kamailio.service - Kamailio (OpenSER) - the Open Source SIP Server<br>
   Loaded: loaded (/lib/systemd/system/kamailio.service; enabled)<br>
   Active: failed (Result: exit-code) since Wed 2017-03-15 19:01:17 IRST; 10s ago<br>
  Process: 9377 ExecStart=/usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f $CFGFILE -m $SHM_MEMORY -M $PKG_MEMORY -u $USER -g $GROUP (code=exited, status=255)<br>
 Main PID: 1576 (code=exited, status=0/SUCCESS)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian kamailio[9377]: ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <jsonrpcs> found<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian kamailio[9377]: CRITICAL: <core> [core/cfg.y:3404]: yyerror_at(): parse error in config file /etc/kamailio/kamailio.cfg, line 103, column 72: Can't set module parameter<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian kamailio[9377]: ERROR: <core> [core/modparam.c:141]: set_mod_param_regex(): parameter <ds_probing_threshhold> of type <2> not found in module <dispatcher><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian kamailio[9377]: CRITICAL: <core> [core/cfg.y:3404]: yyerror_at(): parse error in config file /etc/kamailio/kamailio.cfg, line 135, column 50: Can't set module parameter<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian kamailio[9377]: ERROR: bad config file (4 errors)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian kamailio[9377]: INFO: <core> [core/sctp_core.c:53]: sctp_core_destroy(): SCTP API not initialized<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian kamailio[9377]: loading modules under config path: /usr/lib/x86_64-linux-gnu/kamailio/modules/<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian systemd[1]: kamailio.service: control process exited, code=exited status=255<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian systemd[1]: Failed to start Kamailio (OpenSER) - the Open Source SIP Server.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mar 15 19:01:17 kamailio-debian systemd[1]: Unit kamailio.service entered failed state.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2">
kamailio.cfg:<o:p></o:p></li></ul>
</div>
<div>
<div>
<p class="MsoNormal"># *** To run in debug mode:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#     - define WITH_DEBUG<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">#!ifndef DBURL<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#!define DBURL "mysql://kamailio:kamailiorw@localhost/kamailio"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#!endif<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">####### Global Parameters #########<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">#!ifdef WITH_DEBUG<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">debug=4<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">log_stderror=yes<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#!else<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">debug=2<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">log_stderror=no<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#!endif<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">memdbg=5<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">memlog=5<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># log_facility=LOG_LOCAL0<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># Ds increasing debug...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">debug=2<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">fork=yes<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">children=4<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">/* comment the next line to enable TCP */<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">disable_tcp=yes<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">/* uncomment the next line to disable the auto discovery of local aliases<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   based on revers DNS on IPs (default on) */<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">auto_aliases=no<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">/* add local domain aliases */<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># alias="<a href="http://mysipserver.com" target="_blank">mysipserver.com</a>"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">port=5060<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">/* uncomment and configure the following line if you want Kamailio to<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   bind on a specific interface/port/proto (default bind on all available) */<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># listen=udp:<a href="http://0.0.0.0:5060" target="_blank">0.0.0.0:5060</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># listen=<a href="http://127.0.0.1:5060" target="_blank">127.0.0.1:5060</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">sip_warning=no<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">####### Modules Section ########<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># set paths to location of modules (to sources or installation folders)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">mpath="/usr/lib/x86_64-linux-gnu/kamailio/modules/"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">#!ifdef WITH_MYSQL<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "db_mysql.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#!endif<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "mi_fifo.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "kex.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "tm.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "tmx.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "sl.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "rr.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "pv.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "maxfwd.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "textops.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "siputils.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "xlog.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "sanity.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "ctl.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "mi_rpc.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "acc.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">loadmodule "dispatcher.so"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># ----------------- setting module-specific parameters ---------------<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># ----- mi_fifo params -----<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("jsonrpcs", "fifo_name", "/var/run/kamailio/kamailio_rpc.fifo")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># ----- rr params -----<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># add value to ;lr param to cope with most of the UAs<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("rr", "enable_full_lr", 1)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># do not append from tag to the RR (no need for this script)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("rr", "append_fromtag", 0)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># ----- acc params -----<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("acc", "log_flag", 1)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("acc", "failed_transaction_flag", 3)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("acc", "log_extra",<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        "src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd;src_ip=$si")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># ----- tm params -----<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("tm", "fr_timer", 2000)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("tm", "fr_inv_timer", 40000)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># ----- dispatcher params -----<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># modparam("dispatcher", "db_url", DBURL)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># modparam("dispatcher", "table_name", "dispatcher")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "list_file", "/etc/kamailio/dispatcher.list")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "flags", 2)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "ds_probing_mode", 1)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "ds_ping_interval", 15)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "ds_probing_threshhold", 1)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">modparam("dispatcher", "ds_ping_reply_codes", "class=2;class=3;class=4")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">####### Routing Logic ########<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># main request routing logic<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">route {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        # per request initial checks<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        route(REQINIT);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        # handle requests within SIP dialogs<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        route(WITHINDLG);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        ### only initial requests (no To tag)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        # CANCEL processing<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if (is_method("CANCEL"))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                if (t_check_trans())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        t_relay();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        t_check_trans();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        # record routing for dialog forming requests (in case they are routed)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        # - remove preloaded route headers<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        remove_hf("Route");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if (is_method("INVITE|SUBSCRIBE"))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                record_route();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        # account only INVITEs<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if (is_method("INVITE"))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                setflag(1); # do accounting<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        # dispatch destinations<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        route(DISPATCH);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        # handle presence related requests<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        route(PRESENCE);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        # handle registrations<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        route(REGISTRAR);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        if ($rU==$null)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                # request with no Username in RURI<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                sl_send_reply("484","Address Incomplete");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">route[RELAY] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if (!t_relay()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                sl_reply_error();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># Per SIP request initial checks<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">route[REQINIT] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if (!mf_process_maxfwd_header("10")) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                sl_send_reply("483","Too Many Hops");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        if(!sanity_check("1511", "7"))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                xlog("Malformed SIP message from $si:$sp\n");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># Handle requests within SIP dialogs<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">route[WITHINDLG] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if (has_totag()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                # sequential request withing a dialog should<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                # take the path determined by record-routing<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                if (loose_route()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        if (is_method("BYE")) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                setflag(1); # do accounting ...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                setflag(3); # ... even if the transaction fails<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        route(RELAY);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                } else {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        if (is_method("SUBSCRIBE") && uri == myself) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                # in-dialog subscribe requests<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                route(PRESENCE);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        if ( is_method("ACK") ) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                if ( t_check_trans() ) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                        # non loose-route, but stateful ACK;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                        # must be ACK after a 487 or e.g. 404 from upstream server<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                        t_relay();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                        exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                } else {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                        # ACK without matching transaction ... ignore and discard.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                        exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        sl_send_reply("404","Not here");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># Handle SIP registrations<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">route[REGISTRAR] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if(!is_method("REGISTER"))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                return;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        sl_send_reply("404", "No registrar");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># Presence server route<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">route[PRESENCE] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if(!is_method("PUBLISH|SUBSCRIBE"))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                return;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        sl_send_reply("404", "Not here");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"># Dispatch requests<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">route[DISPATCH] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        # Destination types:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        # <a href="http://kamailio.org/docs/modules/4.2.x/modules/dispatcher.html#dispatcher.f.ds_select_dst" target="_blank">
http://kamailio.org/docs/modules/4.2.x/modules/dispatcher.html#dispatcher.f.ds_select_dst</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        # 4 = round robin<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        # 9 = weight-based<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        # round robin dispatching on gateways group '1'<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        if(!ds_select_dst("1", "9"))<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                send_reply("404", "No destination");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        t_set_fr(0,2000);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        t_on_failure("ROUTE_ADVANCE");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        route(RELAY);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">event_route[dispatcher:dst-down] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        xlog("L_ERR", "Destination down: $rm $ru ($du)\n");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">event_route[dispatcher:dst-up] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        xlog("L_ERR", "Destination up: $rm $ru\n");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">failure_route[ROUTE_ADVANCE] {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        if (t_is_canceled()) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        xlog("L_NOTICE", "Media server $du failed to answer, selecting other one!\n");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        if (t_check_status("503") || (t_branch_timeout() and !t_branch_replied())) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">                ds_mark_dst("ip");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                # select the new destination<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                if(ds_next_dst())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        # again set local timeout for reply<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        # xlog("L_NOTICE", "Selecting next route upon failure\n");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        t_set_fr(0,2000);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        t_on_failure("ROUTE_ADVANCE");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        route(RELAY);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                else<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        #last available node failed to reply, no other destinations available<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        send_reply("404", "No destination");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        xlog("L_NOTICE","No destination, sent 404\n");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                        exit;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">        } else {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                xlog("L_NOTICE","Unhandled failured route!\n");<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>