Massive cleanups to applications for LOCAL_USER handling and some other things.

In general, LOCAL_USER_ADD/REMOVE should be the first/last thing called in an
application.  An exception is if there is some *fast* setup code that might
halt the execution of the application, such as checking to see if an argument
exists.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6832 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2005-10-19 18:19:02 +00:00
parent e5afdbbe16
commit 4aa7912057
74 changed files with 817 additions and 405 deletions

View File

@@ -40,6 +40,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/enum.h"
#include "asterisk/utils.h"
STANDARD_LOCAL_USER;
LOCAL_USER_DECL;
static char *tdesc = "TXTCIDName";
static char *app = "TXTCIDName";
@@ -51,10 +55,6 @@ static char *descrip =
"the variable 'TXTCIDNAME'. TXTCIDName will either be blank\n"
"or return the value found in the TXT record in DNS.\n" ;
STANDARD_LOCAL_USER;
LOCAL_USER_DECL;
static int txtcidname_exec(struct ast_channel *chan, void *data)
{
int res=0;
@@ -64,6 +64,8 @@ static int txtcidname_exec(struct ast_channel *chan, void *data)
struct localuser *u;
static int dep_warning = 0;
LOCAL_USER_ADD(u);
if (!dep_warning) {
ast_log(LOG_WARNING, "The TXTCIDName application has been deprecated in favor of the TXTCIDNAME dialplan function.\n");
dep_warning = 1;
@@ -73,11 +75,11 @@ static int txtcidname_exec(struct ast_channel *chan, void *data)
ast_log(LOG_WARNING, "TXTCIDName requires an argument (extension)\n");
res = 1;
}
LOCAL_USER_ADD(u);
if (!res) {
res = ast_get_txt(chan, data, dest, sizeof(dest), tech, sizeof(tech), txt, sizeof(txt));
}
LOCAL_USER_REMOVE(u);
/* Parse it out */
if (res > 0) {
if (!ast_strlen_zero(txt)) {
@@ -91,6 +93,9 @@ static int txtcidname_exec(struct ast_channel *chan, void *data)
ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
} else if (res > 0)
res = 0;
LOCAL_USER_REMOVE(u);
return res;
}