<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>