summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2005-09-28 23:10:14 +0000
committerMark Spencer <markster@digium.com>2005-09-28 23:10:14 +0000
commitea215f5b7dfd8e160b742aa2f3533dbd8f3fc4c0 (patch)
tree2794fc86c3f44dae1496cd39a926e5c5a3d3f674 /include
parent4287cb7f42d1809000a59789a6a774ca833c00ed (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-xinclude/asterisk/manager.h14
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;
};