aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-01-05 19:43:06 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-01-05 19:43:06 +0000
commit293f7314e4e11fa3b9ecd5cd20e592e6ad244379 (patch)
treef4bbf872028efa92cce39bf1bffeed316c0b95c9
parent308a1d29cd817d32f5aad6b257cff9d824c5ee1d (diff)
Merged revisions 237839 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r237839 | dvossel | 2010-01-05 13:29:47 -0600 (Tue, 05 Jan 2010) | 19 lines fixes subscriptions being lost after 'module reload' During a module reload if multiple extension configs are present, such as both extensions.conf and extensions.ael, watchers for one config's hints will be lost during the merging of the other config. This happens because hint watchers are only preserved for the current config being merged. The old context list is destroyed after the merging takes place, meaning any watchers that were not perserved will be removed. Now all hints are preserved during merging regardless of what config file is being merged. These hints are only restored if they are present within the new context list. (closes issue #16093) Reported by: jlaroff ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@237843 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--main/pbx.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/main/pbx.c b/main/pbx.c
index 000831328..2103f39ca 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -5836,9 +5836,9 @@ void ast_merge_contexts_and_delete(struct ast_context **extcontexts, struct ast_
AST_RWLIST_WRLOCK(&hints);
writelocktime = ast_tvnow();
- /* preserve all watchers for hints associated with this registrar */
+ /* preserve all watchers for hints */
AST_RWLIST_TRAVERSE(&hints, hint, list) {
- if (hint->callbacks && !strcmp(registrar, hint->exten->parent->registrar)) {
+ if (hint->callbacks) {
length = strlen(hint->exten->exten) + strlen(hint->exten->parent->name) + 2 + sizeof(*this);
if (!(this = ast_calloc(1, length)))
continue;