]> git.ipfire.org Git - thirdparty/asterisk.git/commit
Merged revisions 291580 via svnmerge from
authorTerry Wilson <twilson@digium.com>
Wed, 13 Oct 2010 23:01:56 +0000 (23:01 +0000)
committerTerry Wilson <twilson@digium.com>
Wed, 13 Oct 2010 23:01:56 +0000 (23:01 +0000)
commit9b9204c5aeb6f0882c09633d2fe36ee3149bcadb
tree35a88ddbf6a64f735c6929a46e3fa584073ebb8f
parent912ead1a240acb596cd6171023cb4197b9356476
Merged revisions 291580 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r291580 | twilson | 2010-10-13 15:58:43 -0700 (Wed, 13 Oct 2010) | 28 lines

  Merged revisions 291577 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r291577 | twilson | 2010-10-13 15:45:15 -0700 (Wed, 13 Oct 2010) | 21 lines

    Don't ignore frames that have been queued when softhangup'd

    When an outgoing call is answered and hung up by the far end *very* quickly, we
    may not read any frames and therefor end up with a call that displays the wrong
    disposition/DIALSTATUS. The reason is because ast_queue_hangup() immediately
    sets the _softhangup flag on the channel and then queues the HANGUP control
    frame, but __ast_read refuses to read any frames if ast_check_hangup() indicates
    that a hangup request has been made (which it will if _softhangup is set). So,
    we end up losing control frames.

    This change makes __ast_read continue to read frames even if a soft hangup has
    been requested. It queues a hangup frame to make sure that __ast_read() will
    still eventually return NULL.

    Much thanks to David Vossel for all of the reviews, discussion, and help!

    (closes issue #16946)
    Reported by: davidw

    Review: https://reviewboard.asterisk.org/r/740/
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@291581 65c4cc65-6c06-0410-ace0-fbb531ad65f3
main/channel.c