Merged revisions 210913 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 6 Aug 2009 21:46:01 +0000 (21:46 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 6 Aug 2009 21:46:01 +0000 (21:46 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r210913 | tilghman | 2009-08-06 16:45:01 -0500 (Thu, 06 Aug 2009) | 7 lines

  Because channel information can be accessed outside of the channel thread, we must lock the channel prior to modifying it.
  (closes issue #15397)
   Reported by: caspy
   Patches:
         20090714__issue15397.diff.txt uploaded by tilghman (license 14)
   Tested by: caspy
........

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

main/channel.c

index 2dba7eb..a86ec3b 100644 (file)
@@ -2163,10 +2163,12 @@ int ast_hangup(struct ast_channel *chan)
        if (chan->cdr && !ast_test_flag(chan->cdr, AST_CDR_FLAG_BRIDGED) && 
                !ast_test_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED) && 
            (chan->cdr->disposition != AST_CDR_NULL || ast_test_flag(chan->cdr, AST_CDR_FLAG_DIALED))) {
+               ast_channel_lock(chan);
                        
                ast_cdr_end(chan->cdr);
                ast_cdr_detach(chan->cdr);
                chan->cdr = NULL;
+               ast_channel_unlock(chan);
        }
 
        chan = ast_channel_release(chan);