]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Fix counter bug
authorMathieu Rene <mrene@avgs.ca>
Fri, 19 Dec 2008 04:11:51 +0000 (04:11 +0000)
committerMathieu Rene <mrene@avgs.ca>
Fri, 19 Dec 2008 04:11:51 +0000 (04:11 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10881 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_limit/mod_limit.c

index 71523e8560e55f935ed6c1ffa17e2c652ce7558e..875b04298d5c26b95ce65e276044259012c99332 100644 (file)
@@ -816,14 +816,11 @@ SWITCH_STANDARD_APP(limit_hash_function)
        /* Did we already run on this channel before? */
        if ((channel_hash = switch_channel_get_private(channel, "limit_hash")))
        {
-               /* Yes, but check if we did that realm+id */
-               if (!switch_core_hash_find(channel_hash, hashkey)) {
-                       /* No, add it to our table so the state handler can take care of it */
-                       switch_core_hash_insert(channel_hash, hashkey, item);
-               } else {
-                       /* Yes, dont touch total counter */
-                       increment = 0;
-               }
+               /* Yes, but check if we did that realm+id
+                  If we didnt, allow incrementing the counter.
+                  If we did, dont touch it but do the validation anyways
+                */
+               increment = !!!switch_core_hash_find(channel_hash, hashkey);
        } else {
                /* This is the first limit check on this channel, create a hashtable, set our prviate data and add a state handler */
                new_channel = 1;
@@ -852,6 +849,10 @@ SWITCH_STANDARD_APP(limit_hash_function)
        if (increment) {
                item->total_usage++;
                
+               if (!new_channel)  {
+                       switch_core_hash_insert(channel_hash, hashkey, item);
+               }
+               
                if (interval == 0) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Usage for %s is now %d/%d\n", hashkey, item->total_usage, max); 
                } else {