Applications no longer need to call ast_module_user_add and ast_module_user_remove. This is now taken care of in the pbx_exec function outside of the application.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Joshua Colp 18 years ago
parent 96a646734f
commit b8cd949cce

@ -1548,10 +1548,7 @@ static int adsi_prog(struct ast_channel *chan, char *script)
static int adsi_exec(struct ast_channel *chan, void *data)
{
int res=0;
struct ast_module_user *u;
u = ast_module_user_add(chan);
int res = 0;
if (ast_strlen_zero(data))
data = "asterisk.adsi";
@ -1564,8 +1561,6 @@ static int adsi_exec(struct ast_channel *chan, void *data)
ast_verbose(VERBOSE_PREFIX_3 "ADSI Available on CPE. Attempting Upload.\n");
res = adsi_prog(chan, data);
}
ast_module_user_remove(u);
return res;
}

@ -628,14 +628,11 @@ static int receive_ademco_contact_id( struct ast_channel *chan, void *data, int
static int alarmreceiver_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
event_node_t *elp, *efree;
char signalling_type[64] = "";
event_node_t *event_head = NULL;
u = ast_module_user_add(chan);
/* Set write and read formats to ULAW */
if(option_verbose >= 4)
@ -643,13 +640,11 @@ static int alarmreceiver_exec(struct ast_channel *chan, void *data)
if (ast_set_write_format(chan,AST_FORMAT_ULAW)){
ast_log(LOG_WARNING, "AlarmReceiver: Unable to set write format to Mu-law on %s\n",chan->name);
ast_module_user_remove(u);
return -1;
}
if (ast_set_read_format(chan,AST_FORMAT_ULAW)){
ast_log(LOG_WARNING, "AlarmReceiver: Unable to set read format to Mu-law on %s\n",chan->name);
ast_module_user_remove(u);
return -1;
}
@ -664,13 +659,8 @@ static int alarmreceiver_exec(struct ast_channel *chan, void *data)
ast_verbose(VERBOSE_PREFIX_4 "AlarmReceiver: Answering channel\n");
if (chan->_state != AST_STATE_UP) {
res = ast_answer(chan);
if (res) {
ast_module_user_remove(u);
if ((res = ast_answer(chan)))
return -1;
}
}
/* Wait for the connection to settle post-answer */
@ -722,9 +712,6 @@ static int alarmreceiver_exec(struct ast_channel *chan, void *data)
ast_free(efree);
}
ast_module_user_remove(u);
return 0;
}

@ -318,11 +318,7 @@ static void isAnsweringMachine(struct ast_channel *chan, void *data)
static int amd_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u = NULL;
u = ast_module_user_add(chan);
isAnsweringMachine(chan, data);
ast_module_user_remove(u);
return 0;
}

@ -90,7 +90,6 @@ static int auth_exec(struct ast_channel *chan, void *data)
{
int res=0;
int retries;
struct ast_module_user *u;
char passwd[256];
char *prompt;
int maxdigits;
@ -107,15 +106,10 @@ static int auth_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "Authenticate requires an argument(password)\n");
return -1;
}
u = ast_module_user_add(chan);
if (chan->_state != AST_STATE_UP) {
res = ast_answer(chan);
if (res) {
ast_module_user_remove(u);
if ((res = ast_answer(chan)))
return -1;
}
}
argcopy = ast_strdupa(data);
@ -217,7 +211,7 @@ static int auth_exec(struct ast_channel *chan, void *data)
res = ast_waitstream(chan, "");
res = -1;
}
ast_module_user_remove(u);
return res;
}

@ -46,15 +46,8 @@ static char *nocdr_synopsis = "Tell Asterisk to not maintain a CDR for the curre
static int nocdr_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
u = ast_module_user_add(chan);
if (chan->cdr) {
if (chan->cdr)
ast_set_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED);
}
ast_module_user_remove(u);
return 0;
}

@ -69,7 +69,6 @@ static int chanavail_exec(struct ast_channel *chan, void *data)
{
int res=-1, inuse=-1, option_state=0, string_compare=0;
int status;
struct ast_module_user *u;
char *info, tmp[512], trychan[512], *peers, *tech, *number, *rest, *cur;
struct ast_channel *tempchan;
AST_DECLARE_APP_ARGS(args,
@ -82,8 +81,6 @@ static int chanavail_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
info = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, info);
@ -108,7 +105,6 @@ static int chanavail_exec(struct ast_channel *chan, void *data)
number = strchr(tech, '/');
if (!number) {
ast_log(LOG_WARNING, "ChanIsAvail argument takes format ([technology]/[device])\n");
ast_module_user_remove(u);
return -1;
}
*number = '\0';
@ -151,7 +147,6 @@ static int chanavail_exec(struct ast_channel *chan, void *data)
pbx_builtin_setvar_helper(chan, "AVAILORIGCHAN", "");
}
ast_module_user_remove(u);
return 0;
}

@ -52,7 +52,6 @@ static char *descrip =
static int asyncgoto_exec(struct ast_channel *chan, void *data)
{
int res = -1;
struct ast_module_user *u;
char *info, *context, *exten, *priority;
int prio = 1;
struct ast_channel *chan2 = NULL;
@ -67,8 +66,6 @@ static int asyncgoto_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
info = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, info);
@ -115,7 +112,6 @@ static int asyncgoto_exec(struct ast_channel *chan, void *data)
chanquit:
ast_mutex_unlock(&chan2->lock);
quit:
ast_module_user_remove(u);
return res;
}

@ -626,7 +626,6 @@ exit:
static int chanspy_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
char *options = NULL;
char *spec = NULL;
char *argv[2];
@ -641,8 +640,6 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
data = ast_strdupa(data);
u = ast_module_user_add(chan);
if ((argc = ast_app_separate_args(data, '|', argv, sizeof(argv) / sizeof(argv[0])))) {
spec = argv[0];
if (argc > 1)
@ -680,7 +677,6 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
oldwf = chan->writeformat;
if (ast_set_write_format(chan, AST_FORMAT_SLINEAR) < 0) {
ast_log(LOG_ERROR, "Could Not Set Write Format.\n");
ast_module_user_remove(u);
return -1;
}
@ -702,14 +698,11 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
if (oldwf && ast_set_write_format(chan, oldwf) < 0)
ast_log(LOG_ERROR, "Could Not Set Write Format.\n");
ast_module_user_remove(u);
return res;
}
static int extenspy_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
char *options = NULL;
char *exten = NULL;
char *context = NULL;
@ -725,8 +718,6 @@ static int extenspy_exec(struct ast_channel *chan, void *data)
data = ast_strdupa(data);
u = ast_module_user_add(chan);
if ((argc = ast_app_separate_args(data, '|', argv, sizeof(argv) / sizeof(argv[0])))) {
context = argv[0];
if (!ast_strlen_zero(argv[0]))
@ -765,7 +756,6 @@ static int extenspy_exec(struct ast_channel *chan, void *data)
oldwf = chan->writeformat;
if (ast_set_write_format(chan, AST_FORMAT_SLINEAR) < 0) {
ast_log(LOG_ERROR, "Could Not Set Write Format.\n");
ast_module_user_remove(u);
return -1;
}
@ -787,8 +777,6 @@ static int extenspy_exec(struct ast_channel *chan, void *data)
if (oldwf && ast_set_write_format(chan, oldwf) < 0)
ast_log(LOG_ERROR, "Could Not Set Write Format.\n");
ast_module_user_remove(u);
return res;
}

@ -93,7 +93,6 @@ static int controlplayback_exec(struct ast_channel *chan, void *data)
int skipms = 0;
long offsetms = 0;
char offsetbuf[20];
struct ast_module_user *u;
char *tmp;
int argc;
char *argv[8] = { NULL, };
@ -114,8 +113,6 @@ static int controlplayback_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "ControlPlayback requires an argument (filename)\n");
return -1;
}
u = ast_module_user_add(chan);
tmp = ast_strdupa(data);
@ -123,7 +120,6 @@ static int controlplayback_exec(struct ast_channel *chan, void *data)
if (argc < 1) {
ast_log(LOG_WARNING, "ControlPlayback requires an argument (filename)\n");
ast_module_user_remove(u);
return -1;
}
@ -165,8 +161,6 @@ static int controlplayback_exec(struct ast_channel *chan, void *data)
snprintf(offsetbuf, sizeof(offsetbuf), "%ld", offsetms);
pbx_builtin_setvar_helper(chan, "CPLAYBACKOFFSET", offsetbuf);
ast_module_user_remove(u);
return res;
}

@ -68,9 +68,6 @@ static char *dt_synopsis = "Delete a family or keytree from the database";
static int deltree_exec(struct ast_channel *chan, void *data)
{
char *argv, *family, *keytree;
struct ast_module_user *u;
u = ast_module_user_add(chan);
argv = ast_strdupa(data);
@ -79,7 +76,6 @@ static int deltree_exec(struct ast_channel *chan, void *data)
keytree = strsep(&argv, "\0");
if (!family || !keytree) {
ast_debug(1, "Ignoring; Syntax error in argument\n");
ast_module_user_remove(u);
return 0;
}
if (ast_strlen_zero(keytree))
@ -101,19 +97,14 @@ static int deltree_exec(struct ast_channel *chan, void *data)
ast_verbose(VERBOSE_PREFIX_3 "DBdeltree: Error deleting key from database.\n");
}
ast_module_user_remove(u);
return 0;
}
static int del_exec(struct ast_channel *chan, void *data)
{
char *argv, *family, *key;
struct ast_module_user *u;
static int deprecation_warning = 0;
u = ast_module_user_add(chan);
if (!deprecation_warning) {
deprecation_warning = 1;
ast_log(LOG_WARNING, "The DBdel application has been deprecated in favor of the DB_DELETE dialplan function!\n");
@ -126,7 +117,6 @@ static int del_exec(struct ast_channel *chan, void *data)
key = strsep(&argv, "\0");
if (!family || !key) {
ast_debug(1, "Ignoring; Syntax error in argument\n");
ast_module_user_remove(u);
return 0;
}
if (option_verbose > 2)
@ -138,8 +128,6 @@ static int del_exec(struct ast_channel *chan, void *data)
} else {
ast_debug(1, "Ignoring, no parameters\n");
}
ast_module_user_remove(u);
return 0;
}

@ -1195,7 +1195,6 @@ static int setup_privacy_args(struct privacy_args *pa,
static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags *peerflags, int *continue_exec)
{
int res = -1; /* default: error */
struct ast_module_user *u;
char *rest, *cur; /* scan the list of destinations */
struct chanlist *outgoing = NULL; /* list of destinations */
struct ast_channel *peer;
@ -1234,8 +1233,6 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
return -1;
}
u = ast_module_user_add(chan); /* XXX is this the right place ? */
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
@ -1820,7 +1817,6 @@ out:
}
done:
ast_module_user_remove(u); /* XXX probably not the right place for this. */
return res;
}
@ -1838,7 +1834,6 @@ static int retrydial_exec(struct ast_channel *chan, void *data)
char *announce = NULL, *dialdata = NULL;
const char *context = NULL;
int sleep = 0, loops = 0, res = -1;
struct ast_module_user *u;
struct ast_flags peerflags;
if (ast_strlen_zero(data)) {
@ -1846,8 +1841,6 @@ static int retrydial_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
announce = ast_strdupa(data);
memset(&peerflags, 0, sizeof(peerflags));
@ -1934,7 +1927,6 @@ static int retrydial_exec(struct ast_channel *chan, void *data)
if (ast_test_flag(chan, AST_FLAG_MOH))
ast_moh_stop(chan);
done:
ast_module_user_remove(u);
return res;
}
@ -1946,9 +1938,8 @@ static int unload_module(void)
res = ast_unregister_application(app);
res |= ast_unregister_application(rapp);
if ((con = ast_context_find("app_dial_gosub_virtual_context"))) {
if ((con = ast_context_find("app_dial_gosub_virtual_context")))
ast_context_remove_extension2(con, "s", 1, NULL);
}
return res;
}

@ -89,7 +89,6 @@ static int dictate_exec(struct ast_channel *chan, void *data)
struct ast_flags flags = {0};
struct ast_filestream *fs;
struct ast_frame *f = NULL;
struct ast_module_user *u;
int ffactor = 320 * 80,
res = 0,
done = 0,
@ -101,8 +100,6 @@ static int dictate_exec(struct ast_channel *chan, void *data)
len = 0,
maxlen = 0,
mode = 0;
u = ast_module_user_add(chan);
snprintf(dftbase, sizeof(dftbase), "%s/dictate", ast_config_AST_SPOOL_DIR);
if (!ast_strlen_zero(data)) {
@ -122,7 +119,6 @@ static int dictate_exec(struct ast_channel *chan, void *data)
oldr = chan->readformat;
if ((res = ast_set_read_format(chan, AST_FORMAT_SLINEAR)) < 0) {
ast_log(LOG_WARNING, "Unable to set to linear mode.\n");
ast_module_user_remove(u);
return -1;
}
@ -330,7 +326,6 @@ static int dictate_exec(struct ast_channel *chan, void *data)
if (oldr) {
ast_set_read_format(chan, oldr);
}
ast_module_user_remove(u);
return 0;
}

@ -133,7 +133,6 @@ static int pickup_by_mark(struct ast_channel *chan, const char *mark)
static int pickup_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u = NULL;
char *tmp = ast_strdupa(data);
char *exten = NULL, *context = NULL;
@ -141,8 +140,6 @@ static int pickup_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "Pickup requires an argument (extension)!\n");
return -1;
}
u = ast_module_user_add(chan);
/* Parse extension (and context if there) */
while (!ast_strlen_zero(tmp) && (exten = strsep(&tmp, "&"))) {
@ -158,8 +155,6 @@ static int pickup_exec(struct ast_channel *chan, void *data)
ast_log(LOG_NOTICE, "No target channel found for %s.\n", exten);
}
ast_module_user_remove(u);
return res;
}

@ -566,7 +566,6 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, struct
static int directory_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
struct ast_config *cfg, *ucfg;
int last = 1;
int readext = 0;
@ -584,8 +583,6 @@ static int directory_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
@ -605,7 +602,6 @@ static int directory_exec(struct ast_channel *chan, void *data)
cfg = realtime_directory(args.vmcontext);
if (!cfg) {
ast_log(LOG_ERROR, "Unable to read the configuration data!\n");
ast_module_user_remove(u);
return -1;
}
@ -640,7 +636,6 @@ static int directory_exec(struct ast_channel *chan, void *data)
if (ucfg)
ast_config_destroy(ucfg);
ast_config_destroy(cfg);
ast_module_user_remove(u);
return res;
}

@ -123,7 +123,6 @@ static int disa_exec(struct ast_channel *chan, void *data)
int i,j,k,x,did_ignore,special_noanswer;
int firstdigittimeout = 20000;
int digittimeout = 10000;
struct ast_module_user *u;
struct ast_flags flags;
char *tmp, exten[AST_MAX_EXTENSION],acctcode[20]="";
char pwline[256];
@ -145,8 +144,6 @@ static int disa_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "DISA requires an argument (passcode/passcode file)\n");
return -1;
}
u = ast_module_user_add(chan);
if (chan->pbx) {
firstdigittimeout = chan->pbx->rtimeout*1000;
@ -155,12 +152,10 @@ static int disa_exec(struct ast_channel *chan, void *data)
if (ast_set_write_format(chan,AST_FORMAT_ULAW)) {
ast_log(LOG_WARNING, "Unable to set write format to Mu-law on %s\n", chan->name);
ast_module_user_remove(u);
return -1;
}
if (ast_set_read_format(chan,AST_FORMAT_ULAW)) {
ast_log(LOG_WARNING, "Unable to set read format to Mu-law on %s\n", chan->name);
ast_module_user_remove(u);
return -1;
}
@ -218,13 +213,11 @@ static int disa_exec(struct ast_channel *chan, void *data)
f = ast_read(chan);
if (f == NULL) {
ast_module_user_remove(u);
return -1;
}
if ((f->frametype == AST_FRAME_CONTROL) &&
(f->subclass == AST_CONTROL_HANGUP)) {
ast_frfree(f);
ast_module_user_remove(u);
return -1;
}
if (f->frametype == AST_FRAME_VOICE) {
@ -254,7 +247,6 @@ static int disa_exec(struct ast_channel *chan, void *data)
fp = fopen(args.passcode,"r");
if (!fp) {
ast_log(LOG_WARNING,"DISA password file %s not found on chan %s\n",args.passcode,chan->name);
ast_module_user_remove(u);
return -1;
}
pwline[0] = 0;
@ -361,7 +353,6 @@ static int disa_exec(struct ast_channel *chan, void *data)
if (special_noanswer) flags.flags = 0;
ast_cdr_reset(chan->cdr, &flags);
ast_explicit_goto(chan, args.context, exten, 1);
ast_module_user_remove(u);
return 0;
}
}
@ -382,7 +373,6 @@ reorder:
ast_frfree(f);
}
ast_playtones_stop(chan);
ast_module_user_remove(u);
return -1;
}

@ -142,14 +142,11 @@ static int serialize_showchan(struct ast_channel *c, char *buf, size_t size)
static int dumpchan_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
struct ast_str *vars = ast_str_alloca(BUFSIZ * 4); /* XXX very large! */
char info[1024];
int level = 0;
static char *line = "================================================================================";
u = ast_module_user_add(chan);
if (!ast_strlen_zero(data))
level = atoi(data);
@ -157,8 +154,6 @@ static int dumpchan_exec(struct ast_channel *chan, void *data)
serialize_showchan(chan, info, sizeof(info));
if (option_verbose >= level)
ast_verbose("\nDumping Info For Channel: %s:\n%s\nInfo:\n%s\nVariables:\n%s%s\n", chan->name, line, info, vars->str, line);
ast_module_user_remove(u);
return 0;
}

@ -55,9 +55,6 @@ static int echo_exec(struct ast_channel *chan, void *data)
{
int res = -1;
int format;
struct ast_module_user *u;
u = ast_module_user_add(chan);
format = ast_best_codec(chan->nativeformats);
ast_set_write_format(chan, format);
@ -81,7 +78,6 @@ static int echo_exec(struct ast_channel *chan, void *data)
ast_frfree(f);
}
end:
ast_module_user_remove(u);
return res;
}

@ -90,15 +90,12 @@ static char *execif_descrip =
static int exec_exec(struct ast_channel *chan, void *data)
{
int res=0;
struct ast_module_user *u;
int res = 0;
char *s, *appname, *endargs, args[MAXRESULT] = "";
struct ast_app *app;
if (ast_strlen_zero(data))
return 0;
u = ast_module_user_add(chan);
s = ast_strdupa(data);
appname = strsep(&s, "(");
@ -118,23 +115,18 @@ static int exec_exec(struct ast_channel *chan, void *data)
}
}
ast_module_user_remove(u);
return res;
}
static int tryexec_exec(struct ast_channel *chan, void *data)
{
int res=0;
struct ast_module_user *u;
int res = 0;
char *s, *appname, *endargs, args[MAXRESULT] = "";
struct ast_app *app;
if (ast_strlen_zero(data))
return 0;
u = ast_module_user_add(chan);
s = ast_strdupa(data);
appname = strsep(&s, "(");
if (s) {
@ -154,22 +146,17 @@ static int tryexec_exec(struct ast_channel *chan, void *data)
}
}
ast_module_user_remove(u);
return 0;
}
static int execif_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char *myapp = NULL;
char *mydata = NULL;
char *expr = NULL;
struct ast_app *app = NULL;
u = ast_module_user_add(chan);
expr = ast_strdupa(data);
if ((myapp = strchr(expr,'|'))) {
@ -193,8 +180,6 @@ static int execif_exec(struct ast_channel *chan, void *data)
ast_log(LOG_ERROR,"Invalid Syntax.\n");
res = -1;
}
ast_module_user_remove(u);
return res;
}

@ -243,7 +243,6 @@ static struct playlist_entry *make_entry(const char *filename)
static int app_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *lu;
struct playlist_entry *entry;
const char *args = data;
int child_stdin[2] = { 0,0 };
@ -265,8 +264,6 @@ static int app_exec(struct ast_channel *chan, void *data)
struct ivr_localuser *u = &foo;
sigset_t fullset, oldset;
lu = ast_module_user_add(chan);
sigfillset(&fullset);
pthread_sigmask(SIG_BLOCK, &fullset, &oldset);
@ -275,7 +272,6 @@ static int app_exec(struct ast_channel *chan, void *data)
if (ast_strlen_zero(args)) {
ast_log(LOG_WARNING, "ExternalIVR requires a command to execute\n");
ast_module_user_remove(lu);
return -1;
}
@ -571,8 +567,6 @@ static int app_exec(struct ast_channel *chan, void *data)
while ((entry = AST_LIST_REMOVE_HEAD(&u->playlist, list)))
ast_free(entry);
ast_module_user_remove(lu);
return res;
}

@ -284,7 +284,6 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
{
int usecache;
int res=0;
struct ast_module_user *u;
struct sockaddr_in serv_addr;
struct hostent *serverhost;
struct ast_hostent ahp;
@ -323,12 +322,9 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
return -1;
}
u = ast_module_user_add(chan);
cfg = ast_config_load(FESTIVAL_CONFIG);
if (!cfg) {
ast_log(LOG_WARNING, "No such configuration file %s\n", FESTIVAL_CONFIG);
ast_module_user_remove(u);
return -1;
}
if (!(host = ast_variable_retrieve(cfg, "general", "host"))) {
@ -385,7 +381,6 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
if (fd < 0) {
ast_log(LOG_WARNING,"festival_client: can't get socket\n");
ast_config_destroy(cfg);
ast_module_user_remove(u);
return -1;
}
@ -398,7 +393,6 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
if (serverhost == (struct hostent *)0) {
ast_log(LOG_WARNING,"festival_client: gethostbyname failed\n");
ast_config_destroy(cfg);
ast_module_user_remove(u);
return -1;
}
memmove(&serv_addr.sin_addr,serverhost->h_addr, serverhost->h_length);
@ -410,7 +404,6 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
if (connect(fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) != 0) {
ast_log(LOG_WARNING,"festival_client: connect to server failed\n");
ast_config_destroy(cfg);
ast_module_user_remove(u);
return -1;
}
@ -502,7 +495,6 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
ast_log(LOG_WARNING,"Unable to read from cache/festival fd\n");
close(fd);
ast_config_destroy(cfg);
ast_module_user_remove(u);
return -1;
}
n += read_data;
@ -529,7 +521,6 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
} while (strcmp(ack,"OK\n") != 0);
close(fd);
ast_config_destroy(cfg);
ast_module_user_remove(u);
return res;
}

@ -73,15 +73,12 @@ static int flash_exec(struct ast_channel *chan, void *data)
{
int res = -1;
int x;
struct ast_module_user *u;
struct zt_params ztp;
if (strcasecmp(chan->tech->type, "Zap")) {
ast_log(LOG_WARNING, "%s is not a Zap channel\n", chan->name);
return -1;
}
u = ast_module_user_add(chan);
memset(&ztp, 0, sizeof(ztp));
res = ioctl(chan->fds[0], ZT_GET_PARAMS, &ztp);
@ -104,8 +101,6 @@ static int flash_exec(struct ast_channel *chan, void *data)
} else
ast_log(LOG_WARNING, "Unable to get parameters of %s: %s\n", chan->name, strerror(errno));
ast_module_user_remove(u);
return res;
}

@ -899,7 +899,6 @@ static int app_exec(struct ast_channel *chan, void *data)
struct call_followme *f;
struct number *nm, *newnm;
int res = 0;
struct ast_module_user *u;
char *argstr;
char namerecloc[255];
int duration = 0;
@ -922,8 +921,6 @@ static int app_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
AST_STANDARD_APP_ARGS(args, argstr);
if (!ast_strlen_zero(args.followmeid))
@ -1043,8 +1040,6 @@ static int app_exec(struct ast_channel *chan, void *data)
}
outrun:
ast_module_user_remove(u);
return res;
}

@ -77,21 +77,17 @@ static void ast_cdr_fork(struct ast_channel *chan)
static int forkcdr_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
if (!chan->cdr) {
ast_log(LOG_WARNING, "Channel does not have a CDR\n");
return 0;
}
u = ast_module_user_add(chan);
if (!ast_strlen_zero(data))
ast_set2_flag(chan->cdr, strchr(data, 'v'), AST_CDR_FLAG_KEEP_VARS);
ast_cdr_fork(chan);
ast_module_user_remove(u);
return res;
}

@ -66,7 +66,6 @@ static int cpeid_setstatus(struct ast_channel *chan, char *stuff[], int voice)
static int cpeid_exec(struct ast_channel *chan, void *idata)
{
int res=0;
struct ast_module_user *u;
unsigned char cpeid[4];
int gotgeometry = 0;
int gotcpeid = 0;
@ -74,8 +73,6 @@ static int cpeid_exec(struct ast_channel *chan, void *idata)
char *data[4];
unsigned int x;
u = ast_module_user_add(chan);
for (x = 0; x < 4; x++)
data[x] = alloca(80);
@ -125,7 +122,7 @@ static int cpeid_exec(struct ast_channel *chan, void *idata)
ast_adsi_unload_session(chan);
}
}
ast_module_user_remove(u);
return res;
}

@ -103,8 +103,7 @@ static int icesencode(char *filename, int fd)
static int ices_exec(struct ast_channel *chan, void *data)
{
int res=0;
struct ast_module_user *u;
int res = 0;
int fds[2];
int ms = -1;
int pid = -1;
@ -119,14 +118,11 @@ static int ices_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "ICES requires an argument (configfile.xml)\n");
return -1;
}
u = ast_module_user_add(chan);
last = ast_tv(0, 0);
if (pipe(fds)) {
ast_log(LOG_WARNING, "Unable to create pipe\n");
ast_module_user_remove(u);
return -1;
}
flags = fcntl(fds[1], F_GETFL);
@ -141,7 +137,6 @@ static int ices_exec(struct ast_channel *chan, void *data)
close(fds[0]);
close(fds[1]);
ast_log(LOG_WARNING, "Answer failed!\n");
ast_module_user_remove(u);
return -1;
}
@ -151,7 +146,6 @@ static int ices_exec(struct ast_channel *chan, void *data)
close(fds[0]);
close(fds[1]);
ast_log(LOG_WARNING, "Unable to set write format to signed linear\n");
ast_module_user_remove(u);
return -1;
}
if (((char *)data)[0] == '/')
@ -201,8 +195,6 @@ static int ices_exec(struct ast_channel *chan, void *data)
if (!res && oreadformat)
ast_set_read_format(chan, oreadformat);
ast_module_user_remove(u);
return res;
}

@ -61,15 +61,12 @@ static char *descrip =
static int sendimage_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char *parse;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(filename);
AST_APP_ARG(options);
);
u = ast_module_user_add(chan);
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
@ -85,15 +82,12 @@ static int sendimage_exec(struct ast_channel *chan, void *data)
if (!ast_supports_images(chan)) {
/* Does not support transport */
pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "NOSUPPORT");
ast_module_user_remove(u);
return 0;
}
if (!(res = ast_send_image(chan, args.filename)))
pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "OK");
ast_module_user_remove(u);
return res;
}

@ -92,15 +92,12 @@ AST_IVR_DECLARE_MENU(ivr_demo, "IVR Demo Main Menu", 0,
static int skel_exec(struct ast_channel *chan, void *data)
{
int res=0;
struct ast_module_user *u;
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "skel requires an argument (filename)\n");
return -1;
}
u = ast_module_user_add(chan);
/* Do our thing here */
if (chan->_state != AST_STATE_UP)
@ -108,8 +105,6 @@ static int skel_exec(struct ast_channel *chan, void *data)
if (!res)
res = ast_ivr_menu_run(chan, &ivr_demo, data);
ast_module_user_remove(u);
return res;
}

@ -166,15 +166,12 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
char *save_macro_context;
char *save_macro_priority;
char *save_macro_offset;
struct ast_module_user *u;
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "Macro() requires arguments. See \"show application macro\" for help.\n");
return -1;
}
u = ast_module_user_add(chan);
/* does the user want a deeper rabbit hole? */
s = pbx_builtin_getvar_helper(chan, "MACRO_RECURSION");
if (s)
@ -193,7 +190,6 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
if (depth >= maxdepth) {
ast_log(LOG_ERROR, "Macro(): possible infinite loop detected. Returning early.\n");
ast_module_user_remove(u);
return 0;
}
snprintf(depthc, sizeof(depthc), "%d", depth + 1);
@ -204,7 +200,6 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
macro = strsep(&rest, "|");
if (ast_strlen_zero(macro)) {
ast_log(LOG_WARNING, "Invalid macro name specified\n");
ast_module_user_remove(u);
return 0;
}
@ -214,7 +209,6 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
ast_log(LOG_WARNING, "No such context '%s' for macro '%s'\n", fullmacro, macro);
else
ast_log(LOG_WARNING, "Context '%s' for macro '%s' lacks 's' extension, priority 1\n", fullmacro, macro);
ast_module_user_remove(u);
return 0;
}
@ -225,8 +219,6 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
if (ast_context_lockmacro(fullmacro)) {
ast_log(LOG_WARNING, "Failed to lock macro '%s' as in-use\n", fullmacro);
ast_autoservice_stop(chan);
ast_module_user_remove(u);
return 0;
}
ast_autoservice_stop(chan);
@ -474,8 +466,6 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
res = 0;
}
}
ast_module_user_remove(u);
return res;
}
@ -494,14 +484,9 @@ static int macroif_exec(struct ast_channel *chan, void *data)
{
char *expr = NULL, *label_a = NULL, *label_b = NULL;
int res = 0;
struct ast_module_user *u;
u = ast_module_user_add(chan);
if (!(expr = ast_strdupa(data))) {
ast_module_user_remove(u);
if (!(expr = ast_strdupa(data)))
return -1;
}
if ((label_a = strchr(expr, '?'))) {
*label_a = '\0';
@ -517,8 +502,6 @@ static int macroif_exec(struct ast_channel *chan, void *data)
} else
ast_log(LOG_WARNING, "Invalid Syntax.\n");
ast_module_user_remove(u);
return res;
}

@ -2486,7 +2486,6 @@ static struct ast_conference *find_conf(struct ast_channel *chan, char *confno,
/*! \brief The MeetmeCount application */
static int count_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
int res = 0;
struct ast_conference *conf;
int count;
@ -2501,13 +2500,9 @@ static int count_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "MeetMeCount requires an argument (conference number)\n");
return -1;
}
u = ast_module_user_add(chan);
if (!(localdata = ast_strdupa(data))) {
ast_module_user_remove(u);
if (!(localdata = ast_strdupa(data)))
return -1;
}
AST_STANDARD_APP_ARGS(args, localdata);
@ -2529,7 +2524,6 @@ static int count_exec(struct ast_channel *chan, void *data)
ast_answer(chan);
res = ast_say_number(chan, count, "", chan->language, (char *) NULL); /* Needs gender */
}
ast_module_user_remove(u);
return res;
}
@ -2538,7 +2532,6 @@ static int count_exec(struct ast_channel *chan, void *data)
static int conf_exec(struct ast_channel *chan, void *data)
{
int res=-1;
struct ast_module_user *u;
char confno[MAX_CONFNUM] = "";
int allowretry = 0;
int retrycnt = 0;
@ -2555,8 +2548,6 @@ static int conf_exec(struct ast_channel *chan, void *data)
);
char *optargs[OPT_ARG_ARRAY_SIZE] = { NULL, };
u = ast_module_user_add(chan);
if (ast_strlen_zero(data)) {
allowretry = 1;
notdata = "";
@ -2777,8 +2768,6 @@ static int conf_exec(struct ast_channel *chan, void *data)
if (cnf)
dispose_conf(cnf);
ast_module_user_remove(u);
return res;
}
@ -2804,7 +2793,6 @@ static int admin_exec(struct ast_channel *chan, void *data) {
char *params;
struct ast_conference *cnf;
struct ast_conf_user *user = NULL;
struct ast_module_user *u;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(confno);
AST_APP_ARG(command);
@ -2816,14 +2804,11 @@ static int admin_exec(struct ast_channel *chan, void *data) {
return -1;
}
u = ast_module_user_add(chan);
params = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, params);
if (!args.command) {
ast_log(LOG_WARNING, "MeetmeAdmin requires a command!\n");
ast_module_user_remove(u);
return -1;
}
@ -2836,7 +2821,6 @@ static int admin_exec(struct ast_channel *chan, void *data) {
if (!cnf) {
ast_log(LOG_WARNING, "Conference number '%s' not found!\n", args.confno);
AST_LIST_UNLOCK(&confs);
ast_module_user_remove(u);
return 0;
}
@ -2946,8 +2930,6 @@ static int admin_exec(struct ast_channel *chan, void *data) {
AST_LIST_UNLOCK(&confs);
dispose_conf(cnf);
ast_module_user_remove(u);
return 0;
}
@ -2958,7 +2940,6 @@ static int channel_admin_exec(struct ast_channel *chan, void *data) {
char *params;
struct ast_conference *conf = NULL;
struct ast_conf_user *user = NULL;
struct ast_module_user *u;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(channel);
AST_APP_ARG(command);
@ -2969,20 +2950,16 @@ static int channel_admin_exec(struct ast_channel *chan, void *data) {
return -1;
}
u = ast_module_user_add(chan);
params = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, params);
if (!args.channel) {
ast_log(LOG_WARNING, "MeetMeChannelAdmin requires a channel name!\n");
ast_module_user_remove(u);
return -1;
}
if (!args.command) {
ast_log(LOG_WARNING, "MeetMeChannelAdmin requires a command!\n");
ast_module_user_remove(u);
return -1;
}
@ -2997,7 +2974,6 @@ static int channel_admin_exec(struct ast_channel *chan, void *data) {
if (!user) {
ast_log(LOG_NOTICE, "Specified user (%s) not found\n", args.channel);
AST_LIST_UNLOCK(&confs);
ast_module_user_remove(u);
return 0;
}
@ -3018,8 +2994,6 @@ static int channel_admin_exec(struct ast_channel *chan, void *data) {
}
AST_LIST_UNLOCK(&confs);
ast_module_user_remove(u);
return 0;
}

@ -113,9 +113,6 @@ static struct ast_generator milliwattgen =
static int milliwatt_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
u = ast_module_user_add(chan);
ast_set_write_format(chan, AST_FORMAT_ULAW);
ast_set_read_format(chan, AST_FORMAT_ULAW);
@ -125,7 +122,6 @@ static int milliwatt_exec(struct ast_channel *chan, void *data)
if (ast_activate_generator(chan,&milliwattgen,"milliwatt") < 0) {
ast_log(LOG_WARNING,"Failed to activate generator on '%s'\n",chan->name);
ast_module_user_remove(u);
return -1;
}
@ -133,8 +129,6 @@ static int milliwatt_exec(struct ast_channel *chan, void *data)
ast_deactivate_generator(chan);
ast_module_user_remove(u);
return -1;
}

@ -1630,7 +1630,6 @@ static int leave_voicemail(struct ast_channel *chan, char *username, struct leav
/*! \brief Notify voicemail account owners - either generic template or user specific */
static int minivm_notify_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
int argc;
char *argv[2];
int res = 0;
@ -1644,18 +1643,13 @@ static int minivm_notify_exec(struct ast_channel *chan, void *data)
const char *format;
const char *duration_string;
u = ast_module_user_add(chan);
if (ast_strlen_zero(data)) {
ast_log(LOG_ERROR, "Minivm needs at least an account argument \n");
ast_module_user_remove(u);
return -1;
}
tmpptr = ast_strdupa((char *)data);
if (!tmpptr) {
ast_log(LOG_ERROR, "Out of memory\n");
ast_module_user_remove(u);
return -1;
}
argc = ast_app_separate_args(tmpptr, '|', argv, sizeof(argv) / sizeof(argv[0]));
@ -1672,7 +1666,6 @@ static int minivm_notify_exec(struct ast_channel *chan, void *data)
}
if (ast_strlen_zero(domain) || ast_strlen_zero(username)) {
ast_log(LOG_ERROR, "Need username@domain as argument. Sorry. Argument 0 %s\n", argv[0]);
ast_module_user_remove(u);
return -1;
}
@ -1680,7 +1673,6 @@ static int minivm_notify_exec(struct ast_channel *chan, void *data)
/* We could not find user, let's exit */
ast_log(LOG_WARNING, "Could not allocate temporary memory for '%s@%s'\n", username, domain);
pbx_builtin_setvar_helper(chan, "MINIVM_NOTIFY_STATUS", "FAILED");
ast_module_user_remove(u);
return -1;
}
@ -1699,7 +1691,6 @@ static int minivm_notify_exec(struct ast_channel *chan, void *data)
free_user(vmu);
/* Ok, we're ready to rock and roll. Return to dialplan */
ast_module_user_remove(u);
return res;
@ -1709,16 +1700,13 @@ static int minivm_notify_exec(struct ast_channel *chan, void *data)
static int minivm_record_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char *tmp;
struct leave_vm_options leave_options;
int argc;
char *argv[2];
struct ast_flags flags = { 0 };
char *opts[OPT_ARG_ARRAY_SIZE];
u = ast_module_user_add(chan);
memset(&leave_options, 0, sizeof(leave_options));
/* Answer channel if it's not already answered */
@ -1727,19 +1715,16 @@ static int minivm_record_exec(struct ast_channel *chan, void *data)
if (ast_strlen_zero(data)) {
ast_log(LOG_ERROR, "Minivm needs at least an account argument \n");
ast_module_user_remove(u);
return -1;
}
tmp = ast_strdupa((char *)data);
if (!tmp) {
ast_log(LOG_ERROR, "Out of memory\n");
ast_module_user_remove(u);
return -1;
}
argc = ast_app_separate_args(tmp, '|', argv, sizeof(argv) / sizeof(argv[0]));
if (argc == 2) {
if (ast_app_parse_options(minivm_app_options, &flags, opts, argv[1])) {
ast_module_user_remove(u);
return -1;
}
ast_copy_flags(&leave_options, &flags, OPT_SILENT | OPT_BUSY_GREETING | OPT_UNAVAIL_GREETING );
@ -1748,7 +1733,6 @@ static int minivm_record_exec(struct ast_channel *chan, void *data)
if (sscanf(opts[OPT_ARG_RECORDGAIN], "%d", &gain) != 1) {
ast_log(LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
ast_module_user_remove(u);
return -1;
} else
leave_options.record_gain = (signed char) gain;
@ -1765,16 +1749,12 @@ static int minivm_record_exec(struct ast_channel *chan, void *data)
}
pbx_builtin_setvar_helper(chan, "MINIVM_RECORD_STATUS", "SUCCESS");
ast_module_user_remove(u);
return res;
}
/*! \brief Play voicemail prompts - either generic or user specific */
static int minivm_greet_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
struct leave_vm_options leave_options = { 0, '\0'};
int argc;
char *argv[2];
@ -1794,27 +1774,21 @@ static int minivm_greet_exec(struct ast_channel *chan, void *data)
char *tmpptr;
struct minivm_account *vmu;
char *username = argv[0];
u = ast_module_user_add(chan);
if (ast_strlen_zero(data)) {
ast_log(LOG_ERROR, "Minivm needs at least an account argument \n");
ast_module_user_remove(u);
return -1;
}
tmpptr = ast_strdupa((char *)data);
if (!tmpptr) {
ast_log(LOG_ERROR, "Out of memory\n");
ast_module_user_remove(u);
return -1;
}
argc = ast_app_separate_args(tmpptr, '|', argv, sizeof(argv) / sizeof(argv[0]));
if (argc == 2) {
if (ast_app_parse_options(minivm_app_options, &flags, opts, argv[1])) {
ast_module_user_remove(u);
if (ast_app_parse_options(minivm_app_options, &flags, opts, argv[1]))
return -1;
}
ast_copy_flags(&leave_options, &flags, OPT_SILENT | OPT_BUSY_GREETING | OPT_UNAVAIL_GREETING );
}
@ -1827,14 +1801,12 @@ static int minivm_greet_exec(struct ast_channel *chan, void *data)
}
if (ast_strlen_zero(domain) || ast_strlen_zero(username)) {
ast_log(LOG_ERROR, "Need username@domain as argument. Sorry. Argument: %s\n", argv[0]);
ast_module_user_remove(u);
return -1;
}
ast_debug(1, "-_-_- Trying to find configuration for user %s in domain %s\n", username, domain);
if (!(vmu = find_account(domain, username, TRUE))) {
ast_log(LOG_ERROR, "Could not allocate memory. \n");
ast_module_user_remove(u);
return -1;
}
@ -1906,7 +1878,6 @@ static int minivm_greet_exec(struct ast_channel *chan, void *data)
pbx_builtin_setvar_helper(chan, "MINIVM_GREET_STATUS", "FAILED");
if(ast_test_flag(vmu, MVM_ALLOCED))
free_user(vmu);
ast_module_user_remove(u);
return -1;
}
if (res == '#') {
@ -1963,8 +1934,6 @@ static int minivm_greet_exec(struct ast_channel *chan, void *data)
/* Ok, we're ready to rock and roll. Return to dialplan */
ast_module_user_remove(u);
return res;
}
@ -1973,18 +1942,14 @@ static int minivm_greet_exec(struct ast_channel *chan, void *data)
static int minivm_delete_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char filename[BUFSIZ];
u = ast_module_user_add(chan);
if (!ast_strlen_zero(data))
ast_copy_string(filename, (char *) data, sizeof(filename));
else
ast_copy_string(filename, pbx_builtin_getvar_helper(chan, "MVM_FILENAME"), sizeof(filename));
if (ast_strlen_zero(filename)) {
ast_module_user_remove(u);
ast_log(LOG_ERROR, "No filename given in application arguments or channel variable MVM_FILENAME\n");
return res;
}
@ -2004,8 +1969,6 @@ static int minivm_delete_exec(struct ast_channel *chan, void *data)
ast_debug(2, "-_-_- Filename does not exist: %s\n", filename);
pbx_builtin_setvar_helper(chan, "MINIVM_DELETE_STATUS", "FAILED");
}
ast_module_user_remove(u);
return res;
}
@ -2013,7 +1976,6 @@ static int minivm_delete_exec(struct ast_channel *chan, void *data)
/*! \brief Record specific messages for voicemail account */
static int minivm_accmess_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
int argc = 0;
char *argv[2];
int res = 0;
@ -2030,8 +1992,6 @@ static int minivm_accmess_exec(struct ast_channel *chan, void *data)
char *prompt = NULL;
int duration;
int cmd;
u = ast_module_user_add(chan);
if (ast_strlen_zero(data)) {
ast_log(LOG_ERROR, "MinivmAccmess needs at least two arguments: account and option\n");
@ -2060,10 +2020,8 @@ static int minivm_accmess_exec(struct ast_channel *chan, void *data)
error = TRUE;
}
if (error) {
ast_module_user_remove(u);
if (error)
return -1;
}
ast_copy_string(tmp, argv[0], sizeof(tmp));
username = tmp;
@ -2074,7 +2032,6 @@ static int minivm_accmess_exec(struct ast_channel *chan, void *data)
}
if (ast_strlen_zero(domain) || ast_strlen_zero(username)) {
ast_log(LOG_ERROR, "Need username@domain as argument. Sorry. Argument 0 %s\n", argv[0]);
ast_module_user_remove(u);
return -1;
}
@ -2082,7 +2039,6 @@ static int minivm_accmess_exec(struct ast_channel *chan, void *data)
/* We could not find user, let's exit */
ast_log(LOG_WARNING, "Could not allocate temporary memory for '%s@%s'\n", username, domain);
pbx_builtin_setvar_helper(chan, "MINIVM_NOTIFY_STATUS", "FAILED");
ast_module_user_remove(u);
return -1;
}
@ -2115,8 +2071,6 @@ static int minivm_accmess_exec(struct ast_channel *chan, void *data)
/* Ok, we're ready to rock and roll. Return to dialplan */
ast_module_user_remove(u);
return res;
}

@ -302,7 +302,6 @@ static void launch_monitor_thread(struct ast_channel *chan, const char *filename
static int mixmonitor_exec(struct ast_channel *chan, void *data)
{
int x, readvol = 0, writevol = 0;
struct ast_module_user *u;
struct ast_flags flags = {0};
char *parse, *tmp, *slash;
AST_DECLARE_APP_ARGS(args,
@ -316,15 +315,12 @@ static int mixmonitor_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
if (ast_strlen_zero(args.filename)) {
ast_log(LOG_WARNING, "MixMonitor requires an argument (filename)\n");
ast_module_user_remove(u);
return -1;
}
@ -381,23 +377,14 @@ static int mixmonitor_exec(struct ast_channel *chan, void *data)
pbx_builtin_setvar_helper(chan, "MIXMONITOR_FILENAME", args.filename);
launch_monitor_thread(chan, args.filename, flags.flags, readvol, writevol, args.post_process);
ast_module_user_remove(u);
return 0;
}
static int stop_mixmonitor_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
u = ast_module_user_add(chan);
ast_channel_lock(chan);
ast_channel_spy_stop_by_type(chan, mixmonitor_spy_type);
ast_channel_unlock(chan);
ast_module_user_remove(u);
return 0;
}

@ -111,13 +111,9 @@ static int morsecode_exec(struct ast_channel *chan, void *data)
int res=0, ditlen, tone;
char *digit;
const char *ditlenc, *tonec;
struct ast_module_user *u;
u = ast_module_user_add(chan);
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "Syntax: Morsecode(<string>) - no argument found\n");
ast_module_user_remove(u);
return 0;
}
@ -155,7 +151,6 @@ static int morsecode_exec(struct ast_channel *chan, void *data)
playtone(chan, 0, 2 * ditlen);
}
ast_module_user_remove(u);
return res;
}

@ -125,7 +125,6 @@ static int timed_read(int fd, void *data, int datalen, int timeout)
static int mp3_exec(struct ast_channel *chan, void *data)
{
int res=0;
struct ast_module_user *u;
int fds[2];
int ms = -1;
int pid = -1;
@ -144,11 +143,8 @@ static int mp3_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
if (pipe(fds)) {
ast_log(LOG_WARNING, "Unable to create pipe\n");
ast_module_user_remove(u);
return -1;
}
@ -158,7 +154,6 @@ static int mp3_exec(struct ast_channel *chan, void *data)
res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
if (res < 0) {
ast_log(LOG_WARNING, "Unable to set write format to signed linear\n");
ast_module_user_remove(u);
return -1;
}
@ -230,8 +225,6 @@ static int mp3_exec(struct ast_channel *chan, void *data)
kill(pid, SIGKILL);
if (!res && owriteformat)
ast_set_write_format(chan, owriteformat);
ast_module_user_remove(u);
return res;
}

@ -116,7 +116,6 @@ static int timed_read(int fd, void *data, int datalen)
static int NBScat_exec(struct ast_channel *chan, void *data)
{
int res=0;
struct ast_module_user *u;
int fds[2];
int ms = -1;
int pid = -1;
@ -129,11 +128,8 @@ static int NBScat_exec(struct ast_channel *chan, void *data)
short frdata[160];
} myf;
u = ast_module_user_add(chan);
if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fds)) {
ast_log(LOG_WARNING, "Unable to create socketpair\n");
ast_module_user_remove(u);
return -1;
}
@ -143,7 +139,6 @@ static int NBScat_exec(struct ast_channel *chan, void *data)
res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
if (res < 0) {
ast_log(LOG_WARNING, "Unable to set write format to signed linear\n");
ast_module_user_remove(u);
return -1;
}
@ -213,8 +208,6 @@ static int NBScat_exec(struct ast_channel *chan, void *data)
if (!res && owriteformat)
ast_set_write_format(chan, owriteformat);
ast_module_user_remove(u);
return res;
}

@ -1262,7 +1262,6 @@ static int ospauth_exec(
void* data)
{
int res;
struct ast_module_user* u;
const char* provider = OSP_DEF_PROVIDER;
struct varshead* headp;
struct ast_var_t* current;
@ -1279,11 +1278,8 @@ static int ospauth_exec(
AST_APP_ARG(options);
);
u = ast_module_user_add(chan);
if (!(tmp = ast_strdupa(data))) {
ast_log(LOG_ERROR, "Out of memory\n");
ast_module_user_remove(u);
return -1;
}
@ -1332,8 +1328,6 @@ static int ospauth_exec(
res = 0;
}
ast_module_user_remove(u);
return res;
}
@ -1348,7 +1342,6 @@ static int osplookup_exec(
void* data)
{
int res, cres;
struct ast_module_user* u;
const char* provider = OSP_DEF_PROVIDER;
struct varshead* headp;
struct ast_var_t* current;
@ -1371,11 +1364,8 @@ static int osplookup_exec(
return -1;
}
u = ast_module_user_add(chan);
if (!(tmp = ast_strdupa(data))) {
ast_log(LOG_ERROR, "Out of memory\n");
ast_module_user_remove(u);
return -1;
}
@ -1426,7 +1416,6 @@ static int osplookup_exec(
ast_debug(1, "OSPLookup: source device '%s'\n", srcdev);
if ((cres = ast_autoservice_start(chan)) < 0) {
ast_module_user_remove(u);
return -1;
}
@ -1498,7 +1487,6 @@ static int osplookup_exec(
}
if ((cres = ast_autoservice_stop(chan)) < 0) {
ast_module_user_remove(u);
return -1;
}
@ -1508,8 +1496,6 @@ static int osplookup_exec(
res = 0;
}
ast_module_user_remove(u);
return res;
}
@ -1524,7 +1510,6 @@ static int ospnext_exec(
void* data)
{
int res;
struct ast_module_user* u;
const char* provider = OSP_DEF_PROVIDER;
int cause = 0;
struct varshead* headp;
@ -1546,11 +1531,8 @@ static int ospnext_exec(
return -1;
}
u = ast_module_user_add(chan);
if (!(tmp = ast_strdupa(data))) {
ast_log(LOG_ERROR, "Out of memory\n");
ast_module_user_remove(u);
return -1;
}
@ -1668,8 +1650,6 @@ static int ospnext_exec(
res = 0;
}
ast_module_user_remove(u);
return res;
}
@ -1684,7 +1664,6 @@ static int ospfinished_exec(
void* data)
{
int res = 1;
struct ast_module_user* u;
int cause = 0;
struct varshead* headp;
struct ast_var_t* current;
@ -1702,11 +1681,8 @@ static int ospfinished_exec(
AST_APP_ARG(options);
);
u = ast_module_user_add(chan);
if (!(tmp = ast_strdupa(data))) {
ast_log(LOG_ERROR, "Out of memory\n");
ast_module_user_remove(u);
return -1;
}
@ -1792,8 +1768,6 @@ static int ospfinished_exec(
res = 0;
}
ast_module_user_remove(u);
return res;
}

@ -85,7 +85,6 @@ AST_APP_OPTIONS(page_opts, {
static int page_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
char *options, *tech, *resource, *tmp;
char meetmeopts[88], originator[AST_CHANNEL_NAME];
struct ast_flags flags = { 0 };
@ -99,11 +98,8 @@ static int page_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
if (!(app = pbx_findapp("MeetMe"))) {
ast_log(LOG_WARNING, "There is no MeetMe application available!\n");
ast_module_user_remove(u);
return -1;
};
@ -188,8 +184,6 @@ static int page_exec(struct ast_channel *chan, void *data)
ast_dial_destroy(dial);
}
ast_module_user_remove(u);
return -1;
}

@ -90,21 +90,16 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data)
struct outgoing_helper oh;
int outstate;
struct ast_module_user *u;
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "ParkAndAnnounce requires arguments: (announce:template|timeout|dial|[return_context])\n");
return -1;
}
u = ast_module_user_add(chan);
s = ast_strdupa(data);
template=strsep(&s,"|");
if(! template) {
ast_log(LOG_WARNING, "PARK: An announce template must be defined\n");
ast_module_user_remove(u);
return -1;
}
@ -115,7 +110,6 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data)
dial=strsep(&s, "|");
if(!dial) {
ast_log(LOG_WARNING, "PARK: A dial resource must be specified i.e: Console/dsp or Zap/g1/5551212\n");
ast_module_user_remove(u);
return -1;
} else {
dialtech=strsep(&dial, "/");
@ -147,7 +141,6 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data)
}
if(atoi(priority) < 0) {
ast_log(LOG_WARNING, "Priority '%s' must be a number > 0\n", priority);
ast_module_user_remove(u);
return -1;
}
/* At this point we have a priority and maybe an extension and a context */
@ -193,12 +186,10 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data)
ast_verbose(VERBOSE_PREFIX_4 "Channel %s was never answered.\n", dchan->name);
ast_log(LOG_WARNING, "PARK: Channel %s was never answered for the announce.\n", dchan->name);
ast_hangup(dchan);
ast_module_user_remove(u);
return -1;
}
} else {
ast_log(LOG_WARNING, "PARK: Unable to allocate announce channel.\n");
ast_module_user_remove(u);
return -1;
}
@ -235,8 +226,6 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data)
ast_stopstream(dchan);
ast_hangup(dchan);
ast_module_user_remove(u);
return res;
}

@ -377,7 +377,6 @@ static int playback_exec(struct ast_channel *chan, void *data)
{
int res = 0;
int mres = 0;
struct ast_module_user *u;
char *tmp;
int option_skip=0;
int option_say=0;
@ -394,8 +393,6 @@ static int playback_exec(struct ast_channel *chan, void *data)
}
tmp = ast_strdupa(data);
u = ast_module_user_add(chan);
AST_STANDARD_APP_ARGS(args, tmp);
if (args.options) {
@ -436,7 +433,6 @@ static int playback_exec(struct ast_channel *chan, void *data)
}
done:
pbx_builtin_setvar_helper(chan, "PLAYBACKSTATUS", mres ? "FAILED" : "SUCCESS");
ast_module_user_remove(u);
return res;
}

@ -81,7 +81,6 @@ static int privacy_exec (struct ast_channel *chan, void *data)
int x = 0;
const char *s;
char phone[30];
struct ast_module_user *u;
struct ast_config *cfg = NULL;
char *parse = NULL;
AST_DECLARE_APP_ARGS(args,
@ -90,19 +89,14 @@ static int privacy_exec (struct ast_channel *chan, void *data)
AST_APP_ARG(options);
);
u = ast_module_user_add(chan);
if (!ast_strlen_zero(chan->cid.cid_num)) {
if (option_verbose > 2)
ast_verbose (VERBOSE_PREFIX_3 "CallerID Present: Skipping\n");
} else {
/*Answer the channel if it is not already*/
if (chan->_state != AST_STATE_UP) {
res = ast_answer(chan);
if (res) {
ast_module_user_remove(u);
if ((res = ast_answer(chan)))
return -1;
}
}
if (!ast_strlen_zero(data)) {
@ -199,8 +193,6 @@ static int privacy_exec (struct ast_channel *chan, void *data)
ast_config_destroy(cfg);
}
ast_module_user_remove(u);
return 0;
}

@ -3213,7 +3213,6 @@ static void reload_queue_members(void)
static int pqm_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *lu;
char *parse;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(queuename);
@ -3230,25 +3229,17 @@ static int pqm_exec(struct ast_channel *chan, void *data)
AST_STANDARD_APP_ARGS(args, parse);
lu = ast_module_user_add(chan);
if (args.options) {
}
if (ast_strlen_zero(args.interface)) {
ast_log(LOG_WARNING, "Missing interface argument to PauseQueueMember ([queuename]|interface[|options])\n");
ast_module_user_remove(lu);
return -1;
}
if (set_member_paused(args.queuename, args.interface, 1)) {
ast_log(LOG_WARNING, "Attempt to pause interface %s, not found\n", args.interface);
ast_module_user_remove(lu);
pbx_builtin_setvar_helper(chan, "PQMSTATUS", "NOTFOUND");
return -1;
}
ast_module_user_remove(lu);
pbx_builtin_setvar_helper(chan, "PQMSTATUS", "PAUSED");
return 0;
@ -3256,7 +3247,6 @@ static int pqm_exec(struct ast_channel *chan, void *data)
static int upqm_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *lu;
char *parse;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(queuename);
@ -3273,25 +3263,17 @@ static int upqm_exec(struct ast_channel *chan, void *data)
AST_STANDARD_APP_ARGS(args, parse);
lu = ast_module_user_add(chan);
if (args.options) {
}
if (ast_strlen_zero(args.interface)) {
ast_log(LOG_WARNING, "Missing interface argument to PauseQueueMember ([queuename]|interface[|options])\n");
ast_module_user_remove(lu);
return -1;
}
if (set_member_paused(args.queuename, args.interface, 0)) {
ast_log(LOG_WARNING, "Attempt to unpause interface %s, not found\n", args.interface);
ast_module_user_remove(lu);
pbx_builtin_setvar_helper(chan, "UPQMSTATUS", "NOTFOUND");
return -1;
}
ast_module_user_remove(lu);
pbx_builtin_setvar_helper(chan, "UPQMSTATUS", "UNPAUSED");
return 0;
@ -3300,7 +3282,6 @@ static int upqm_exec(struct ast_channel *chan, void *data)
static int rqm_exec(struct ast_channel *chan, void *data)
{
int res=-1;
struct ast_module_user *lu;
char *parse, *temppos = NULL;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(queuename);
@ -3318,8 +3299,6 @@ static int rqm_exec(struct ast_channel *chan, void *data)
AST_STANDARD_APP_ARGS(args, parse);
lu = ast_module_user_add(chan);
if (ast_strlen_zero(args.interface)) {
args.interface = ast_strdupa(chan->name);
temppos = strrchr(args.interface, '-');
@ -3327,9 +3306,6 @@ static int rqm_exec(struct ast_channel *chan, void *data)
*temppos = '\0';
}
if (args.options) {
}
switch (remove_from_queue(args.queuename, args.interface)) {
case RES_OKAY:
ast_queue_log(args.queuename, chan->uniqueid, args.interface, "REMOVEMEMBER", "%s", "");
@ -3349,15 +3325,12 @@ static int rqm_exec(struct ast_channel *chan, void *data)
break;
}
ast_module_user_remove(lu);
return res;
}
static int aqm_exec(struct ast_channel *chan, void *data)
{
int res=-1;
struct ast_module_user *lu;
char *parse, *temppos = NULL;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(queuename);
@ -3377,8 +3350,6 @@ static int aqm_exec(struct ast_channel *chan, void *data)
AST_STANDARD_APP_ARGS(args, parse);
lu = ast_module_user_add(chan);
if (ast_strlen_zero(args.interface)) {
args.interface = ast_strdupa(chan->name);
temppos = strrchr(args.interface, '-');
@ -3392,9 +3363,6 @@ static int aqm_exec(struct ast_channel *chan, void *data)
penalty = 0;
}
}
if (args.options) {
}
if (ast_strlen_zero(args.membername))
args.membername = args.interface;
@ -3422,14 +3390,11 @@ static int aqm_exec(struct ast_channel *chan, void *data)
break;
}
ast_module_user_remove(lu);
return res;
}
static int ql_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
char *parse;
AST_DECLARE_APP_ARGS(args,
@ -3445,8 +3410,6 @@ static int ql_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
@ -3454,15 +3417,12 @@ static int ql_exec(struct ast_channel *chan, void *data)
if (ast_strlen_zero(args.queuename) || ast_strlen_zero(args.uniqueid)
|| ast_strlen_zero(args.membername) || ast_strlen_zero(args.event)) {
ast_log(LOG_WARNING, "QueueLog requires arguments (queuename|uniqueid|membername|event[|additionalinfo])\n");
ast_module_user_remove(u);
return -1;
}
ast_queue_log(args.queuename, args.uniqueid, args.membername, args.event,
"%s", args.params ? args.params : "");
ast_module_user_remove(u);
return 0;
}
@ -3470,7 +3430,6 @@ static int queue_exec(struct ast_channel *chan, void *data)
{
int res=-1;
int ringing=0;
struct ast_module_user *lu;
const char *user_priority;
const char *max_penalty_str;
int prio;
@ -3501,8 +3460,6 @@ static int queue_exec(struct ast_channel *chan, void *data)
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
lu = ast_module_user_add(chan);
/* Setup our queue entry */
memset(&qe, 0, sizeof(qe));
qe.start = time(NULL);
@ -3745,7 +3702,6 @@ check_turns:
set_queue_result(chan, reason);
res = 0;
}
ast_module_user_remove(lu);
return res;
}
@ -3754,7 +3710,6 @@ static int queue_function_var(struct ast_channel *chan, const char *cmd, char *d
{
int res = -1;
struct call_queue *q;
struct ast_module_user *lu;
char interfacevar[256]="";
float sl = 0;
@ -3765,8 +3720,6 @@ static int queue_function_var(struct ast_channel *chan, const char *cmd, char *d
ast_log(LOG_ERROR, "%s requires an argument: queuename\n", cmd);
return -1;
}
lu = ast_module_user_add(chan);
AST_LIST_LOCK(&queues);
AST_LIST_TRAVERSE(&queues, q, list) {
@ -3797,7 +3750,6 @@ static int queue_function_var(struct ast_channel *chan, const char *cmd, char *d
ast_log(LOG_WARNING, "queue %s was not found\n", data);
snprintf(buf, len, "%d", res);
ast_module_user_remove(lu);
return 0;
}
@ -3806,7 +3758,6 @@ static int queue_function_qac(struct ast_channel *chan, const char *cmd, char *d
{
int count = 0;
struct call_queue *q;
struct ast_module_user *lu;
struct member *m;
buf[0] = '\0';
@ -3815,8 +3766,6 @@ static int queue_function_qac(struct ast_channel *chan, const char *cmd, char *d
ast_log(LOG_ERROR, "%s requires an argument: queuename\n", cmd);
return -1;
}
lu = ast_module_user_add(chan);
AST_LIST_LOCK(&queues);
AST_LIST_TRAVERSE(&queues, q, list) {
@ -3839,7 +3788,6 @@ static int queue_function_qac(struct ast_channel *chan, const char *cmd, char *d
ast_log(LOG_WARNING, "queue %s was not found\n", data);
snprintf(buf, len, "%d", count);
ast_module_user_remove(lu);
return 0;
}
@ -3848,7 +3796,6 @@ static int queue_function_queuewaitingcount(struct ast_channel *chan, const char
{
int count = 0;
struct call_queue *q;
struct ast_module_user *lu;
buf[0] = '\0';
@ -3856,8 +3803,6 @@ static int queue_function_queuewaitingcount(struct ast_channel *chan, const char
ast_log(LOG_ERROR, "%s requires an argument: queuename\n", cmd);
return -1;
}
lu = ast_module_user_add(chan);
AST_LIST_LOCK(&queues);
AST_LIST_TRAVERSE(&queues, q, list) {
@ -3875,13 +3820,12 @@ static int queue_function_queuewaitingcount(struct ast_channel *chan, const char
ast_log(LOG_WARNING, "queue %s was not found\n", data);
snprintf(buf, len, "%d", count);
ast_module_user_remove(lu);
return 0;
}
static int queue_function_queuememberlist(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
{
struct ast_module_user *u;
struct call_queue *q;
struct member *m;
@ -3892,8 +3836,6 @@ static int queue_function_queuememberlist(struct ast_channel *chan, const char *
ast_log(LOG_ERROR, "QUEUE_MEMBER_LIST requires an argument: queuename\n");
return -1;
}
u = ast_module_user_add(chan);
AST_LIST_LOCK(&queues);
AST_LIST_TRAVERSE(&queues, q, list) {
@ -3927,7 +3869,6 @@ static int queue_function_queuememberlist(struct ast_channel *chan, const char *
/* We should already be terminated, but let's make sure. */
buf[len - 1] = '\0';
ast_module_user_remove(u);
return 0;
}

@ -87,7 +87,6 @@ static char *descrip =
static int read_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char tmp[256] = "";
int maxdigits = 255;
int tries = 1, to = 0, x = 0;
@ -109,8 +108,6 @@ static int read_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "Read requires an argument (variable)\n");
return -1;
}
u = ast_module_user_add(chan);
argcopy = ast_strdupa(data);
@ -146,7 +143,6 @@ static int read_exec(struct ast_channel *chan, void *data)
}
if (ast_strlen_zero(arglist.variable)) {
ast_log(LOG_WARNING, "Invalid! Usage: Read(variable[|filename][|maxdigits][|option][|attempts][|timeout])\n\n");
ast_module_user_remove(u);
return -1;
}
ts=NULL;
@ -159,7 +155,6 @@ static int read_exec(struct ast_channel *chan, void *data)
if (ast_test_flag(&flags,OPT_SKIP)) {
/* At the user's option, skip if the line is not up */
pbx_builtin_setvar_helper(chan, arglist.variable, "\0");
ast_module_user_remove(u);
return 0;
} else if (!ast_test_flag(&flags,OPT_NOANSWER)) {
/* Otherwise answer unless we're supposed to read while on-hook */
@ -212,7 +207,7 @@ static int read_exec(struct ast_channel *chan, void *data)
}
}
}
ast_module_user_remove(u);
return res;
}

@ -56,7 +56,6 @@ static char *readfile_descrip =
static int readfile_exec(struct ast_channel *chan, void *data)
{
int res=0;
struct ast_module_user *u;
char *s, *varname=NULL, *file=NULL, *length=NULL, *returnvar=NULL;
int len=0;
@ -65,8 +64,6 @@ static int readfile_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
s = ast_strdupa(data);
varname = strsep(&s, "=");
@ -75,7 +72,6 @@ static int readfile_exec(struct ast_channel *chan, void *data)
if (!varname || !file) {
ast_log(LOG_ERROR, "No file or variable specified!\n");
ast_module_user_remove(u);
return -1;
}
@ -96,7 +92,7 @@ static int readfile_exec(struct ast_channel *chan, void *data)
pbx_builtin_setvar_helper(chan, varname, returnvar);
ast_free(returnvar);
}
ast_module_user_remove(u);
return res;
}

@ -87,7 +87,6 @@ static int record_exec(struct ast_channel *chan, void *data)
char tmp[256];
struct ast_filestream *s = '\0';
struct ast_module_user *u;
struct ast_frame *f = NULL;
struct ast_dsp *sildet = NULL; /* silence detector dsp */
@ -113,8 +112,6 @@ static int record_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
/* Yay for strsep being easy */
vdata = ast_strdupa(data);
@ -137,7 +134,6 @@ static int record_exec(struct ast_channel *chan, void *data)
}
if (!ext) {
ast_log(LOG_WARNING, "No extension specified to filename!\n");
ast_module_user_remove(u);
return -1;
}
if (silstr) {
@ -222,7 +218,6 @@ static int record_exec(struct ast_channel *chan, void *data)
if (chan->_state != AST_STATE_UP) {
if (option_skip) {
/* At the user's option, skip if the line is not up */
ast_module_user_remove(u);
return 0;
} else if (!option_noanswer) {
/* Otherwise answer unless we're supposed to record while on-hook */
@ -253,13 +248,11 @@ static int record_exec(struct ast_channel *chan, void *data)
res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
if (res < 0) {
ast_log(LOG_WARNING, "Unable to set to linear mode, giving up\n");
ast_module_user_remove(u);
return -1;
}
sildet = ast_dsp_new();
if (!sildet) {
ast_log(LOG_WARNING, "Unable to create silence detector :(\n");
ast_module_user_remove(u);
return -1;
}
ast_dsp_set_threshold(sildet, 256);
@ -368,8 +361,6 @@ static int record_exec(struct ast_channel *chan, void *data)
ast_dsp_free(sildet);
}
ast_module_user_remove(u);
return res;
}

@ -6806,7 +6806,6 @@ static void *rpt_master(void *config)
static int rpt_exec(struct ast_channel *chan, void *data)
{
int res = -1, i, rem_totx, n, phone_mode = 0;
struct ast_module_user *u;
char *tmp, keyed = 0;
char *options, *tele, c;
struct rpt *myrpt;
@ -7089,7 +7088,6 @@ static int rpt_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "Cant get io permission on IO port %x hex\n", myrpt->p.iobase);
return -1;
}
u = ast_module_user_add(chan);
rpt_mutex_unlock(&myrpt->lock);
/* find our index, and load the vars initially */
for (i = 0; i < nrpts; i++) {
@ -7429,7 +7427,6 @@ static int rpt_exec(struct ast_channel *chan, void *data)
myrpt->remoteon = 0;
rpt_mutex_unlock(&myrpt->lock);
closerem(myrpt);
ast_module_user_remove(u);
return res;
}

@ -75,7 +75,6 @@ static int sayunixtime_exec(struct ast_channel *chan, void *data)
);
char *parse;
int res = 0;
struct ast_module_user *u;
time_t unixtime;
if (!data)
@ -83,8 +82,6 @@ static int sayunixtime_exec(struct ast_channel *chan, void *data)
parse = ast_strdupa(data);
u = ast_module_user_add(chan);
AST_STANDARD_APP_ARGS(args, parse);
ast_get_time_t(args.timeval, &unixtime, time(NULL), NULL);
@ -96,8 +93,6 @@ static int sayunixtime_exec(struct ast_channel *chan, void *data)
res = ast_say_date_with_format(chan, unixtime, AST_DIGIT_ANY,
chan->language, args.format, args.timezone);
ast_module_user_remove(u);
return res;
}

@ -59,7 +59,6 @@ static char *descrip =
static int senddtmf_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char *digits = NULL, *to = NULL;
int timeout = 250;
@ -68,8 +67,6 @@ static int senddtmf_exec(struct ast_channel *chan, void *data)
return 0;
}
u = ast_module_user_add(chan);
digits = ast_strdupa(data);
if ((to = strchr(digits,'|'))) {
@ -82,8 +79,6 @@ static int senddtmf_exec(struct ast_channel *chan, void *data)
timeout = 250;
res = ast_dtmf_stream(chan,NULL,digits,timeout);
ast_module_user_remove(u);
return res;
}

@ -63,19 +63,15 @@ static const char *descrip =
static int sendtext_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char *status = "UNSUPPORTED";
char *parse = NULL;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(text);
AST_APP_ARG(options);
);
u = ast_module_user_add(chan);
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "SendText requires an argument (text[|options])\n");
ast_module_user_remove(u);
return -1;
} else
parse = ast_strdupa(data);
@ -89,7 +85,6 @@ static int sendtext_exec(struct ast_channel *chan, void *data)
if (!chan->tech->send_text) {
ast_channel_unlock(chan);
/* Does not support transport */
ast_module_user_remove(u);
return 0;
}
status = "FAILURE";
@ -98,7 +93,6 @@ static int sendtext_exec(struct ast_channel *chan, void *data)
if (!res)
status = "SUCCESS";
pbx_builtin_setvar_helper(chan, "SENDTEXTSTATUS", status);
ast_module_user_remove(u);
return 0;
}

@ -66,12 +66,9 @@ static char *descrip2 =
static int setcallerid_pres_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
int pres = -1;
static int deprecated = 0;
u = ast_module_user_add(chan);
if (!deprecated) {
deprecated = 1;
ast_log(LOG_WARNING, "SetCallerPres is deprecated. Please use Set(CALLERPRES()=%s) instead.\n", (char *)data);
@ -81,12 +78,10 @@ static int setcallerid_pres_exec(struct ast_channel *chan, void *data)
if (pres < 0) {
ast_log(LOG_WARNING, "'%s' is not a valid presentation (see 'show application SetCallerPres')\n",
(char *) data);
ast_module_user_remove(u);
return 0;
}
chan->cid.cid_pres = pres;
ast_module_user_remove(u);
return 0;
}

@ -77,7 +77,6 @@ static int app_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_flags flags;
struct ast_module_user *u;
char *parse, *opts[OPTION_ARG_ARRAY_SIZE];
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(dummy);
@ -89,8 +88,6 @@ static int app_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
/* Do our thing here */
/* We need to make a copy of the input string if we are going to modify it! */
@ -113,8 +110,6 @@ static int app_exec(struct ast_channel *chan, void *data)
if (ast_test_flag(&flags, OPTION_C))
ast_log(LOG_NOTICE, "Option C is set with : %s\n", opts[OPTION_ARG_C] ? opts[OPTION_ARG_C] : "<unspecified>");
ast_module_user_remove(u);
return res;
}

@ -1748,7 +1748,6 @@ AST_APP_OPTIONS(sms_options, {
static int sms_exec(struct ast_channel *chan, void *data)
{
int res = -1;
struct ast_module_user *u;
sms_t h = { 0 };
/* argument parsing support */
struct ast_flags sms_flags;
@ -1777,7 +1776,6 @@ static int sms_exec(struct ast_channel *chan, void *data)
S_OR(sms_args.addr, ""),
S_OR(sms_args.body, "") );
u = ast_module_user_add(chan);
h.ipc0 = h.ipc1 = 20; /* phase for cosine */
h.dcs = 0xF1; /* default */
@ -1923,7 +1921,6 @@ static int sms_exec(struct ast_channel *chan, void *data)
sms_log(&h, '?'); /* log incomplete message */
done:
ast_module_user_remove(u);
return (res);
}

@ -55,7 +55,6 @@ static char *app = "SoftHangup";
static int softhangup_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
struct ast_channel *c=NULL;
char *options, *cut, *cdata, *match;
char name[AST_CHANNEL_NAME] = "";
@ -66,8 +65,6 @@ static int softhangup_exec(struct ast_channel *chan, void *data)
return 0;
}
u = ast_module_user_add(chan);
cdata = ast_strdupa(data);
match = strsep(&cdata, "|");
options = strsep(&cdata, "|");
@ -96,8 +93,6 @@ static int softhangup_exec(struct ast_channel *chan, void *data)
}
c = ast_channel_walk_locked(c);
}
ast_module_user_remove(u);
return 0;
}

@ -342,18 +342,14 @@ static struct ast_custom_function speech_function = {
/*! \brief SpeechCreate() Dialplan Application */
static int speech_create(struct ast_channel *chan, void *data)
{
struct ast_module_user *u = NULL;
struct ast_speech *speech = NULL;
struct ast_datastore *datastore = NULL;
u = ast_module_user_add(chan);
/* Request a speech object */
speech = ast_speech_new(data, chan->nativeformats);
if (speech == NULL) {
/* Not available */
pbx_builtin_setvar_helper(chan, "ERROR", "1");
ast_module_user_remove(u);
return 0;
}
@ -361,14 +357,11 @@ static int speech_create(struct ast_channel *chan, void *data)
if (datastore == NULL) {
ast_speech_destroy(speech);
pbx_builtin_setvar_helper(chan, "ERROR", "1");
ast_module_user_remove(u);
return 0;
}
datastore->data = speech;
ast_channel_datastore_add(chan, datastore);
ast_module_user_remove(u);
return 0;
}
@ -376,33 +369,24 @@ static int speech_create(struct ast_channel *chan, void *data)
static int speech_load(struct ast_channel *chan, void *data)
{
int res = 0, argc = 0;
struct ast_module_user *u = NULL;
struct ast_speech *speech = find_speech(chan);
char *argv[2], *args = NULL, *name = NULL, *path = NULL;
args = ast_strdupa(data);
u = ast_module_user_add(chan);
if (speech == NULL) {
ast_module_user_remove(u);
if (speech == NULL)
return -1;
}
/* Parse out arguments */
argc = ast_app_separate_args(args, '|', argv, sizeof(argv) / sizeof(argv[0]));
if (argc != 2) {
ast_module_user_remove(u);
if (argc != 2)
return -1;
}
name = argv[0];
path = argv[1];
/* Load the grammar locally on the object */
res = ast_speech_grammar_load(speech, name, path);
ast_module_user_remove(u);
return res;
}
@ -410,21 +394,14 @@ static int speech_load(struct ast_channel *chan, void *data)
static int speech_unload(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u = NULL;
struct ast_speech *speech = find_speech(chan);
u = ast_module_user_add(chan);
if (speech == NULL) {
ast_module_user_remove(u);
return -1;
}
if (speech == NULL)
return -1;
/* Unload the grammar */
res = ast_speech_grammar_unload(speech, data);
ast_module_user_remove(u);
return res;
}
@ -432,21 +409,14 @@ static int speech_unload(struct ast_channel *chan, void *data)
static int speech_deactivate(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u = NULL;
struct ast_speech *speech = find_speech(chan);
u = ast_module_user_add(chan);
if (speech == NULL) {
ast_module_user_remove(u);
if (speech == NULL)
return -1;
}
/* Deactivate the grammar on the speech object */
res = ast_speech_grammar_deactivate(speech, data);
ast_module_user_remove(u);
return res;
}
@ -454,21 +424,14 @@ static int speech_deactivate(struct ast_channel *chan, void *data)
static int speech_activate(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u = NULL;
struct ast_speech *speech = find_speech(chan);
u = ast_module_user_add(chan);
if (speech == NULL) {
ast_module_user_remove(u);
if (speech == NULL)
return -1;
}
/* Activate the grammar on the speech object */
res = ast_speech_grammar_activate(speech, data);
ast_module_user_remove(u);
return res;
}
@ -476,20 +439,13 @@ static int speech_activate(struct ast_channel *chan, void *data)
static int speech_start(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u = NULL;
struct ast_speech *speech = find_speech(chan);
u = ast_module_user_add(chan);
if (speech == NULL) {
ast_module_user_remove(u);
if (speech == NULL)
return -1;
}
ast_speech_start(speech);
ast_module_user_remove(u);
return res;
}
@ -497,15 +453,10 @@ static int speech_start(struct ast_channel *chan, void *data)
static int speech_processing_sound(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u = NULL;
struct ast_speech *speech = find_speech(chan);
u = ast_module_user_add(chan);
if (speech == NULL) {
ast_module_user_remove(u);
if (speech == NULL)
return -1;
}
if (speech->processing_sound != NULL) {
ast_free(speech->processing_sound);
@ -514,8 +465,6 @@ static int speech_processing_sound(struct ast_channel *chan, void *data)
speech->processing_sound = ast_strdup(data);
ast_module_user_remove(u);
return res;
}
@ -540,7 +489,6 @@ static int speech_background(struct ast_channel *chan, void *data)
{
unsigned int timeout = 0;
int res = 0, done = 0, argc = 0, started = 0, quieted = 0, max_dtmf_len = 0;
struct ast_module_user *u = NULL;
struct ast_speech *speech = find_speech(chan);
struct ast_frame *f = NULL;
int oldreadformat = AST_FORMAT_SLINEAR;
@ -552,27 +500,19 @@ static int speech_background(struct ast_channel *chan, void *data)
args = ast_strdupa(data);
u = ast_module_user_add(chan);
if (speech == NULL) {
ast_module_user_remove(u);
if (speech == NULL)
return -1;
}
/* If channel is not already answered, then answer it */
if (chan->_state != AST_STATE_UP && ast_answer(chan)) {
ast_module_user_remove(u);
if (chan->_state != AST_STATE_UP && ast_answer(chan))
return -1;
}
/* Record old read format */
oldreadformat = chan->readformat;
/* Change read format to be signed linear */
if (ast_set_read_format(chan, speech->format)) {
ast_module_user_remove(u);
if (ast_set_read_format(chan, speech->format))
return -1;
}
/* Parse out options */
argc = ast_app_separate_args(args, '|', argv, sizeof(argv) / sizeof(argv[0]));
@ -769,8 +709,6 @@ static int speech_background(struct ast_channel *chan, void *data)
ast_set_read_format(chan, oldreadformat);
}
ast_module_user_remove(u);
return 0;
}
@ -779,16 +717,11 @@ static int speech_background(struct ast_channel *chan, void *data)
static int speech_destroy(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u = NULL;
struct ast_speech *speech = find_speech(chan);
struct ast_datastore *datastore = NULL;
u = ast_module_user_add(chan);
if (speech == NULL) {
ast_module_user_remove(u);
if (speech == NULL)
return -1;
}
/* Destroy speech structure */
ast_speech_destroy(speech);
@ -798,8 +731,6 @@ static int speech_destroy(struct ast_channel *chan, void *data)
ast_channel_datastore_remove(chan, datastore);
}
ast_module_user_remove(u);
return res;
}

@ -238,7 +238,6 @@ static int gosub_exec(struct ast_channel *chan, void *data)
struct gosub_stack_frame *newframe;
char argname[15], *tmp = ast_strdupa(data), *label, *endparen;
int i;
struct ast_module_user *u;
AST_DECLARE_APP_ARGS(args2,
AST_APP_ARG(argval)[100];
);
@ -248,14 +247,11 @@ static int gosub_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
if (!stack_store) {
ast_debug(1, "Channel %s has no datastore, so we're allocating one.\n", chan->name);
stack_store = ast_channel_datastore_alloc(&stack_info, NULL);
if (!stack_store) {
ast_log(LOG_ERROR, "Unable to allocate new datastore. Gosub will fail.\n");
ast_module_user_remove(u);
return -1;
}
@ -263,7 +259,6 @@ static int gosub_exec(struct ast_channel *chan, void *data)
if (!oldlist) {
ast_log(LOG_ERROR, "Unable to allocate datastore list head. Gosub will fail.\n");
ast_channel_datastore_free(stack_store);
ast_module_user_remove(u);
return -1;
}
@ -294,7 +289,6 @@ static int gosub_exec(struct ast_channel *chan, void *data)
if (ast_parseable_goto(chan, label)) {
ast_log(LOG_ERROR, "Gosub address is invalid: '%s'\n", (char *)data);
ast_free(newframe);
ast_module_user_remove(u);
return -1;
}
@ -311,14 +305,11 @@ static int gosub_exec(struct ast_channel *chan, void *data)
AST_LIST_INSERT_HEAD(oldlist, newframe, entries);
AST_LIST_UNLOCK(oldlist);
ast_module_user_remove(u);
return 0;
}
static int gosubif_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
char *args;
int res=0;
AST_DECLARE_APP_ARGS(cond,
@ -335,13 +326,10 @@ static int gosubif_exec(struct ast_channel *chan, void *data)
return 0;
}
u = ast_module_user_add(chan);
args = ast_strdupa(data);
AST_NONSTANDARD_APP_ARGS(cond, args, '?');
if (cond.argc != 2) {
ast_log(LOG_WARNING, "GosubIf requires an argument: GosubIf(cond?label1(args):label2(args)\n");
ast_module_user_remove(u);
return 0;
}
@ -354,7 +342,6 @@ static int gosubif_exec(struct ast_channel *chan, void *data)
res = gosub_exec(chan, label.iffalse);
}
ast_module_user_remove(u);
return res;
}

@ -71,8 +71,7 @@ static char *descrip2 =
static int system_exec_helper(struct ast_channel *chan, void *data, int failmode)
{
int res=0;
struct ast_module_user *u;
int res = 0;
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "System requires an argument(command)\n");
@ -80,8 +79,6 @@ static int system_exec_helper(struct ast_channel *chan, void *data, int failmode
return failmode;
}
u = ast_module_user_add(chan);
/* Do our thing here */
res = ast_safe_system((char *)data);
if ((res < 0) && (errno != ECHILD)) {
@ -102,8 +99,6 @@ static int system_exec_helper(struct ast_channel *chan, void *data, int failmode
res = 0;
}
ast_module_user_remove(u);
return res;
}

@ -63,7 +63,6 @@ static char *descrip =
static int background_detect_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char *tmp;
char *options;
char *stringp;
@ -82,8 +81,6 @@ static int background_detect_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
tmp = ast_strdupa(data);
stringp=tmp;
@ -205,7 +202,6 @@ static int background_detect_exec(struct ast_channel *chan, void *data)
}
if (dsp)
ast_dsp_free(dsp);
ast_module_user_remove(u);
return res;
}

@ -129,7 +129,6 @@ static int sendnoise(struct ast_channel *chan, int ms)
static int testclient_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
int res = 0;
char *testid=data;
char fn[80];
@ -142,8 +141,6 @@ static int testclient_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
if (chan->_state != AST_STATE_UP)
res = ast_answer(chan);
@ -298,18 +295,15 @@ static int testclient_exec(struct ast_channel *chan, void *data)
ast_log(LOG_NOTICE, "Did not read a test ID on '%s'\n", chan->name);
res = -1;
}
ast_module_user_remove(u);
return res;
}
static int testserver_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
int res = 0;
char testid[80]="";
char fn[80];
FILE *f;
u = ast_module_user_add(chan);
if (chan->_state != AST_STATE_UP)
res = ast_answer(chan);
/* Read version */
@ -454,7 +448,6 @@ static int testserver_exec(struct ast_channel *chan, void *data)
ast_log(LOG_NOTICE, "Did not read a test ID on '%s'\n", chan->name);
res = -1;
}
ast_module_user_remove(u);
return res;
}

@ -66,7 +66,6 @@ static int transfer_exec(struct ast_channel *chan, void *data)
{
int res;
int len;
struct ast_module_user *u;
char *slash;
char *tech = NULL;
char *dest = NULL;
@ -77,11 +76,8 @@ static int transfer_exec(struct ast_channel *chan, void *data)
AST_APP_ARG(options);
);
u = ast_module_user_add(chan);
if (ast_strlen_zero((char *)data)) {
ast_log(LOG_WARNING, "Transfer requires an argument ([Tech/]destination[|options])\n");
ast_module_user_remove(u);
pbx_builtin_setvar_helper(chan, "TRANSFERSTATUS", "FAILURE");
return 0;
} else
@ -100,7 +96,6 @@ static int transfer_exec(struct ast_channel *chan, void *data)
/* Allow execution only if the Tech/destination agrees with the type of the channel */
if (strncasecmp(chan->tech->type, tech, len)) {
pbx_builtin_setvar_helper(chan, "TRANSFERSTATUS", "FAILURE");
ast_module_user_remove(u);
return 0;
}
}
@ -108,7 +103,6 @@ static int transfer_exec(struct ast_channel *chan, void *data)
/* Check if the channel supports transfer before we try it */
if (!chan->tech->transfer) {
pbx_builtin_setvar_helper(chan, "TRANSFERSTATUS", "UNSUPPORTED");
ast_module_user_remove(u);
return 0;
}
@ -124,8 +118,6 @@ static int transfer_exec(struct ast_channel *chan, void *data)
pbx_builtin_setvar_helper(chan, "TRANSFERSTATUS", status);
ast_module_user_remove(u);
return res;
}

@ -66,7 +66,6 @@ static char *descrip =
static int sendurl_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char *tmp;
char *options;
int local_option_wait=0;
@ -80,8 +79,6 @@ static int sendurl_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
tmp = ast_strdupa(data);
stringp=tmp;
@ -93,13 +90,11 @@ static int sendurl_exec(struct ast_channel *chan, void *data)
if (!ast_channel_supports_html(chan)) {
/* Does not support transport */
pbx_builtin_setvar_helper(chan, "SENDURLSTATUS", "UNSUPPORTED");
ast_module_user_remove(u);
return 0;
}
res = ast_channel_sendurl(chan, tmp);
if (res == -1) {
pbx_builtin_setvar_helper(chan, "SENDURLSTATUS", "FAILURE");
ast_module_user_remove(u);
return res;
}
status = "SUCCESS";
@ -139,7 +134,6 @@ static int sendurl_exec(struct ast_channel *chan, void *data)
}
out:
pbx_builtin_setvar_helper(chan, "SENDURLSTATUS", status);
ast_module_user_remove(u);
return res;
}

@ -57,7 +57,6 @@ static char *descrip =
static int userevent_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
char *parse, buf[2048] = "";
int x, buflen = 0;
AST_DECLARE_APP_ARGS(args,
@ -70,8 +69,6 @@ static int userevent_exec(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
@ -85,8 +82,6 @@ static int userevent_exec(struct ast_channel *chan, void *data)
manager_event(EVENT_FLAG_USER, "UserEvent", "UserEvent: %s\r\n%s", args.eventname, buf);
ast_module_user_remove(u);
return 0;
}

@ -56,9 +56,6 @@ static int verbose_exec(struct ast_channel *chan, void *data)
{
char *vtext;
int vsize;
struct ast_module_user *u;
u = ast_module_user_add(chan);
if (data) {
char *tmp;
@ -93,23 +90,17 @@ static int verbose_exec(struct ast_channel *chan, void *data)
}
}
ast_module_user_remove(u);
return 0;
}
static int log_exec(struct ast_channel *chan, void *data)
{
char *level, *ltext;
struct ast_module_user *u;
int lnum = -1;
char extension[AST_MAX_EXTENSION + 5], context[AST_MAX_EXTENSION + 2];
u = ast_module_user_add(chan);
if (ast_strlen_zero(data)) {
ast_module_user_remove(u);
if (ast_strlen_zero(data))
return 0;
}
ltext = ast_strdupa(data);
@ -139,7 +130,7 @@ static int log_exec(struct ast_channel *chan, void *data)
ast_log(lnum, extension, chan->priority, context, "%s\n", ltext);
}
ast_module_user_remove(u);
return 0;
}

@ -6727,7 +6727,6 @@ static int vm_execmain(struct ast_channel *chan, void *data)
int res=-1;
int cmd=0;
int valid = 0;
struct ast_module_user *u;
char prefixstr[80] ="";
char ext_context[256]="";
int box;
@ -6744,7 +6743,6 @@ static int vm_execmain(struct ast_channel *chan, void *data)
#ifdef IMAP_STORAGE
int deleted = 0;
#endif
u = ast_module_user_add(chan);
/* Add the vm_state to the active list and keep it active */
memset(&vms, 0, sizeof(vms));
@ -6770,16 +6768,13 @@ static int vm_execmain(struct ast_channel *chan, void *data)
AST_STANDARD_APP_ARGS(args, parse);
if (args.argc == 2) {
if (ast_app_parse_options(vm_app_options, &flags, opts, args.argv1)) {
ast_module_user_remove(u);
if (ast_app_parse_options(vm_app_options, &flags, opts, args.argv1))
return -1;
}
if (ast_test_flag(&flags, OPT_RECORDGAIN)) {
int gain;
if (!ast_strlen_zero(opts[OPT_ARG_RECORDGAIN])) {
if (sscanf(opts[OPT_ARG_RECORDGAIN], "%d", &gain) != 1) {
ast_log(LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
ast_module_user_remove(u);
return -1;
} else {
record_gain = (signed char) gain;
@ -7269,7 +7264,6 @@ out:
free(vms.deleted);
if (vms.heard)
free(vms.heard);
ast_module_user_remove(u);
return res;
}
@ -7277,7 +7271,6 @@ out:
static int vm_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
char *tmp;
struct leave_vm_options leave_options;
struct ast_flags flags = { 0 };
@ -7286,8 +7279,6 @@ static int vm_exec(struct ast_channel *chan, void *data)
AST_APP_ARG(argv0);
AST_APP_ARG(argv1);
);
u = ast_module_user_add(chan);
memset(&leave_options, 0, sizeof(leave_options));
@ -7298,17 +7289,14 @@ static int vm_exec(struct ast_channel *chan, void *data)
tmp = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, tmp);
if (args.argc == 2) {
if (ast_app_parse_options(vm_app_options, &flags, opts, args.argv1)) {
ast_module_user_remove(u);
if (ast_app_parse_options(vm_app_options, &flags, opts, args.argv1))
return -1;
}
ast_copy_flags(&leave_options, &flags, OPT_SILENT | OPT_BUSY_GREETING | OPT_UNAVAIL_GREETING);
if (ast_test_flag(&flags, OPT_RECORDGAIN)) {
int gain;
if (sscanf(opts[OPT_ARG_RECORDGAIN], "%d", &gain) != 1) {
ast_log(LOG_WARNING, "Invalid value '%s' provided for record gain option\n", opts[OPT_ARG_RECORDGAIN]);
ast_module_user_remove(u);
return -1;
} else {
leave_options.record_gain = (signed char) gain;
@ -7318,14 +7306,10 @@ static int vm_exec(struct ast_channel *chan, void *data)
} else {
char tmp[256];
res = ast_app_getdata(chan, "vm-whichbox", tmp, sizeof(tmp) - 1, 0);
if (res < 0) {
ast_module_user_remove(u);
if (res < 0)
return res;
}
if (ast_strlen_zero(tmp)) {
ast_module_user_remove(u);
if (ast_strlen_zero(tmp))
return 0;
}
args.argv0 = ast_strdupa(tmp);
}
@ -7336,8 +7320,6 @@ static int vm_exec(struct ast_channel *chan, void *data)
pbx_builtin_setvar_helper(chan, "VMSTATUS", "FAILED");
res = 0;
}
ast_module_user_remove(u);
return res;
}
@ -7409,7 +7391,6 @@ static int append_mailbox(char *context, char *mbox, char *data)
static int vm_box_exists(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
struct ast_vm_user svm;
char *context, *box;
AST_DECLARE_APP_ARGS(args,
@ -7423,8 +7404,6 @@ static int vm_box_exists(struct ast_channel *chan, void *data)
return -1;
}
u = ast_module_user_add(chan);
if (!dep_warning) {
dep_warning = 1;
ast_log(LOG_WARNING, "MailboxExists is deprecated. Please use ${MAILBOX_EXISTS(%s)} instead.\n", (char *)data);
@ -7446,7 +7425,7 @@ static int vm_box_exists(struct ast_channel *chan, void *data)
pbx_builtin_setvar_helper(chan, "VMBOXEXISTSSTATUS", "SUCCESS");
} else
pbx_builtin_setvar_helper(chan, "VMBOXEXISTSSTATUS", "FAILED");
ast_module_user_remove(u);
return 0;
}
@ -7476,14 +7455,11 @@ static struct ast_custom_function mailbox_exists_acf = {
static int vmauthenticate(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
char *s = data, *user=NULL, *context=NULL, mailbox[AST_MAX_EXTENSION] = "";
struct ast_vm_user vmus;
char *options = NULL;
int silent = 0, skipuser = 0;
int res = -1;
u = ast_module_user_add(chan);
if (s) {
s = ast_strdupa(s);
@ -7510,7 +7486,6 @@ static int vmauthenticate(struct ast_channel *chan, void *data)
res = 0;
}
ast_module_user_remove(u);
return res;
}

@ -55,7 +55,6 @@ static char *app = "WaitForRing";
static int waitforring_exec(struct ast_channel *chan, void *data)
{
struct ast_module_user *u;
struct ast_frame *f;
int res = 0;
double s;
@ -66,8 +65,6 @@ static int waitforring_exec(struct ast_channel *chan, void *data)
return 0;
}
u = ast_module_user_add(chan);
ms = s*1000.0;
while(ms > 0) {
ms = ast_waitfor(chan, ms);
@ -113,7 +110,6 @@ static int waitforring_exec(struct ast_channel *chan, void *data)
}
}
}
ast_module_user_remove(u);
return res;
}

@ -44,9 +44,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/lock.h"
#include "asterisk/options.h"
#define ALL_DONE(u,ret) {ast_module_user_remove(u); return ret;}
static char *start_app = "While";
static char *start_desc =
"Usage: While(<expr>)\n"
@ -164,7 +161,6 @@ static int find_matching_endwhile(struct ast_channel *chan)
static int _while_exec(struct ast_channel *chan, void *data, int end)
{
int res=0;
struct ast_module_user *u;
const char *while_pri = NULL;
char *my_name = NULL;
const char *condition = NULL, *label = NULL;
@ -179,14 +175,11 @@ static int _while_exec(struct ast_channel *chan, void *data, int end)
return -1;
}
u = ast_module_user_add(chan);
/* dont want run away loops if the chan isn't even up
this is up for debate since it slows things down a tad ......
*/
if (ast_waitfordigit(chan,1) < 0)
ALL_DONE(u,-1);
return -1;
for (x=0;;x++) {
if (get_index(chan, prefix, x)) {
@ -243,7 +236,7 @@ static int _while_exec(struct ast_channel *chan, void *data, int end)
ast_log(LOG_WARNING, "Couldn't find matching EndWhile? (While at %s@%s priority %d)\n", chan->context, chan->exten, chan->priority);
}
}
ALL_DONE(u,res);
return res;
}
if (!end && !while_pri) {
@ -268,11 +261,8 @@ static int _while_exec(struct ast_channel *chan, void *data, int end)
}
ast_parseable_goto(chan, while_pri);
}
ALL_DONE(u, res);
return res;
}
static int while_start_exec(struct ast_channel *chan, void *data) {

@ -59,15 +59,12 @@ static char *descrip =
static int zapateller_exec(struct ast_channel *chan, void *data)
{
int res = 0;
struct ast_module_user *u;
int i, answer = 0, nocallerid = 0;
char *parse = ast_strdupa((char *)data);
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(options)[2];
);
u = ast_module_user_add(chan);
AST_STANDARD_APP_ARGS(args, parse);
for (i = 0; i < args.argc; i++) {
@ -85,10 +82,8 @@ static int zapateller_exec(struct ast_channel *chan, void *data)
res = ast_safe_sleep(chan, 500);
}
if (!ast_strlen_zero(chan->cid.cid_num) && nocallerid) {
ast_module_user_remove(u);
if (!ast_strlen_zero(chan->cid.cid_num) && nocallerid)
return res;
}
if (!res)
res = ast_tonepair(chan, 950, 0, 330, 0);
@ -99,7 +94,6 @@ static int zapateller_exec(struct ast_channel *chan, void *data)
if (!res)
res = ast_tonepair(chan, 0, 0, 1000, 0);
ast_module_user_remove(u);
return res;
}

@ -259,19 +259,15 @@ outrun:
static int conf_exec(struct ast_channel *chan, void *data)
{
int res=-1;
struct ast_module_user *u;
int retrycnt = 0;
int confflags = 0;
int confno = 0;
char confstr[80] = "";
u = ast_module_user_add(chan);
if (!ast_strlen_zero(data)) {
if ((sscanf(data, "Zap/%d", &confno) != 1) &&
(sscanf(data, "%d", &confno) != 1)) {
ast_log(LOG_WARNING, "ZapBarge Argument (if specified) must be a channel number, not '%s'\n", (char *)data);
ast_module_user_remove(u);
return 0;
}
}
@ -294,7 +290,6 @@ static int conf_exec(struct ast_channel *chan, void *data)
}
out:
/* Do the conference */
ast_module_user_remove(u);
return res;
}

@ -201,14 +201,11 @@ static int zapras_exec(struct ast_channel *chan, void *data)
{
int res=-1;
char *args;
struct ast_module_user *u;
ZT_PARAMS ztp;
if (!data)
data = "";
u = ast_module_user_add(chan);
args = ast_strdupa(data);
/* Answer the channel if it's not up */
@ -235,7 +232,6 @@ static int zapras_exec(struct ast_channel *chan, void *data)
run_ras(chan, args);
}
}
ast_module_user_remove(u);
return res;
}

@ -287,7 +287,6 @@ static int conf_run(struct ast_channel *chan, int confno, int confflags)
static int conf_exec(struct ast_channel *chan, void *data)
{
int res=-1;
struct ast_module_user *u;
int confflags = 0;
int confno = 0;
char confstr[80] = "", *tmp = NULL;
@ -295,9 +294,7 @@ static int conf_exec(struct ast_channel *chan, void *data)
struct ast_frame *f;
char *desired_group;
int input=0,search_group=0;
u = ast_module_user_add(chan);
if (chan->_state != AST_STATE_UP)
ast_answer(chan);
@ -357,7 +354,6 @@ static int conf_exec(struct ast_channel *chan, void *data)
ast_mutex_unlock(&tempchan->lock);
lastchan = tempchan;
}
ast_module_user_remove(u);
return res;
}

@ -313,8 +313,28 @@ int ast_add_extension2(struct ast_context *con, int replace, const char *extensi
* \retval 0 success
* \retval -1 failure.
*/
int ast_register_application(const char *app, int (*execute)(struct ast_channel *, void *),
const char *synopsis, const char *description);
#define ast_register_application(app, execute, synopsis, description) ast_register_application2(app, execute, synopsis, description, ast_module_info->self)
/*!
* \brief Register an application.
*
* \param app Short name of the application
* \param execute a function callback to execute the application. It should return
* non-zero if the channel needs to be hung up.
* \param synopsis a short description (one line synopsis) of the application
* \param description long description with all of the details about the use of
* the application
* \param mod module this application belongs to
*
* This registers an application with Asterisk's internal application list.
* \note The individual applications themselves are responsible for registering and unregistering
* and unregistering their own CLI commands.
*
* \retval 0 success
* \retval -1 failure.
*/
int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, void *),
const char *synopsis, const char *description, void *mod);
/*!
* \brief Unregister an application

@ -64,6 +64,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/devicestate.h"
#include "asterisk/stringfields.h"
#include "asterisk/event.h"
#include "asterisk/module.h"
/*!
* \note I M P O R T A N T :
@ -182,7 +183,7 @@ struct ast_app {
const char *synopsis; /*!< Synopsis text for 'show applications' */
const char *description; /*!< Description (help text) for 'show application &lt;name&gt;' */
AST_RWLIST_ENTRY(ast_app) list; /*!< Next app in list */
struct module *module; /*!< Module this app belongs to */
struct ast_module *module; /*!< Module this app belongs to */
char name[0]; /*!< Name of the application */
};
@ -545,7 +546,7 @@ int pbx_exec(struct ast_channel *c, /*!< Channel */
void *data) /*!< Data for execution */
{
int res;
struct ast_module_user *u = NULL;
const char *saved_c_appl;
const char *saved_c_data;
@ -558,14 +559,11 @@ int pbx_exec(struct ast_channel *c, /*!< Channel */
c->appl = app->name;
c->data = data;
/* XXX remember what to to when we have linked apps to modules */
if (app->module) {
/* XXX LOCAL_USER_ADD(app->module) */
}
if (app->module)
u = __ast_module_user_add(app->module, c);
res = app->execute(c, data);
if (app->module) {
/* XXX LOCAL_USER_REMOVE(app->module) */
}
if (app->module && u)
__ast_module_user_remove(app->module, u);
/* restore channel values */
c->appl = saved_c_appl;
c->data = saved_c_data;
@ -2936,7 +2934,7 @@ int ast_context_unlockmacro(const char *context)
}
/*! \brief Dynamically register a new dial plan application */
int ast_register_application(const char *app, int (*execute)(struct ast_channel *, void *), const char *synopsis, const char *description)
int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, void *), const char *synopsis, const char *description, void *mod)
{
struct ast_app *tmp, *cur = NULL;
char tmps[80];
@ -2963,6 +2961,7 @@ int ast_register_application(const char *app, int (*execute)(struct ast_channel
tmp->execute = execute;
tmp->synopsis = synopsis;
tmp->description = description;
tmp->module = mod;
/* Store in alphabetical order */
AST_RWLIST_TRAVERSE_SAFE_BEGIN(&apps, cur, list) {
@ -6066,7 +6065,7 @@ int load_pbx(void)
for (x=0; x<sizeof(builtins) / sizeof(struct pbx_builtin); x++) {
if (option_verbose)
ast_verbose( VERBOSE_PREFIX_1 "[%s]\n", builtins[x].name);
if (ast_register_application(builtins[x].name, builtins[x].execute, builtins[x].synopsis, builtins[x].description)) {
if (ast_register_application2(builtins[x].name, builtins[x].execute, builtins[x].synopsis, builtins[x].description, NULL)) {
ast_log(LOG_ERROR, "Unable to register builtin application '%s'\n", builtins[x].name);
return -1;
}

Loading…
Cancel
Save