aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-09-28 23:10:14 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-09-28 23:10:14 +0000
commit83fdaa72f7001d2f2260b81ea15e0bdcb14b3124 (patch)
tree2794fc86c3f44dae1496cd39a926e5c5a3d3f674 /include
parenta64d4868758aaadf3a8ec3981f819150e9cbd02d (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-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;
};