From: Rupa Schomaker Date: Fri, 18 Sep 2009 20:01:30 +0000 (+0000) Subject: make limit work with neg count like limit_hash X-Git-Tag: v1.0.6~1849 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=89e6324c17c97d04ac252139cc2ab43f935343b5;p=thirdparty%2Ffreeswitch.git 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 --- 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; + } } }