diff options
author | Russell Bryant <russell@russellbryant.com> | 2009-02-17 17:33:38 +0000 |
---|---|---|
committer | Russell Bryant <russell@russellbryant.com> | 2009-02-17 17:33:38 +0000 |
commit | 184872fdfd033d29bcf2d99d688d7b046dfdc778 (patch) | |
tree | 1b3c52f66e2804b7f5e68f62f661354dbbd3fc2a | |
parent | 176f3801058fa5ec6f26fa8fbf84a1f72c11e22b (diff) |
Fix a race condition that caused device states to become incorrect for hints.
The problem here is that the hint processing code was subscribed to the wrong
event type. So, it started processing state for a hint too soon, before the
device state cache had been updated.
Also, fix a similar bug in app_queue, as it was also subscribed to the wrong
event type.
(closes issue #14461)
Reported by: alecdavis
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@176557 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | apps/app_queue.c | 2 | ||||
-rw-r--r-- | main/pbx.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 15472cdc5..58b68cda3 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -7095,7 +7095,7 @@ static int load_module(void) ast_log(LOG_WARNING, "devicestate taskprocessor reference failed - devicestate notifications will not occur\n"); } - if (!(device_state_sub = ast_event_subscribe(AST_EVENT_DEVICE_STATE_CHANGE, device_state_cb, NULL, AST_EVENT_IE_END))) { + if (!(device_state_sub = ast_event_subscribe(AST_EVENT_DEVICE_STATE, device_state_cb, NULL, AST_EVENT_IE_END))) { res = -1; } diff --git a/main/pbx.c b/main/pbx.c index 96e42db45..4c2b27366 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -9102,7 +9102,7 @@ int load_pbx(void) /* Register manager application */ ast_manager_register2("ShowDialPlan", EVENT_FLAG_CONFIG | EVENT_FLAG_REPORTING, manager_show_dialplan, "List dialplan", mandescr_show_dialplan); - if (!(device_state_sub = ast_event_subscribe(AST_EVENT_DEVICE_STATE_CHANGE, device_state_cb, NULL, + if (!(device_state_sub = ast_event_subscribe(AST_EVENT_DEVICE_STATE, device_state_cb, NULL, AST_EVENT_IE_END))) { return -1; } |