diff options
Diffstat (limited to 'net/asterisk14/files/patch-main::manager.c')
-rw-r--r-- | net/asterisk14/files/patch-main::manager.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/net/asterisk14/files/patch-main::manager.c b/net/asterisk14/files/patch-main::manager.c new file mode 100644 index 000000000000..686068b09e09 --- /dev/null +++ b/net/asterisk14/files/patch-main::manager.c @@ -0,0 +1,31 @@ +--- main/manager.c.orig 2008-04-02 15:49:38.000000000 +0300 ++++ main/manager.c 2008-04-02 15:42:18.000000000 +0300 +@@ -176,6 +176,7 @@ + struct eventqent *eventq; + /* Timeout for ast_carefulwrite() */ + int writetimeout; ++ int pending_event; + AST_LIST_ENTRY(mansession) list; + }; + +@@ -2214,6 +2215,11 @@ + fds[0].events = POLLIN; + do { + ast_mutex_lock(&s->__lock); ++ if (s->pending_event) { ++ s->pending_event = 0; ++ ast_mutex_unlock(&s->__lock); ++ return 0; ++ } + s->waiting_thread = pthread_self(); + ast_mutex_unlock(&s->__lock); + +@@ -2475,6 +2481,8 @@ + ast_mutex_lock(&s->__lock); + if (s->waiting_thread != AST_PTHREADT_NULL) + pthread_kill(s->waiting_thread, SIGURG); ++ else ++ s->pending_event = 1; + ast_mutex_unlock(&s->__lock); + } + AST_LIST_UNLOCK(&sessions); |