Index: main/manager.c =================================================================== --- main/manager.c (revision 234372) +++ main/manager.c (working copy) @@ -128,6 +128,7 @@ static int block_sockets; static int num_sessions; +static int num_hooks; static int manager_debug; /*!< enable some debugging code in the manager */ @@ -257,6 +258,7 @@ { AST_RWLIST_WRLOCK(&manager_hooks); AST_RWLIST_INSERT_TAIL(&manager_hooks, hook, list); + ast_atomic_fetchadd_int(&num_hooks, 1); AST_RWLIST_UNLOCK(&manager_hooks); return; } @@ -266,6 +268,7 @@ { AST_RWLIST_WRLOCK(&manager_hooks); AST_RWLIST_REMOVE(&manager_hooks, hook, list); + ast_atomic_fetchadd_int(&num_hooks, -1); AST_RWLIST_UNLOCK(&manager_hooks); return; } @@ -3302,7 +3305,7 @@ struct ast_str *buf; /* Abort if there aren't any manager sessions */ - if (!num_sessions) + if (!num_sessions && !num_hooks) return 0; if (!(buf = ast_str_thread_get(&manager_event_buf, MANAGER_EVENT_BUF_INITSIZE)))