[SR-Users] cnxcc

Carlos Ruiz Díaz carlos.ruizdiaz at gmail.com
Tue Jun 3 15:19:10 CEST 2014


Hi Kelvin,

thank you for the feedback. This will surely help others to troubleshoot
their problems :).

Regards,
Carlos


On Mon, Jun 2, 2014 at 9:49 PM, Kelvin Chua <kelchy at gmail.com> wrote:

> hi guys,
> just to close this issue, i figured the problem only affects scenarios
> where dlg_manage() comes before cnxcc_set_max_credits()
> Kelvin Chua
>
>
> On Mon, May 12, 2014 at 10:00 AM, Carlos Ruiz Díaz
> <carlos.ruizdiaz at gmail.com> wrote:
> > Hi,
> >
> > Check this commitdiff [1], it has some subtle lines of code that remove
> the
> > deadlock.
> >
> > Rtimer is not required, it is only used in the sample configuration file
> to
> > display the amount of concurrent calls and to grant more time when
> needed,
> > but strictly in the business logic sense. Internally, dialog is the only
> > module that is a dependency.
> >
> > [1]
> >
> http://git.sip-router.org/cgi-bin/gitweb.cgi?p=sip-router;a=commitdiff;h=d0f0ba702bd44524bc9f52e07341db03267b15f7
> >
> > Regards,
> > Carlos
> >
> >
> >
> > On Sun, May 11, 2014 at 9:57 AM, Kelvin Chua <kelchy at gmail.com> wrote:
> >>
> >> hi carlos,
> >>
> >> i'm looking at the commitdiff, seems like it's just indentations
> >>
> >>
> http://git.sip-router.org/cgi-bin/gitweb.cgi?p=sip-router;a=commitdiff;h=d0f0ba702bd44524bc9f52e07341db03267b15f7
> >> is there something i am missing?
> >>
> >> by the way, based on the module documentation, the only dependency is
> the
> >> dialog module, shouldn't it include the rtimer module?
> >> is it really required? what if i would only use CNXCC_MONEY and not
> >> CNXCC_TIME or CNXCC_CHANNEL? should i still load
> >> rtimer.so before loading cnxcc.so?
> >>
> >> Kelvin Chua
> >>
> >>
> >> On Mon, Apr 28, 2014 at 9:13 PM, Carlos Ruiz Díaz
> >> <carlos.ruizdiaz at gmail.com> wrote:
> >>>
> >>> I'm glad that it worked.
> >>>
> >>> Please don't forget to "git pull" to update your cnxcc copy.
> >>>
> >>> Regards,
> >>> Carlos
> >>>
> >>>
> >>> On Mon, Apr 28, 2014 at 3:17 AM, Andrzej Ciupek
> >>> <andrzej.ciupek at hotmail.com> wrote:
> >>>>
> >>>> Hello again
> >>>>
> >>>> It works perfect, I was missing "setflag(DLG_FLAG);" in my main route.
> >>>>
> >>>> Thank You very much for help.
> >>>>
> >>>> Greetings
> >>>> Andrzej Ciupek
> >>>>
> >>>> ________________________________
> >>>> From: andrzej.ciupek at hotmail.com
> >>>> To: carlos.ruizdiaz at gmail.com
> >>>> CC: sr-users at lists.sip-router.org
> >>>> Subject: RE: [SR-Users] cnxcc
> >>>> Date: Mon, 28 Apr 2014 09:54:30 +0200
> >>>>
> >>>>
> >>>> Hello
> >>>>
> >>>> You are amazing !!
> >>>>
> >>>> Your example work perfect, but I have to work with mine cfg, because
> >>>> when I use part of Your route into my config it doesn't work like it
> should.
> >>>> I think I have some problems with dialog module, because when I start
> >>>> Your script I get:
> >>>>
> >>>> Apr 28 09:47:31 kamailio /usr/local/sbin/kamailio[3060]: INFO:
> <script>:
> >>>> dialog started
> >>>>
> >>>> I don't see it using my config, so it looks like dialog module doesn't
> >>>> work in my config file in proper way.
> >>>> I will let You know when I find a bug in my script.
> >>>>
> >>>> Now when I have working example it will be easier.
> >>>>
> >>>> Greetings
> >>>> Andrzej Ciupek
> >>>>
> >>>> ________________________________
> >>>> Date: Sun, 27 Apr 2014 21:29:34 -0500
> >>>> Subject: Re: [SR-Users] cnxcc
> >>>> From: carlos.ruizdiaz at gmail.com
> >>>> To: andrzej.ciupek at hotmail.com
> >>>> CC: sr-users at lists.sip-router.org
> >>>>
> >>>> Kelvin,
> >>>>
> >>>> can you update your copy and try again? Maybe your problem was related
> >>>> to this, or maybe not. In either case, I will try to reproduce your
> issue
> >>>> later this week :).
> >>>>
> >>>> Regards,
> >>>>
> >>>>
> >>>> On Sun, Apr 27, 2014 at 9:27 PM, Carlos Ruiz Díaz
> >>>> <carlos.ruizdiaz at gmail.com> wrote:
> >>>>
> >>>> Hi Andrzej,
> >>>>
> >>>> I found a deadlock situation using the script you posted, thanks to an
> >>>> unusual way of using the functions that the module exports.
> >>>>
> >>>> About the script itself: I found a few inconsistencies that would have
> >>>> caused a problem with handing the calls even if there was no bug in
> the
> >>>> software. For example:
> >>>>
> >>>> - if you want to set the maximum amount of calls per user, use the
> >>>> function "cnxcc_set_max_channel"
> >>>>
> >>>> - the "call-shutdown" event route is only executed if the call runs
> out
> >>>> of credit, never for "normal call clearing". For that, use
> "dialog:end" or
> >>>> "dialog:failed" instead.
> >>>>
> >>>> - you cannot access "$var(client)" from outside the process that
> created
> >>>> it. This means that when the call is killed, "$var(client)" will have
> a NULL
> >>>> value since this event is processed by a completely different
> process. If
> >>>> you want to have this information available everywhere, use a shared
> memory
> >>>> variable instead ($sht).
> >>>>
> >>>> I created a sample script [1] that applies your requirements in a
> >>>> slightly different way:
> >>>>
> >>>> - it authorizes the call by checking the balance
> >>>> - it kills the call when the credit is over
> >>>> - it doesn't allow more than one call per customer
> >>>>
> >>>> [1] https://gist.github.com/caruizdiaz/11359122
> >>>>
> >>>> In this example I used a shared memory variable, to give you an idea
> of
> >>>> how to persist the customer's ID across processes.
> >>>>
> >>>> Regards,
> >>>> Carlos
> >>>>
> >>>> -
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> On Sat, Apr 26, 2014 at 10:34 AM, Carlos Ruiz Díaz
> >>>> <carlos.ruizdiaz at gmail.com> wrote:
> >>>>
> >>>> I did find a bug, using your config script, I will fix it this
> weekend.
> >>>> Try with this configuration file [1].
> >>>>
> >>>> [1] https://gist.github.com/caruizdiaz/11323017
> >>>>
> >>>> In summary, you can't use more than one check mechanisms. It has to be
> >>>> credit, time or channels, exclusively.
> >>>>
> >>>> Also, I need to test your config with Kam 4.1. I am using the trunk
> >>>> version.
> >>>>
> >>>> Regards,
> >>>>
> >>>>
> >>>> On Sat, Apr 26, 2014 at 10:23 AM, Andrzej Ciupek
> >>>> <andrzej.ciupek at hotmail.com> wrote:
> >>>>
> >>>> Yes. I want prepaid subscribers be able to create only one channel to
> >>>> prevent frauds for simultaneous calls.
> >>>>
> >>>> Greetings
> >>>> Andrzej Ciupek
> >>>> ________________________________
> >>>> Od: Carlos Ruiz Díaz
> >>>> Wysłano: ‎2014-‎04-‎26 16:42
> >>>> Do: Andrzej Ciupek
> >>>> DW: Kamailio (SER) - Users Mailing List
> >>>> Temat: Re: [SR-Users] cnxcc
> >>>>
> >>>> Hi Andrzej,
> >>>>
> >>>> are you trying to setup cnxcc to check both credit and maximum
> >>>> simultaneous calls?
> >>>>
> >>>> Regards,
> >>>>
> >>>>
> >>>>
> >>>> On Sat, Apr 26, 2014 at 9:26 AM, Andrzej Ciupek
> >>>> <andrzej.ciupek at hotmail.com> wrote:
> >>>>
> >>>> Hello
> >>>>
> >>>> I’am using default config with options from an example. It looks like
> >>>> event route isn’t execuded after hangup.
> >>>>
> >>>> Apr 26 16:26:14 kamailio /usr/local/sbin/kamailio[4611]: INFO:
> <script>:
> >>>> 1000 has 1 call(s)
> >>>> Apr 26 16:26:15 kamailio /usr/local/sbin/kamailio[4611]: INFO:
> <script>:
> >>>> 1000 has 1 call(s)
> >>>> Apr 26 16:26:16 kamailio /usr/local/sbin/kamailio[4611]: INFO:
> <script>:
> >>>> 1000 has 1 call(s)
> >>>> Apr 26 16:26:17 kamailio /usr/local/sbin/kamailio[4611]: INFO:
> <script>:
> >>>> 1000 has 1 call(s)
> >>>> Apr 26 16:26:18 kamailio /usr/local/sbin/kamailio[4611]: INFO:
> <script>:
> >>>> 1000 has 1 call(s)
> >>>> Apr 26 16:26:19 kamailio /usr/local/sbin/kamailio[4611]: INFO:
> <script>:
> >>>> 1000 has 1 call(s)
> >>>> Apr 26 16:26:20 kamailio /usr/local/sbin/kamailio[4611]: INFO:
> <script>:
> >>>> 1000 has 1 call(s)
> >>>> Apr 26 16:26:20 kamailio /usr/local/sbin/kamailio[4604]: INFO:
> <script>:
> >>>> Setting up money based credit control
> >>>> Apr 26 16:26:20 kamailio /usr/local/sbin/kamailio[4604]: INFO:
> <script>:
> >>>> Setting up channel based credit control
> >>>> Apr 26 16:26:20 kamailio /usr/local/sbin/kamailio[4604]: INFO:
> <script>:
> >>>> CNXCC ROUTE: 1000 has 2 call(s)
> >>>>
> >>>> kamailio.cfg
> >>>> …
> >>>> …
> >>>> # ----- prepaid call controll -----
> >>>>
> >>>> #!define DLG_FLAG 28
> >>>> #!define CC_FLAG 29
> >>>>
> >>>> loadmodule "dialog.so"
> >>>>
> >>>> modparam("dialog", "hash_size", 2048)
> >>>> modparam("dialog", "default_timeout", 3600)
> >>>> modparam("dialog", "db_mode", 0)
> >>>> modparam("dialog", "dlg_flag", DLG_FLAG)
> >>>>
> >>>> modparam("rtimer", "timer", "name=ta;interval=1;mode=1;")
> >>>> modparam("rtimer", "exec", "timer=ta;route=SHOW_CHANNEL_COUNT")
> >>>>
> >>>> loadmodule "cnxcc.so"
> >>>>
> >>>> modparam("cnxcc", "dlg_flag", CC_FLAG)
> >>>> modparam("cnxcc", "credit_check_period", 1) #check every 1 second
> >>>>
> >>>> …
> >>>> …
> >>>> …
> >>>> route {
> >>>> …
> >>>> …
> >>>>  if (!allow_source_address("2") and !allow_source_address("1")){
> >>>>         route(CNXCC);
> >>>>         route(PSTN);
> >>>>         }
> >>>> …
> >>>> }
> >>>>
> >>>> route[CNXCC]
> >>>> {
> >>>>
> >>>>         $var(client)            = "1000";
> >>>>
> >>>>         xlog("L_INFO", "Setting up money based credit control");
> >>>>
> >>>>         $var(credit)            = "10"; # 10$ of credit
> >>>>         $var(cost_per_sec)      = "1";  # 1$ per sec
> >>>>         $var(i_pulse)           = "1";  # 1$ to establish the call
> >>>>         $var(f_pulse)           = "1";  # 1$ per second
> >>>>
> >>>>         # if only one call is established, that call should last 9
> >>>> seconds.
> >>>>
> >>>>         if (!cnxcc_set_max_credit("$var(client)",
> >>>>                                   "$var(credit)",
> >>>>                                   "$var(cost_per_sec)",
> >>>>                                   "$var(i_pulse)",
> >>>>                                   "$var(f_pulse)")) {
> >>>>                 xlog("Error setting up credit control");
> >>>>                 return;
> >>>>         }
> >>>>         $var(count)     = -1;
> >>>>
> >>>>         if (!cnxcc_get_channel_count("$var(client)", "$var(count)")) {
> >>>>                 xlog("Error getting customer's channel count");
> >>>>         }
> >>>>
> >>>>         xlog("L_INFO", "CNXCC ROUTE: $var(client) has $var(count)
> >>>> call(s)");
> >>>>
> >>>>         if ($var(retcode) < -1) {
> >>>>                 xlog("Too many channels for customer");
> >>>>                 sl_send_reply(403, "Forbidden");
> >>>>
> >>>>                 if (!cnxcc_terminate_all("$var(client)")) {
> >>>>                         xlog("Error terminating customer's calls");
> >>>>                 } else {
> >>>>                         xlog("Terminating customer's call");
> >>>>                 }
> >>>>
> >>>>                 exit;
> >>>>         }
> >>>> }
> >>>>
> >>>> route[SHOW_CHANNEL_COUNT]
> >>>> {
> >>>>         $var(count) = @cnxcc.channels["1000"].count;
> >>>>         xlog("L_INFO", "1000 has $var(count) call(s)");
> >>>> }
> >>>>
> >>>> event_route[dialog:failed]
> >>>> {
> >>>>         xlog("dialog failed");
> >>>> }
> >>>>
> >>>> event_route[cnxcc:call-shutdown]
> >>>> {
> >>>>         xlog("L_INFO", "Shutting down channel by callcontroll");
> >>>>         xlog("L_INFO", "[$ci]: call killed");
> >>>>         $var(count)     = $var(count)-1;
> >>>>         if (!cnxcc_get_channel_count("$var(client)", "$var(count)")) {
> >>>>                 xlog("Error getting customer's channel count");
> >>>>         }
> >>>>         xlog("L_INFO", "CNXCC ROUTE: $var(client) has $var(count)
> >>>> call(s)");
> >>>>         # perform some kind of notification, database update, email
> >>>> sending, etc
> >>>> }
> >>>>
> >>>> Greetings
> >>>> Andrzej Ciupek
> >>>>
> >>>> Od: Carlos Ruiz Díaz
> >>>> Wysłano: ‎sobota‎, ‎26‎ ‎kwietnia‎ ‎2014 ‎15‎:‎19
> >>>> Do: Kamailio (SER) - Users Mailing List, Andrzej Ciupek
> >>>>
> >>>> Hi,
> >>>>
> >>>> sorry guys, I forgot about this. I will make my own tests and post the
> >>>> results.
> >>>>
> >>>> Andrzej, can you post the configuration file you are using?
> >>>>
> >>>> Regards,
> >>>> Carlos
> >>>>
> >>>>
> >>>> On Sat, Apr 26, 2014 at 4:15 AM, Kelvin Chua <kelchy at gmail.com>
> wrote:
> >>>>
> >>>> No, I have not yet found the solution for this issue on my setup.
> >>>>
> >>>> Maybe Carlos can help us out
> >>>>
> >>>> On Apr 26, 2014 5:10 PM, "Andrzej Ciupek" <andrzej.ciupek at hotmail.com
> >
> >>>> wrote:
> >>>>
> >>>> Hello
> >>>>
> >>>> Have You solved this issue ?
> >>>> I’am using Kamailio 4.1.3 and I’am getting the same results.
> >>>>
> >>>> Greetings
> >>>> Andrzej Ciupek
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
> list
> >>>> sr-users at lists.sip-router.org
> >>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Carlos
> >>>> http://caruizdiaz.com
> >>>> http://ngvoice.com
> >>>> +52 55 3048 3303
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Carlos
> >>>> http://caruizdiaz.com
> >>>> http://ngvoice.com
> >>>> +52 55 3048 3303
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Carlos
> >>>> http://caruizdiaz.com
> >>>> http://ngvoice.com
> >>>> +52 55 3048 3303
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Carlos
> >>>> http://caruizdiaz.com
> >>>> http://ngvoice.com
> >>>> +52 55 3048 3303
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Carlos
> >>>> http://caruizdiaz.com
> >>>> http://ngvoice.com
> >>>> +52 55 3048 3303
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> Carlos
> >>> http://caruizdiaz.com
> >>> http://ngvoice.com
> >>> +52 55 3048 3303
> >>>
> >>> _______________________________________________
> >>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> >>> sr-users at lists.sip-router.org
> >>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
> >>>
> >>
> >>
> >> _______________________________________________
> >> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> >> sr-users at lists.sip-router.org
> >> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
> >>
> >
> >
> >
> > --
> > Carlos
> > http://caruizdiaz.com
> > http://ngvoice.com
> > +52 55 3048 3303
> >
> > _______________________________________________
> > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> > sr-users at lists.sip-router.org
> > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
> >
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>



-- 
Carlos
http://caruizdiaz.com
http://ngvoice.com
+52 55 3048 3303
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140603/9eca29d0/attachment.html>


More information about the sr-users mailing list