[asterisk-dev] [Code Review] 2594: IAX2: fix race condition when transferrring.

Alec Davis reviewboard at asterisk.org
Tue Jun 4 18:16:55 CDT 2013


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/2594/
-----------------------------------------------------------

Review request for Asterisk Developers.


Bugs: ASTERISK-21409
    https://issues.asterisk.org/jira/browse/ASTERISK-21409


Repository: Asterisk


Description
-------

1). When touching the bridgecallno, we need to lock it.

2). When evaluating the state of 'callno->transferring' of the current leg, we can't change it to READY unless the bridgecallno is locked.
    Why, if we are interrupted by the other call leg before 'transferring = TRANSFER_RELEASED', the interrupt will find that it is READY and that the bridgecallno is also READY so Releases the legs.
    Then the first call leg in this example, finishes execution, and Releases the legs AGAIN!!!!!!!

A real capture
[May 31 14:44:01] VERBOSE[30820] chan_iax2.c: – Channel 'IAX2/auckland-13262' ready to transfer
[May 31 14:44:01] VERBOSE[30824][C-00000536] chan_iax2.c: – Channel 'IAX2/auckland-20457' ready to transfer
[May 31 14:44:01] VERBOSE[30824][C-00000536] chan_iax2.c: – Releasing IAX2/auckland-20457 and IAX2/auckland-13262
[May 31 14:44:01] VERBOSE[30820] chan_iax2.c: – Releasing IAX2/auckland-13262 and IAX2/auckland-20457


Diffs
-----

  branches/11/channels/chan_iax2.c 387927 

Diff: https://reviewboard.asterisk.org/r/2594/diff/


Testing
-------

Yes. Between sites. many test calls and real calls being transferred back down the same trunk


Thanks,

Alec Davis

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20130604/8a1d1823/attachment.htm>


More information about the asterisk-dev mailing list