- update documentation for some of the goto functions to note that they

handle locking the channel as needed
 - update ast_explicit_goto() to lock the channel as needed


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89893 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2007-11-28 00:20:13 +00:00
parent 1a6a5e1867
commit d0cd120d47
2 changed files with 24 additions and 1 deletions

View File

@@ -804,10 +804,29 @@ int ast_extension_patmatch(const char *pattern, const char *data);
set to 1, sets to auto fall through. If newval set to 0, sets to no auto set to 1, sets to auto fall through. If newval set to 0, sets to no auto
fall through (reads extension instead). Returns previous value. */ fall through (reads extension instead). Returns previous value. */
int pbx_set_autofallthrough(int newval); int pbx_set_autofallthrough(int newval);
/*!
* \note This function will handle locking the channel as needed.
*/
int ast_goto_if_exists(struct ast_channel *chan, const char *context, const char *exten, int priority); int ast_goto_if_exists(struct ast_channel *chan, const char *context, const char *exten, int priority);
/* I can find neither parsable nor parseable at dictionary.com, but google gives me 169000 hits for parseable and only 49,800 for parsable */
/*!
* \note I can find neither parsable nor parseable at dictionary.com,
* but google gives me 169000 hits for parseable and only 49,800
* for parsable
*
* \note This function will handle locking the channel as needed.
*/
int ast_parseable_goto(struct ast_channel *chan, const char *goto_string); int ast_parseable_goto(struct ast_channel *chan, const char *goto_string);
/*!
* \note This function will handle locking the channel as needed.
*/
int ast_explicit_goto(struct ast_channel *chan, const char *context, const char *exten, int priority); int ast_explicit_goto(struct ast_channel *chan, const char *context, const char *exten, int priority);
/*!
* \note This function will handle locking the channel as needed.
*/
int ast_async_goto_if_exists(struct ast_channel *chan, const char *context, const char *exten, int priority); int ast_async_goto_if_exists(struct ast_channel *chan, const char *context, const char *exten, int priority);
struct ast_custom_function* ast_custom_function_find(const char *name); struct ast_custom_function* ast_custom_function_find(const char *name);

View File

@@ -4581,6 +4581,8 @@ int ast_explicit_goto(struct ast_channel *chan, const char *context, const char
if (!chan) if (!chan)
return -1; return -1;
ast_channel_lock(chan);
if (!ast_strlen_zero(context)) if (!ast_strlen_zero(context))
ast_copy_string(chan->context, context, sizeof(chan->context)); ast_copy_string(chan->context, context, sizeof(chan->context));
if (!ast_strlen_zero(exten)) if (!ast_strlen_zero(exten))
@@ -4592,6 +4594,8 @@ int ast_explicit_goto(struct ast_channel *chan, const char *context, const char
chan->priority--; chan->priority--;
} }
ast_channel_unlock(chan);
return 0; return 0;
} }