From 20a47df18b70dcf8cef6a66911329c6b39c3a85c Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
Date: Mon, 12 Nov 2007 23:12:19 +0000
Subject: [PATCH] update

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6224 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/mod/applications/mod_limit/mod_limit.c | 33 +++++++++++++++-------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/src/mod/applications/mod_limit/mod_limit.c b/src/mod/applications/mod_limit/mod_limit.c
index a745b73ba4..4ef4eb03f1 100644
--- a/src/mod/applications/mod_limit/mod_limit.c
+++ b/src/mod/applications/mod_limit/mod_limit.c
@@ -390,7 +390,7 @@ SWITCH_STANDARD_API(db_api_function)
 }
 
 
-#define DB_USAGE "<realm>/<key>/<val>"
+#define DB_USAGE "[add|del]/<realm>/<key>/<val>"
 #define DB_DESC "save data"
 
 SWITCH_STANDARD_APP(db_function)
@@ -399,26 +399,39 @@ SWITCH_STANDARD_APP(db_function)
     int argc = 0;
     char *argv[3] = { 0 };
     char *mydata = NULL;
-    char *sql;
+    char *sql = NULL;
 
     channel = switch_core_session_get_channel(session);
     assert(channel != NULL);
-
+    
     if (!switch_strlen_zero(data)) {
         mydata = switch_core_session_strdup(session, data);
         argc = switch_separate_string(mydata, '/', argv, (sizeof(argv) / sizeof(argv[0])));
     }
 
-    if (argc < 3) {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "USAGE: db_insert %s\n", DB_USAGE);
-        return;
+    if (argc < 4) {
+        goto error;
+    }
+
+    
+    if (!strcasecmp(argv[0], "add")) {
+        sql = switch_mprintf("insert into db_data values('%q','%q','%q','%q');", globals.hostname, argv[1], argv[2], argv[3]);
+    } else if (!strcasecmp(argv[0], "del")) {
+        sql = switch_mprintf("delete from db_data where realm='%q' and data_key='%q'", argv[1], argv[2]);
     }
 
 
-    sql = switch_mprintf("insert into db_data values('%q','%q','%q','%q');", globals.hostname, argv[0], argv[1], argv[2]);
-    assert(sql);
-    limit_execute_sql(sql, globals.mutex);
-    switch_safe_free(sql);
+    if (sql) {
+        limit_execute_sql(sql, globals.mutex);
+        switch_safe_free(sql);
+        return;
+    }
+    
+ error:
+    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "USAGE: db %s\n", DB_USAGE);
+
+    
+
 }