From 89e6324c17c97d04ac252139cc2ab43f935343b5 Mon Sep 17 00:00:00 2001 From: Rupa Schomaker Date: Fri, 18 Sep 2009 20:01:30 +0000 Subject: [PATCH] make limit work with neg count like limit_hash git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14920 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/applications/mod_limit/mod_limit.c | 31 ++++++++++++---------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/mod/applications/mod_limit/mod_limit.c b/src/mod/applications/mod_limit/mod_limit.c index 6c5ce869ae..68da1c0a7e 100644 --- a/src/mod/applications/mod_limit/mod_limit.c +++ b/src/mod/applications/mod_limit/mod_limit.c @@ -63,9 +63,8 @@ typedef struct { typedef struct { switch_hash_t *hash; - } limit_hash_private_t; +} limit_hash_private_t; - static char limit_sql[] = "CREATE TABLE limit_data (\n" " hostname VARCHAR(255),\n" @@ -1172,19 +1171,23 @@ SWITCH_STANDARD_APP(limit_hash_function) realm = argv[0]; id = argv[1]; - /* If max is omitted, only act as a counter and skip maximum checks */ + /* If max is omitted or negative, only act as a counter and skip maximum checks */ if (argc > 2) { - char *szinterval = NULL; - if ((szinterval = strchr(argv[2], '/'))) - { - *szinterval++ = '\0'; - interval = atoi(szinterval); - } - - max = atoi(argv[2]); - - if (max < 0) { - max = 0; + if (argv[2][0] == '-') { + max = -1; + } else { + char *szinterval = NULL; + if ((szinterval = strchr(argv[2], '/'))) + { + *szinterval++ = '\0'; + interval = atoi(szinterval); + } + + max = atoi(argv[2]); + + if (max < 0) { + max = 0; + } } }