]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 237839 via svnmerge from
authorDavid Vossel <dvossel@digium.com>
Tue, 5 Jan 2010 19:43:06 +0000 (19:43 +0000)
committerDavid Vossel <dvossel@digium.com>
Tue, 5 Jan 2010 19:43:06 +0000 (19:43 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@237843 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/pbx.c

index 0008313283f89bc8b74d0ecdbb2c87cd27af577a..2103f39ca7af3d2303ed08b8b1591d9586a6cd61 100644 (file)
@@ -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;