[asterisk-addons-commits] tilghman: trunk r478 - /trunk/app_addon_sql_mysql.c
SVN commits to the Asterisk addons project
asterisk-addons-commits at lists.digium.com
Wed Oct 31 15:32:11 CDT 2007
Author: tilghman
Date: Wed Oct 31 15:32:10 2007
New Revision: 478
URL: http://svn.digium.com/view/asterisk-addons?view=rev&rev=478
Log:
Coding guidelines update, and add the timeout that was discussed on the mailing list
Modified:
trunk/app_addon_sql_mysql.c
Modified: trunk/app_addon_sql_mysql.c
URL: http://svn.digium.com/view/asterisk-addons/trunk/app_addon_sql_mysql.c?view=diff&rev=478&r1=477&r2=478
==============================================================================
--- trunk/app_addon_sql_mysql.c (original)
+++ trunk/app_addon_sql_mysql.c Wed Oct 31 15:32:10 2007
@@ -33,6 +33,7 @@
#include <asterisk/chanvars.h>
#include <asterisk/lock.h>
#include <asterisk/options.h>
+#include <asterisk/app.h>
#define AST_MODULE "app_addon_sql_mysql"
@@ -45,6 +46,8 @@
static char *descrip =
"MYSQL(): Do several mySQLy things\n"
"Syntax:\n"
+" MYSQL(Set timeout <num>)\n"
+" Set the connection timeout, in seconds.\n"
" MYSQL(Connect connid dhhost dbuser dbpass dbname)\n"
" Connects to a database. Arguments contain standard MySQL parameters\n"
" passed to function mysql_real_connect. Connection identifer returned\n"
@@ -95,26 +98,25 @@
AST_LIST_HEAD(MYSQLidshead,ast_MYSQL_id) _mysql_ids_head;
/* helpful procs */
-static void *find_identifier(int identifier,int identifier_type) {
- struct MYSQLidshead *headp;
+static void *find_identifier(int identifier, int identifier_type)
+{
+ struct MYSQLidshead *headp = &_mysql_ids_head;
struct ast_MYSQL_id *i;
void *res=NULL;
int found=0;
- headp=&_mysql_ids_head;
-
if (AST_LIST_LOCK(headp)) {
- ast_log(LOG_WARNING,"Unable to lock identifiers list\n");
- } else {
- AST_LIST_TRAVERSE(headp,i,entries) {
- if ((i->identifier==identifier) && (i->identifier_type==identifier_type)) {
- found=1;
- res=i->data;
+ ast_log(LOG_WARNING, "Unable to lock identifiers list\n");
+ } else {
+ AST_LIST_TRAVERSE(headp, i, entries) {
+ if ((i->identifier == identifier) && (i->identifier_type == identifier_type)) {
+ found = 1;
+ res = i->data;
break;
}
}
if (!found) {
- ast_log(LOG_WARNING,"Identifier %d, identifier_type %d not found in identifier list\n",identifier,identifier_type);
+ ast_log(LOG_WARNING, "Identifier %d, identifier_type %d not found in identifier list\n", identifier, identifier_type);
}
AST_LIST_UNLOCK(headp);
}
@@ -122,166 +124,192 @@
return res;
}
-static int add_identifier(int identifier_type,void *data) {
- struct ast_MYSQL_id *i,*j;
- struct MYSQLidshead *headp;
- int maxidentifier=0;
-
- headp=&_mysql_ids_head;
- i=NULL;
- j=NULL;
+static int add_identifier(int identifier_type, void *data)
+{
+ struct ast_MYSQL_id *i = NULL, *j = NULL;
+ struct MYSQLidshead *headp = &_mysql_ids_head;
+ int maxidentifier = 0;
+
+ if (AST_LIST_LOCK(headp)) {
+ ast_log(LOG_WARNING, "Unable to lock identifiers list\n");
+ return -1;
+ } else {
+ i = malloc(sizeof(*i));
+ AST_LIST_TRAVERSE(headp, j, entries) {
+ if (j->identifier > maxidentifier) {
+ maxidentifier = j->identifier;
+ }
+ }
+ i->identifier = maxidentifier + 1;
+ i->identifier_type = identifier_type;
+ i->data = data;
+ AST_LIST_INSERT_HEAD(headp, i, entries);
+ AST_LIST_UNLOCK(headp);
+ }
+ return i->identifier;
+}
+
+static int del_identifier(int identifier, int identifier_type) {
+ struct ast_MYSQL_id *i;
+ struct MYSQLidshead *headp = &_mysql_ids_head;
+ int found = 0;
if (AST_LIST_LOCK(headp)) {
- ast_log(LOG_WARNING,"Unable to lock identifiers list\n");
- return(-1);
- } else {
- i=malloc(sizeof(struct ast_MYSQL_id));
- AST_LIST_TRAVERSE(headp,j,entries) {
- if (j->identifier>maxidentifier) {
- maxidentifier=j->identifier;
- }
- }
- i->identifier=maxidentifier+1;
- i->identifier_type=identifier_type;
- i->data=data;
- AST_LIST_INSERT_HEAD(headp,i,entries);
- AST_LIST_UNLOCK(headp);
- }
- return i->identifier;
-}
-
-static int del_identifier(int identifier,int identifier_type) {
- struct ast_MYSQL_id *i;
- struct MYSQLidshead *headp;
- int found=0;
-
- headp=&_mysql_ids_head;
-
- if (AST_LIST_LOCK(headp)) {
- ast_log(LOG_WARNING,"Unable to lock identifiers list\n");
- } else {
- AST_LIST_TRAVERSE(headp,i,entries) {
- if ((i->identifier==identifier) &&
- (i->identifier_type==identifier_type)) {
- AST_LIST_REMOVE(headp,i,entries);
+ ast_log(LOG_WARNING, "Unable to lock identifiers list\n");
+ } else {
+ AST_LIST_TRAVERSE(headp, i, entries) {
+ if ((i->identifier == identifier) &&
+ (i->identifier_type == identifier_type)) {
+ AST_LIST_REMOVE(headp, i, entries);
free(i);
- found=1;
+ found = 1;
break;
}
}
AST_LIST_UNLOCK(headp);
}
- if (found==0) {
- ast_log(LOG_WARNING,"Could not find identifier %d, identifier_type %d in list to delete\n",identifier,identifier_type);
- return(-1);
- } else {
- return(0);
- }
-}
-
-static int set_asterisk_int(struct ast_channel *chan, char *varname, int id) {
- if( id>=0 ) {
- char s[100] = "";
- snprintf(s, sizeof(s)-1, "%d", id);
-#if EXTRA_LOG
- ast_log(LOG_WARNING,"MYSQL: setting var '%s' to value '%s'\n",varname,s);
-#endif
- pbx_builtin_setvar_helper(chan,varname,s);
+ if (found == 0) {
+ ast_log(LOG_WARNING, "Could not find identifier %d, identifier_type %d in list to delete\n", identifier, identifier_type);
+ return -1;
+ } else {
+ return 0;
+ }
+}
+
+static int set_asterisk_int(struct ast_channel *chan, char *varname, int id)
+{
+ if (id >= 0) {
+ char s[12] = "";
+ snprintf(s, sizeof(s), "%d", id);
+ ast_debug(5, "MYSQL: setting var '%s' to value '%s'\n", varname, s);
+ pbx_builtin_setvar_helper(chan, varname, s);
}
return id;
}
-static int add_identifier_and_set_asterisk_int(struct ast_channel *chan, char *varname, int identifier_type, void *data) {
- return set_asterisk_int(chan,varname,add_identifier(identifier_type,data));
-}
-
-static int safe_scan_int( char** data, char* delim, int def ) {
- char* end;
+static int add_identifier_and_set_asterisk_int(struct ast_channel *chan, char *varname, int identifier_type, void *data)
+{
+ return set_asterisk_int(chan, varname, add_identifier(identifier_type, data));
+}
+
+static int safe_scan_int(char **data, char *delim, int def)
+{
+ char *end;
int res = def;
- char* s = strsep(data,delim);
- if( s ) {
- res = strtol(s,&end,10);
- if (*end) res = def; /* not an integer */
+ char *s = strsep(data, delim);
+ if (s) {
+ res = strtol(s, &end, 10);
+ if (*end)
+ res = def; /* not an integer */
}
return res;
}
+static int aMYSQL_set(struct ast_channel *chan, char *data)
+{
+ char *var, *tmp;
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(set);
+ AST_APP_ARG(variable);
+ AST_APP_ARG(value);
+ );
+
+ AST_NONSTANDARD_APP_ARGS(args, data, ' ');
+
+ if (args.argc == 3) {
+ var = alloca(6 + strlen(args.variable) + 1);
+ sprintf(var, "MYSQL_%s", args.variable);
+
+ /* Make the parameter case-insensitive */
+ for (tmp = var + 6; *tmp; tmp++)
+ *tmp = toupper(*tmp);
+
+ pbx_builtin_setvar_helper(chan, var, args.value);
+ }
+ return 0;
+}
+
/* MYSQL operations */
-static int aMYSQL_connect(struct ast_channel *chan, char *data) {
-
+static int aMYSQL_connect(struct ast_channel *chan, char *data)
+{
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(connect);
+ AST_APP_ARG(connid);
+ AST_APP_ARG(dbhost);
+ AST_APP_ARG(dbuser);
+ AST_APP_ARG(dbpass);
+ AST_APP_ARG(dbname);
+ );
MYSQL *mysql;
-
- char *connid_var;
- char *dbhost;
- char *dbuser;
- char *dbpass;
- char *dbname;
-
- strsep(&data," "); // eat the first token, we already know it :P
-
- connid_var=strsep(&data," ");
- dbhost=strsep(&data," ");
- dbuser=strsep(&data," ");
- dbpass=strsep(&data," ");
- dbname=strsep(&data,"\n");
-
- if( connid_var && dbhost && dbuser && dbpass && dbname ) {
- mysql = mysql_init(NULL);
- if (mysql) {
- if (mysql_real_connect(mysql, dbhost, dbuser, dbpass, dbname, 0 ,NULL,
- CLIENT_MULTI_STATEMENTS | CLIENT_MULTI_RESULTS)) {
- add_identifier_and_set_asterisk_int(chan,connid_var,AST_MYSQL_ID_CONNID,mysql);
- return 0;
- }
- else {
- ast_log(LOG_WARNING,"mysql_real_connect(mysql,%s,%s,dbpass,%s,...) failed(%d): %s\n",dbhost,dbuser,dbname,mysql_errno(mysql), mysql_error(mysql));
- }
- }
- else {
- ast_log(LOG_WARNING,"myslq_init returned NULL\n");
- }
- }
- else {
- ast_log(LOG_WARNING,"MYSQL(connect is missing some arguments\n");
- }
-
- return -1;
-}
-
-static int aMYSQL_query(struct ast_channel *chan, char *data) {
-
+ int timeout;
+ const char *ctimeout;
+
+ AST_NONSTANDARD_APP_ARGS(args, data, ' ');
+
+ if (args.argc != 6) {
+ ast_log(LOG_WARNING, "MYSQL_connect is missing some arguments\n");
+ return -1;
+ }
+
+ if (!(mysql = mysql_init(NULL))) {
+ ast_log(LOG_WARNING, "mysql_init returned NULL\n");
+ return -1;
+ }
+
+ ctimeout = pbx_builtin_getvar_helper(chan, "MYSQL_TIMEOUT");
+ if (ctimeout && sscanf(ctimeout, "%d", &timeout) == 1) {
+ mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (void *)&timeout);
+ }
+
+ if (! mysql_real_connect(mysql, args.dbhost, args.dbuser, args.dbpass, args.dbname, 0, NULL,
+ CLIENT_MULTI_STATEMENTS | CLIENT_MULTI_RESULTS)) {
+ ast_log(LOG_WARNING, "mysql_real_connect(mysql,%s,%s,dbpass,%s,...) failed(%d): %s\n",
+ args.dbhost, args.dbuser, args.dbname, mysql_errno(mysql), mysql_error(mysql));
+ return -1;
+ }
+
+ add_identifier_and_set_asterisk_int(chan, args.connid, AST_MYSQL_ID_CONNID, mysql);
+ return 0;
+}
+
+static int aMYSQL_query(struct ast_channel *chan, char *data)
+{
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(query);
+ AST_APP_ARG(resultid);
+ AST_APP_ARG(connid);
+ AST_APP_ARG(sql);
+ );
MYSQL *mysql;
MYSQL_RES *mysqlres;
-
- char *resultid_var;
int connid;
- char *querystring;
int mysql_query_res;
- strsep(&data, " ");
-
- resultid_var = strsep(&data," ");
- connid = safe_scan_int(&data," ",-1);
- querystring = strsep(&data,"\n");
-
- if (resultid_var && (connid >= 0) && querystring) {
- if ((mysql=find_identifier(connid, AST_MYSQL_ID_CONNID))) {
- mysql_query_res = mysql_query(mysql,querystring);
- if (mysql_query_res != 0) {
- ast_log(LOG_WARNING, "aMYSQL_query: mysql_query failed. Error: %s\n", mysql_error(mysql));
- }
- if ((mysqlres=mysql_store_result(mysql))) {
- add_identifier_and_set_asterisk_int(chan,resultid_var,AST_MYSQL_ID_RESID,mysqlres);
- return 0;
- } else if (!mysql_field_count(mysql)) {
- return 0;
- } else
- ast_log(LOG_WARNING,"mysql_store_result() failed on query %s\n",querystring);
- } else
- ast_log(LOG_WARNING,"Invalid connection identifier %d passed in aMYSQL_query\n",connid);
+ AST_NONSTANDARD_APP_ARGS(args, data, ' ');
+
+ if (args.argc != 4 || (connid = atoi(args.connid)) == 0) {
+ ast_log(LOG_WARNING, "missing some arguments\n");
+ return -1;
+ }
+
+ if (!(mysql = find_identifier(connid, AST_MYSQL_ID_CONNID))) {
+ ast_log(LOG_WARNING, "Invalid connection identifier %s passed in aMYSQL_query\n", args.connid);
+ return -1;
+ }
+
+ if ((mysql_query_res = mysql_query(mysql, args.sql)) != 0) {
+ ast_log(LOG_WARNING, "aMYSQL_query: mysql_query failed. Error: %s\n", mysql_error(mysql));
+ return -1;
+ }
+
+ if ((mysqlres = mysql_store_result(mysql))) {
+ add_identifier_and_set_asterisk_int(chan, args.resultid, AST_MYSQL_ID_RESID, mysqlres);
+ return 0;
+ } else if (!mysql_field_count(mysql)) {
+ return 0;
} else
- ast_log(LOG_WARNING,"missing some arguments\n");
+ ast_log(LOG_WARNING, "mysql_store_result() failed on query %s\n", args.sql);
return -1;
}
@@ -290,34 +318,39 @@
MYSQL *mysql;
MYSQL_RES *mysqlres;
-
- char *resultid_var;
- int connid;
-
- strsep(&data, " ");
-
- resultid_var = strsep(&data," ");
- connid = safe_scan_int(&data," ",-1);
-
- if (resultid_var && (connid >= 0)) {
- if ((mysql=find_identifier(connid, AST_MYSQL_ID_CONNID))) {
- if (mysql_more_results(mysql)) {
- mysql_next_result(mysql);
- if ((mysqlres=mysql_store_result(mysql))) {
- add_identifier_and_set_asterisk_int(chan,resultid_var,AST_MYSQL_ID_RESID,mysqlres);
- return 0;
- } else if (!mysql_field_count(mysql)) {
- return 0;
- } else
- ast_log(LOG_WARNING,"mysql_store_result() failed on storing next_result");
- } else
- ast_log(LOG_WARNING,"mysql_more_results() result set has no more results\n");
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(nextresult);
+ AST_APP_ARG(resultid);
+ AST_APP_ARG(connid);
+ );
+ int connid = -1;
+
+ AST_NONSTANDARD_APP_ARGS(args, data, ' ');
+ sscanf(args.connid, "%d", &connid);
+
+ if (args.argc != 3 || connid <= 0) {
+ ast_log(LOG_WARNING, "missing some arguments\n");
+ return -1;
+ }
+
+ if (!(mysql = find_identifier(connid, AST_MYSQL_ID_CONNID))) {
+ ast_log(LOG_WARNING, "Invalid connection identifier %d passed in aMYSQL_query\n", connid);
+ return -1;
+ }
+
+ if (mysql_more_results(mysql)) {
+ mysql_next_result(mysql);
+ if ((mysqlres = mysql_store_result(mysql))) {
+ add_identifier_and_set_asterisk_int(chan, args.resultid, AST_MYSQL_ID_RESID, mysqlres);
+ return 0;
+ } else if (!mysql_field_count(mysql)) {
+ return 0;
} else
- ast_log(LOG_WARNING,"Invalid connection identifier %d passed in aMYSQL_query\n",connid);
+ ast_log(LOG_WARNING, "mysql_store_result() failed on storing next_result\n");
} else
- ast_log(LOG_WARNING,"missing some arguments\n");
-
- return -1;
+ ast_log(LOG_WARNING, "mysql_more_results() result set has no more results\n");
+
+ return 0;
}
@@ -325,81 +358,77 @@
MYSQL_RES *mysqlres;
MYSQL_ROW mysqlrow;
-
- char *fetchid_var,*s5,*s6;
- int resultid,numFields,j;
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(fetch);
+ AST_APP_ARG(resultvar);
+ AST_APP_ARG(fetchid);
+ );
+ char *s5, *s6;
+ int resultid = -1, numFields, j;
- strsep(&data," "); // eat the first token, we already know it :P
-
- fetchid_var = strsep(&data," ");
- resultid = safe_scan_int(&data," ",-1);
-
- if (fetchid_var && (resultid>=0) ) {
- if ((mysqlres=find_identifier(resultid,AST_MYSQL_ID_RESID))!=NULL) {
+ AST_NONSTANDARD_APP_ARGS(args, data, ' ');
+ sscanf(args.fetchid, "%d", &resultid);
+
+ if (args.resultvar && (resultid >= 0) ) {
+ if ((mysqlres = find_identifier(resultid, AST_MYSQL_ID_RESID)) != NULL) {
/* Grab the next row */
- if ((mysqlrow=mysql_fetch_row(mysqlres))!=NULL) {
- numFields=mysql_num_fields(mysqlres);
- for (j=0;j<numFields;j++) {
- s5=strsep(&data," ");
- if (s5==NULL) {
- ast_log(LOG_WARNING,"ast_MYSQL_fetch: More fields (%d) than variables (%d)\n",numFields,j);
+ if ((mysqlrow = mysql_fetch_row(mysqlres)) != NULL) {
+ numFields = mysql_num_fields(mysqlres);
+ for (j = 0; j < numFields; j++) {
+ s5 = strsep(&data, " ");
+ if (s5 == NULL) {
+ ast_log(LOG_WARNING, "ast_MYSQL_fetch: More fields (%d) than variables (%d)\n", numFields, j);
break;
}
- s6=mysqlrow[j];
- pbx_builtin_setvar_helper(chan,s5, s6 ? s6 : "NULL");
+ s6 = mysqlrow[j];
+ pbx_builtin_setvar_helper(chan, s5, s6 ? s6 : "NULL");
}
-#if EXTRA_LOG
- ast_debug(1,"ast_MYSQL_fetch: numFields=%d\n",numFields);
-#endif
- set_asterisk_int(chan,fetchid_var,1); // try more rows
+ ast_debug(5, "ast_MYSQL_fetch: numFields=%d\n", numFields);
+ set_asterisk_int(chan, args.resultvar, 1); // try more rows
} else {
-#if EXTRA_LOG
- ast_debug(1,"ast_MYSQL_fetch : EOF\n");
-#endif
- set_asterisk_int(chan,fetchid_var,0); // no more rows
+ ast_debug(5, "ast_MYSQL_fetch : EOF\n");
+ set_asterisk_int(chan, args.resultvar, 0); // no more rows
}
return 0;
+ } else {
+ ast_log(LOG_WARNING, "aMYSQL_fetch: Invalid result identifier %d passed\n", resultid);
}
- else {
- ast_log(LOG_WARNING,"aMYSQL_fetch: Invalid result identifier %d passed\n",resultid);
- }
- }
- else {
- ast_log(LOG_WARNING,"aMYSQL_fetch: missing some arguments\n");
+ } else {
+ ast_log(LOG_WARNING, "aMYSQL_fetch: missing some arguments\n");
}
return -1;
}
-static int aMYSQL_clear(struct ast_channel *chan, char *data) {
-
+static int aMYSQL_clear(struct ast_channel *chan, char *data)
+{
MYSQL_RES *mysqlres;
int id;
- strsep(&data," "); // eat the first token, we already know it :P
- id = safe_scan_int(&data," \n",-1);
- if ((mysqlres=find_identifier(id,AST_MYSQL_ID_RESID))==NULL) {
- ast_log(LOG_WARNING,"Invalid result identifier %d passed in aMYSQL_clear\n",id);
+ strsep(&data, " "); /* eat the first token, we already know it :P */
+ id = safe_scan_int(&data, " \n", -1);
+ if ((mysqlres = find_identifier(id, AST_MYSQL_ID_RESID)) == NULL) {
+ ast_log(LOG_WARNING, "Invalid result identifier %d passed in aMYSQL_clear\n", id);
} else {
mysql_free_result(mysqlres);
- del_identifier(id,AST_MYSQL_ID_RESID);
- }
-
- return 0;
-}
-
-static int aMYSQL_disconnect(struct ast_channel *chan, char *data) {
-
+ del_identifier(id, AST_MYSQL_ID_RESID);
+ }
+
+ return 0;
+}
+
+static int aMYSQL_disconnect(struct ast_channel *chan, char *data)
+{
MYSQL *mysql;
int id;
- strsep(&data," "); // eat the first token, we already know it :P
-
- id = safe_scan_int(&data," \n",-1);
- if ((mysql=find_identifier(id,AST_MYSQL_ID_CONNID))==NULL) {
- ast_log(LOG_WARNING,"Invalid connection identifier %d passed in aMYSQL_disconnect\n",id);
+ strsep(&data, " "); /* eat the first token, we already know it :P */
+
+ id = safe_scan_int(&data, " \n", -1);
+ if ((mysql = find_identifier(id, AST_MYSQL_ID_CONNID)) == NULL) {
+ ast_log(LOG_WARNING, "Invalid connection identifier %d passed in aMYSQL_disconnect\n", id);
} else {
mysql_close(mysql);
- del_identifier(id,AST_MYSQL_ID_CONNID);
+ del_identifier(id, AST_MYSQL_ID_CONNID);
}
return 0;
@@ -411,35 +440,35 @@
int result;
char sresult[10];
-#if EXTRA_LOG
- fprintf(stderr,"MYSQL_exec: data=%s\n",(char*)data);
-#endif
+ ast_debug(5, "MYSQL: data=%s\n", (char *)data);
if (!data) {
- ast_log(LOG_WARNING, "APP_MYSQL requires an argument (see manual)\n");
+ ast_log(LOG_WARNING, "MYSQL requires an argument (see manual)\n");
return -1;
}
u = ast_module_user_add(chan);
- result=0;
+ result = 0;
ast_mutex_lock(&_mysql_mutex);
- if (strncasecmp("connect",data,strlen("connect"))==0) {
- result=aMYSQL_connect(chan,ast_strdupa(data));
- } else if (strncasecmp("query",data,strlen("query"))==0) {
- result=aMYSQL_query(chan,ast_strdupa(data));
- } else if (strncasecmp("nextresult",data,strlen("nextresult"))==0) {
- result=aMYSQL_nextresult(chan,ast_strdupa(data));
- } else if (strncasecmp("fetch",data,strlen("fetch"))==0) {
- result=aMYSQL_fetch(chan,ast_strdupa(data));
- } else if (strncasecmp("clear",data,strlen("clear"))==0) {
- result=aMYSQL_clear(chan,ast_strdupa(data));
- } else if (strncasecmp("disconnect",data,strlen("disconnect"))==0) {
- result=aMYSQL_disconnect(chan,ast_strdupa(data));
- } else {
- ast_log(LOG_WARNING, "Unknown argument to MYSQL application : %s\n",(char *)data);
- result=-1;
+ if (strncasecmp("connect", data, strlen("connect")) == 0) {
+ result = aMYSQL_connect(chan, ast_strdupa(data));
+ } else if (strncasecmp("query", data, strlen("query")) == 0) {
+ result = aMYSQL_query(chan, ast_strdupa(data));
+ } else if (strncasecmp("nextresult", data, strlen("nextresult")) == 0) {
+ result = aMYSQL_nextresult(chan, ast_strdupa(data));
+ } else if (strncasecmp("fetch", data, strlen("fetch")) == 0) {
+ result = aMYSQL_fetch(chan, ast_strdupa(data));
+ } else if (strncasecmp("clear", data, strlen("clear")) == 0) {
+ result = aMYSQL_clear(chan, ast_strdupa(data));
+ } else if (strncasecmp("disconnect", data, strlen("disconnect")) == 0) {
+ result = aMYSQL_disconnect(chan, ast_strdupa(data));
+ } else if (strncasecmp("set", data, 3) == 0) {
+ result = aMYSQL_set(chan, ast_strdupa(data));
+ } else {
+ ast_log(LOG_WARNING, "Unknown argument to MYSQL application : %s\n", (char *)data);
+ result = -1;
}
ast_mutex_unlock(&_mysql_mutex);
More information about the asterisk-addons-commits
mailing list