diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-09-28 23:10:14 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-09-28 23:10:14 +0000 |
commit | 83fdaa72f7001d2f2260b81ea15e0bdcb14b3124 (patch) | |
tree | 2794fc86c3f44dae1496cd39a926e5c5a3d3f674 /include | |
parent | a64d4868758aaadf3a8ec3981f819150e9cbd02d (diff) |
Remove possibility of manager deadlocks from manager actions
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6687 f38db490-d61c-443f-a65b-d21fe96a405b
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; }; |