diff options
author | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-12-15 19:45:07 +0000 |
---|---|---|
committer | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-12-15 19:45:07 +0000 |
commit | eb67352eca8cf420d7402b49383c85747b6ee905 (patch) | |
tree | 8a6e44c9163ad619bd7f7ce6c43df9da8af3b626 /include/asterisk | |
parent | 70c1df69603ef59791c57d5f9fd86ef6a13c3f45 (diff) |
Add notes to autoservice and pbx doxygen regarding a potential
deadlock scenario so that it is avoided in the future
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@164416 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include/asterisk')
-rw-r--r-- | include/asterisk/channel.h | 5 | ||||
-rw-r--r-- | include/asterisk/pbx.h | 20 |
2 files changed, 25 insertions, 0 deletions
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index 05e44449c..29b31b884 100644 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -1187,6 +1187,11 @@ int ast_autoservice_start(struct ast_channel *chan); /*! * \brief Stop servicing a channel for us... * + * \note if chan is locked prior to calling ast_autoservice_stop, it + * is likely that there will be a deadlock between the thread that calls + * ast_autoservice_stop and the autoservice thread. It is important + * that chan is not locked prior to this call + * * \retval 0 success * \retval -1 error, or the channel has been hungup */ diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h index 1cc066f9e..7ada1532f 100644 --- a/include/asterisk/pbx.h +++ b/include/asterisk/pbx.h @@ -383,6 +383,10 @@ int ast_get_hint(char *hint, int maxlen, char *name, int maxnamelen, * \param priority priority of the action within the extension * \param callerid callerid to search for * + * \note It is possible for autoservice to be started and stopped on c during this + * function call, it is important that c is not locked prior to calling this. Otherwise + * a deadlock may occur + * * \return If an extension within the given context(or callerid) with the given priority * is found a non zero value will be returned. Otherwise, 0 is returned. */ @@ -398,6 +402,10 @@ int ast_exists_extension(struct ast_channel *c, const char *context, const char * \param label label of the action within the extension to match to priority * \param callerid callerid to search for * + * \note It is possible for autoservice to be started and stopped on c during this + * function call, it is important that c is not locked prior to calling this. Otherwise + * a deadlock may occur + * * \return the priority which matches the given label in the extension or -1 if not found. */ int ast_findlabel_extension(struct ast_channel *c, const char *context, @@ -406,6 +414,10 @@ int ast_findlabel_extension(struct ast_channel *c, const char *context, /*! * \brief Find the priority of an extension that has the specified label * + * \note It is possible for autoservice to be started and stopped on c during this + * function call, it is important that c is not locked prior to calling this. Otherwise + * a deadlock may occur + * * \note This function is the same as ast_findlabel_extension, except that it accepts * a pointer to an ast_context structure to specify the context instead of the * name of the context. Otherwise, the functions behave the same. @@ -422,6 +434,10 @@ int ast_findlabel_extension2(struct ast_channel *c, struct ast_context *con, * \param priority priority of extension path * \param callerid callerid of extension being searched for * + * \note It is possible for autoservice to be started and stopped on c during this + * function call, it is important that c is not locked prior to calling this. Otherwise + * a deadlock may occur + * * \return If "exten" *could be* a valid extension in this context with or without * some more digits, return non-zero. Basically, when this returns 0, no matter * what you add to exten, it's not going to be a valid extension anymore @@ -438,6 +454,10 @@ int ast_canmatch_extension(struct ast_channel *c, const char *context, * \param priority priority of extension path * \param callerid callerid of extension being searched for * + * \note It is possible for autoservice to be started and stopped on c during this + * function call, it is important that c is not locked prior to calling this. Otherwise + * a deadlock may occur + * * \return If "exten" *could match* a valid extension in this context with * some more digits, return non-zero. Does NOT return non-zero if this is * an exact-match only. Basically, when this returns 0, no matter |