]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
nobal_amt and lowbal_amt channel vars can override defaults in config
authorRupa Schomaker <rupa@rupa.com>
Thu, 11 Feb 2010 15:01:21 +0000 (15:01 +0000)
committerRupa Schomaker <rupa@rupa.com>
Thu, 11 Feb 2010 15:01:21 +0000 (15:01 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16602 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_nibblebill/mod_nibblebill.c

index 55043c555dcffc01a1d574fee416782c1a406e7a..56d5ed219304e7dde497592b9cacb83fd7e2a543 100644 (file)
@@ -360,6 +360,8 @@ static switch_status_t do_billing(switch_core_session_t *session)
        switch_time_exp_t tm;
        const char *billrate;
        const char *billaccount;
+       float nobal_amt = globals.nobal_amt;
+       float lowbal_amt = globals.lowbal_amt;
        float balance;
 
        if (!session) {
@@ -377,6 +379,13 @@ static switch_status_t do_billing(switch_core_session_t *session)
        /* Variables kept in FS but relevant only to this module */
        billrate = switch_channel_get_variable(channel, "nibble_rate");
        billaccount = switch_channel_get_variable(channel, "nibble_account");
+       
+       if (!zstr(switch_channel_get_variable(channel, "nobal_amt"))) {
+               nobal_amt = atof(switch_channel_get_variable(channel, "nobal_amt"));
+       }
+       if (!zstr(switch_channel_get_variable(channel, "lowbal_amt"))) {
+               lowbal_amt = atof(switch_channel_get_variable(channel, "lowbal_amt"));
+       }
 
        /* Return if there's no billing information on this session */
        if (!billrate || !billaccount) {
@@ -399,11 +408,11 @@ static switch_status_t do_billing(switch_core_session_t *session)
 
                /* See if this person has enough money left to continue the call */
                balance = get_balance(billaccount);
-               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Comparing %f to hangup balance of %f\n", balance, globals.nobal_amt);
-               if (balance <= globals.nobal_amt) {
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Comparing %f to hangup balance of %f\n", balance, nobal_amt);
+               if (balance <= nobal_amt) {
                        /* Not enough money - reroute call to nobal location */
                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Balance of %f fell below allowed amount of %f! (Account %s)\n",
-                                                         balance, globals.nobal_amt, billaccount);
+                                                         balance, nobal_amt, billaccount);
 
                        transfer_call(session, globals.nobal_action);
                }
@@ -480,10 +489,10 @@ static switch_status_t do_billing(switch_core_session_t *session)
 
                /* See if this person has enough money left to continue the call */
                balance = get_balance(billaccount);
-               if (balance <= globals.nobal_amt) {
+               if (balance <= nobal_amt) {
                        /* Not enough money - reroute call to nobal location */
                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Balance of %f fell below allowed amount of %f! (Account %s)\n",
-                                                         balance, globals.nobal_amt, billaccount);
+                                                         balance, nobal_amt, billaccount);
 
                        /* IMPORTANT: Billing must be paused before the transfer occurs! This prevents infinite loops, since the transfer will result */
                        /* in nibblebill checking the call again in the routing process for an allowed balance! */