Hi,

 

I’m a newbie too and I’m looking at the 5.0.0 version.

 

For your issue, it seems you want to use jsonrpcs module, but it is not loaded.

 

Try to add the “loadmodule "jsonrpcs.so" in your file.

 

Cordialement

Patrick GINHOUX

 

De : sr-users [mailto:sr-users-bounces@lists.sip-router.org] De la part de Mostafa Zare
Envoyé : mercredi 15 mars 2017 16:39
À : sr-users@lists.sip-router.org
Objet : [SR-Users] mi_fifo: No module matching <jsonrpcs> found

 

hi guys

i'm newbie to kamailio.

i've installed kamailio version 5 (and all the modules) from pkgs on a jessie debian.

i have the below config on my kamailio.cfg

when i try to start kamailio service it throws the following error.

what's the problem?

 

  • systemctl status kamailio:

kamailio.service - Kamailio (OpenSER) - the Open Source SIP Server
   Loaded: loaded (/lib/systemd/system/kamailio.service; enabled)
   Active: failed (Result: exit-code) since Wed 2017-03-15 19:01:17 IRST; 10s ago
  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)
 Main PID: 1576 (code=exited, status=0/SUCCESS)

 

Mar 15 19:01:17 kamailio-debian kamailio[9377]: ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <jsonrpcs> found

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

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>

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

Mar 15 19:01:17 kamailio-debian kamailio[9377]: ERROR: bad config file (4 errors)

Mar 15 19:01:17 kamailio-debian kamailio[9377]: INFO: <core> [core/sctp_core.c:53]: sctp_core_destroy(): SCTP API not initialized

Mar 15 19:01:17 kamailio-debian kamailio[9377]: loading modules under config path: /usr/lib/x86_64-linux-gnu/kamailio/modules/

Mar 15 19:01:17 kamailio-debian systemd[1]: kamailio.service: control process exited, code=exited status=255

Mar 15 19:01:17 kamailio-debian systemd[1]: Failed to start Kamailio (OpenSER) - the Open Source SIP Server.

Mar 15 19:01:17 kamailio-debian systemd[1]: Unit kamailio.service entered failed state.

 

 

  • kamailio.cfg:

# *** To run in debug mode:

#     - define WITH_DEBUG

#

 

#!ifndef DBURL

#!define DBURL "mysql://kamailio:kamailiorw@localhost/kamailio"

#!endif

 

####### Global Parameters #########

 

#!ifdef WITH_DEBUG

debug=4

log_stderror=yes

#!else

debug=2

log_stderror=no

#!endif

 

memdbg=5

memlog=5

 

# log_facility=LOG_LOCAL0

# Ds increasing debug...

debug=2

 

fork=yes

children=4

 

/* comment the next line to enable TCP */

disable_tcp=yes

 

/* uncomment the next line to disable the auto discovery of local aliases

   based on revers DNS on IPs (default on) */

auto_aliases=no

 

/* add local domain aliases */

# alias="mysipserver.com"

 

port=5060

 

/* uncomment and configure the following line if you want Kamailio to

   bind on a specific interface/port/proto (default bind on all available) */

# listen=udp:0.0.0.0:5060

# listen=127.0.0.1:5060

 

 

sip_warning=no

 

####### Modules Section ########

 

# set paths to location of modules (to sources or installation folders)

mpath="/usr/lib/x86_64-linux-gnu/kamailio/modules/"

 

#!ifdef WITH_MYSQL

loadmodule "db_mysql.so"

#!endif

 

loadmodule "mi_fifo.so"

loadmodule "kex.so"

loadmodule "tm.so"

loadmodule "tmx.so"

loadmodule "sl.so"

loadmodule "rr.so"

loadmodule "pv.so"

loadmodule "maxfwd.so"

loadmodule "textops.so"

loadmodule "siputils.so"

loadmodule "xlog.so"

loadmodule "sanity.so"

loadmodule "ctl.so"

loadmodule "mi_rpc.so"

loadmodule "acc.so"

loadmodule "dispatcher.so"

 

 

# ----------------- setting module-specific parameters ---------------

 

 

# ----- mi_fifo params -----

modparam("jsonrpcs", "fifo_name", "/var/run/kamailio/kamailio_rpc.fifo")

 

 

# ----- rr params -----

# add value to ;lr param to cope with most of the UAs

modparam("rr", "enable_full_lr", 1)

# do not append from tag to the RR (no need for this script)

modparam("rr", "append_fromtag", 0)

 

 

# ----- acc params -----

modparam("acc", "log_flag", 1)

modparam("acc", "failed_transaction_flag", 3)

modparam("acc", "log_extra",

        "src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd;src_ip=$si")

 

# ----- tm params -----

modparam("tm", "fr_timer", 2000)

modparam("tm", "fr_inv_timer", 40000)

 

# ----- dispatcher params -----

# modparam("dispatcher", "db_url", DBURL)

# modparam("dispatcher", "table_name", "dispatcher")

 

modparam("dispatcher", "list_file", "/etc/kamailio/dispatcher.list")

modparam("dispatcher", "flags", 2)

modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")

modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")

modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")

 

modparam("dispatcher", "ds_probing_mode", 1)

modparam("dispatcher", "ds_ping_interval", 15)

modparam("dispatcher", "ds_probing_threshhold", 1)

modparam("dispatcher", "ds_ping_reply_codes", "class=2;class=3;class=4")

 

 

####### Routing Logic ########

 

 

# main request routing logic

 

route {

 

        # per request initial checks

        route(REQINIT);

 

        # handle requests within SIP dialogs

        route(WITHINDLG);

 

        ### only initial requests (no To tag)

 

        # CANCEL processing

        if (is_method("CANCEL"))

        {

                if (t_check_trans())

                        t_relay();

                exit;

        }

 

        t_check_trans();

 

        # record routing for dialog forming requests (in case they are routed)

        # - remove preloaded route headers

        remove_hf("Route");

        if (is_method("INVITE|SUBSCRIBE"))

                record_route();

 

        # account only INVITEs

        if (is_method("INVITE"))

        {

                setflag(1); # do accounting

        }

        # dispatch destinations

        route(DISPATCH);

 

        # handle presence related requests

        route(PRESENCE);

 

        # handle registrations

        route(REGISTRAR);

 

        if ($rU==$null)

        {

                # request with no Username in RURI

                sl_send_reply("484","Address Incomplete");

                exit;

        }

 

}

 

 

route[RELAY] {

        if (!t_relay()) {

                sl_reply_error();

        }

        exit;

}

 

# Per SIP request initial checks

route[REQINIT] {

        if (!mf_process_maxfwd_header("10")) {

                sl_send_reply("483","Too Many Hops");

                exit;

        }

 

        if(!sanity_check("1511", "7"))

        {

                xlog("Malformed SIP message from $si:$sp\n");

                exit;

        }

}

 

# Handle requests within SIP dialogs

route[WITHINDLG] {

        if (has_totag()) {

                # sequential request withing a dialog should

                # take the path determined by record-routing

                if (loose_route()) {

                        if (is_method("BYE")) {

                                setflag(1); # do accounting ...

                                setflag(3); # ... even if the transaction fails

                        }

                        route(RELAY);

                } else {

                        if (is_method("SUBSCRIBE") && uri == myself) {

                                # in-dialog subscribe requests

                                route(PRESENCE);

                                exit;

                        }

                        if ( is_method("ACK") ) {

                                if ( t_check_trans() ) {

                                        # non loose-route, but stateful ACK;

                                        # must be ACK after a 487 or e.g. 404 from upstream server

                                        t_relay();

                                        exit;

                                } else {

                                        # ACK without matching transaction ... ignore and discard.

                                        exit;

                                }

                        }

                        sl_send_reply("404","Not here");

                }

                exit;

        }

}

 

# Handle SIP registrations

route[REGISTRAR] {

        if(!is_method("REGISTER"))

                return;

        sl_send_reply("404", "No registrar");

        exit;

}

 

# Presence server route

route[PRESENCE] {

        if(!is_method("PUBLISH|SUBSCRIBE"))

                return;

 

        sl_send_reply("404", "Not here");

        exit;

}

 

# Dispatch requests

route[DISPATCH] {

        # Destination types:

        # http://kamailio.org/docs/modules/4.2.x/modules/dispatcher.html#dispatcher.f.ds_select_dst

        # 4 = round robin

        # 9 = weight-based

        # round robin dispatching on gateways group '1'

        if(!ds_select_dst("1", "9"))

        {

                send_reply("404", "No destination");

                exit;

        }

 

        t_set_fr(0,2000);

        t_on_failure("ROUTE_ADVANCE");

 

        route(RELAY);

        exit;

}

 

event_route[dispatcher:dst-down] {

        xlog("L_ERR", "Destination down: $rm $ru ($du)\n");

}

 

event_route[dispatcher:dst-up] {

        xlog("L_ERR", "Destination up: $rm $ru\n");

}

 

failure_route[ROUTE_ADVANCE] {

 

        if (t_is_canceled()) {

                exit;

        }

 

        xlog("L_NOTICE", "Media server $du failed to answer, selecting other one!\n");

 

        if (t_check_status("503") || (t_branch_timeout() and !t_branch_replied())) {

 

                ds_mark_dst("ip");

                # select the new destination

                if(ds_next_dst())

                {

                        # again set local timeout for reply

                        # xlog("L_NOTICE", "Selecting next route upon failure\n");

                        t_set_fr(0,2000);

                        t_on_failure("ROUTE_ADVANCE");

                        route(RELAY);

                        exit;

                }

                else

                {

                        #last available node failed to reply, no other destinations available

                        send_reply("404", "No destination");

                        xlog("L_NOTICE","No destination, sent 404\n");

                        exit;

                }

 

        } else {

                xlog("L_NOTICE","Unhandled failured route!\n");

        }

 

}