]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 210914 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 6 Aug 2009 21:47:17 +0000 (21:47 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 6 Aug 2009 21:47:17 +0000 (21:47 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r210914 | tilghman | 2009-08-06 16:46:01 -0500 (Thu, 06 Aug 2009) | 14 lines

  Merged revisions 210913 via svnmerge from
  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/branches/1.6.1@210916 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/channel.c

index e054d7b9522bd37802d8941a648700f7db7056a3..c7f412bfc94cd0545ceb6233f6dbe2033fbf3b81 100644 (file)
@@ -1717,10 +1717,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);
        }
        
        ast_channel_free(chan);