Merged revisions 243390 via svnmerge from
authorDavid Vossel <dvossel@digium.com>
Tue, 26 Jan 2010 23:56:57 +0000 (23:56 +0000)
committerDavid Vossel <dvossel@digium.com>
Tue, 26 Jan 2010 23:56:57 +0000 (23:56 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r243390 | dvossel | 2010-01-26 17:55:49 -0600 (Tue, 26 Jan 2010) | 9 lines

  fixes bug with channel receiving wrong privileges after call parking

  (closes issue #16429)
  Reported by: Yasuhiro Konishi
  Patches:
        features.c.diff uploaded by Yasuhiro Konishi (license 947)
  Tested by: dvossel
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@243391 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/features.c

index 36c90da..8ff27ba 100644 (file)
@@ -3717,8 +3717,12 @@ static int park_exec_full(struct ast_channel *chan, const char *data, struct ast
                }
                ast_channel_unlock(peer);
 
+               /* When the datastores for both caller and callee are created, both the callee and caller channels
+                * use the features_caller flag variable to represent themselves. With that said, the config.features_callee
+                * flags should be copied from the datastore's caller feature flags regardless if peer was a callee
+                * or caller. */
                if (dialfeatures) {
-                       ast_copy_flags(&(config.features_callee), dialfeatures->is_caller ? &(dialfeatures->features_caller) : &(dialfeatures->features_callee), AST_FLAGS_ALL);
+                       ast_copy_flags(&(config.features_callee), &(dialfeatures->features_caller), AST_FLAGS_ALL);
                }
 
                if ((parkinglot->parkedcalltransfers == AST_FEATURE_FLAG_BYCALLEE) || (parkinglot->parkedcalltransfers == AST_FEATURE_FLAG_BYBOTH)) {