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íazmailto:carlos.ruizdiaz@gmail.com Wysłano: 2014-04-26 16:42 Do: Andrzej Ciupekmailto:andrzej.ciupek@hotmail.com DW: Kamailio (SER) - Users Mailing Listmailto:sr-users@lists.sip-router.org 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@hotmail.comwrote:
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 carlos.ruizdiaz@gmail.com *Wysłano:* sobota, 26 kwietnia 2014 15:19 *Do:* Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org, Andrzej Ciupek andrzej.ciupek@hotmail.com
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@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@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@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
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@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 carlos.ruizdiaz@gmail.com Wysłano: 2014-04-26 16:42 Do: Andrzej Ciupek andrzej.ciupek@hotmail.com DW: Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org 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@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 carlos.ruizdiaz@gmail.com *Wysłano:* sobota, 26 kwietnia 2014 15:19 *Do:* Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org, Andrzej Ciupek andrzej.ciupek@hotmail.com
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@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@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@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
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@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@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 carlos.ruizdiaz@gmail.com Wysłano: 2014-04-26 16:42 Do: Andrzej Ciupek andrzej.ciupek@hotmail.com DW: Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org 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@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 <carlos.ruizdiaz@gmail.com> *Wysłano:* sobota, 26 kwietnia 2014 15:19 *Do:* Kamailio (SER) - Users Mailing List <sr-users@lists.sip-router.org>, Andrzej Ciupek <andrzej.ciupek@hotmail.com> 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@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@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@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
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@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@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@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 carlos.ruizdiaz@gmail.com Wysłano: 2014-04-26 16:42 Do: Andrzej Ciupek andrzej.ciupek@hotmail.com DW: Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org 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@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 <carlos.ruizdiaz@gmail.com> *Wysłano:* sobota, 26 kwietnia 2014 15:19 *Do:* Kamailio (SER) - Users Mailing List<sr-users@lists.sip-router.org>, Andrzej Ciupek <andrzej.ciupek@hotmail.com> 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@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@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@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
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. GreetingsAndrzej Ciupek
Date: Sun, 27 Apr 2014 21:29:34 -0500 Subject: Re: [SR-Users] cnxcc From: carlos.ruizdiaz@gmail.com To: andrzej.ciupek@hotmail.com CC: sr-users@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@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@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@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@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@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@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@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Hello again It works perfect, I was missing "setflag(DLG_FLAG);" in my main route. Thank You very much for help. GreetingsAndrzej Ciupek
From: andrzej.ciupek@hotmail.com To: carlos.ruizdiaz@gmail.com CC: sr-users@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. GreetingsAndrzej Ciupek
Date: Sun, 27 Apr 2014 21:29:34 -0500 Subject: Re: [SR-Users] cnxcc From: carlos.ruizdiaz@gmail.com To: andrzej.ciupek@hotmail.com CC: sr-users@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@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@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@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@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@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@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@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
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@hotmail.comwrote:
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@hotmail.com To: carlos.ruizdiaz@gmail.com CC: sr-users@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@gmail.com To: andrzej.ciupek@hotmail.com CC: sr-users@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@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@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@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 carlos.ruizdiaz@gmail.com Wysłano: 2014-04-26 16:42 Do: Andrzej Ciupek andrzej.ciupek@hotmail.com DW: Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org 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@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 carlos.ruizdiaz@gmail.com *Wysłano:* sobota, 26 kwietnia 2014 15:19 *Do:* Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org, Andrzej Ciupek andrzej.ciupek@hotmail.com
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@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@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@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
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=d0f... 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@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@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@hotmail.com To: carlos.ruizdiaz@gmail.com CC: sr-users@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@gmail.com To: andrzej.ciupek@hotmail.com CC: sr-users@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@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@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@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 carlos.ruizdiaz@gmail.com Wysłano: 2014-04-26 16:42 Do: Andrzej Ciupek andrzej.ciupek@hotmail.com DW: Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org 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@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 <carlos.ruizdiaz@gmail.com> *Wysłano:* sobota, 26 kwietnia 2014 15:19 *Do:* Kamailio (SER) - Users Mailing List <sr-users@lists.sip-router.org>, Andrzej Ciupek <andrzej.ciupek@hotmail.com> 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@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@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@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
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=d0f...
Regards, Carlos
On Sun, May 11, 2014 at 9:57 AM, Kelvin Chua kelchy@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=d0f... 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@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@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@hotmail.com To: carlos.ruizdiaz@gmail.com CC: sr-users@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@gmail.com To: andrzej.ciupek@hotmail.com CC: sr-users@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@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@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@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 carlos.ruizdiaz@gmail.com Wysłano: 2014-04-26 16:42 Do: Andrzej Ciupek andrzej.ciupek@hotmail.com DW: Kamailio (SER) - Users Mailing List sr-users@lists.sip-router.org 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@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 <carlos.ruizdiaz@gmail.com> *Wysłano:* sobota, 26 kwietnia 2014 15:19 *Do:* Kamailio (SER) - Users Mailing List<sr-users@lists.sip-router.org>, Andrzej Ciupek <andrzej.ciupek@hotmail.com> 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@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@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@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@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
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@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=d0f...
Regards, Carlos
On Sun, May 11, 2014 at 9:57 AM, Kelvin Chua kelchy@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=d0f... 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@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@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@hotmail.com To: carlos.ruizdiaz@gmail.com CC: sr-users@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@gmail.com To: andrzej.ciupek@hotmail.com CC: sr-users@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@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@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@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@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@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@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@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@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@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
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@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@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=d0f...
Regards, Carlos
On Sun, May 11, 2014 at 9:57 AM, Kelvin Chua kelchy@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=d0f...
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@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@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@hotmail.com To: carlos.ruizdiaz@gmail.com CC: sr-users@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@gmail.com >>>> To: andrzej.ciupek@hotmail.com >>>> CC: sr-users@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@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@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@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@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@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@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@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@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@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@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users