diff options
author | Mark Spencer <markster@digium.com> | 2005-09-28 23:10:14 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2005-09-28 23:10:14 +0000 |
commit | ea215f5b7dfd8e160b742aa2f3533dbd8f3fc4c0 (patch) | |
tree | 2794fc86c3f44dae1496cd39a926e5c5a3d3f674 /include | |
parent | 4287cb7f42d1809000a59789a6a774ca833c00ed (diff) |
Remove possibility of manager deadlocks from manager actions
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6687 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include')
-rwxr-xr-x | include/asterisk/manager.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/include/asterisk/manager.h b/include/asterisk/manager.h index 9d2d77455..0a8edc042 100755 --- a/include/asterisk/manager.h +++ b/include/asterisk/manager.h @@ -66,16 +66,22 @@ #define MAX_HEADERS 80 #define MAX_LEN 256 +struct eventqent { + struct eventqent *next; + char eventdata[0]; +}; + struct mansession { /*! Execution thread */ pthread_t t; - /*! Thread lock */ - ast_mutex_t lock; + /*! Thread lock -- don't use in action callbacks, it's already taken care of */ + ast_mutex_t __lock; /*! socket address */ struct sockaddr_in sin; /*! TCP socket */ int fd; - int blocking; + /*! Whether or not we're busy doing an action */ + int busy; /*! Logged in username */ char username[80]; /*! Authentication challenge */ @@ -90,6 +96,8 @@ struct mansession { char inbuf[MAX_LEN]; int inlen; int send_events; + /* Queued events that we've not had the ability to send yet */ + struct eventqent *eventq; struct mansession *next; }; |