Looking at the branch version of 1.8, the following code in 
handle_request_refer appears to blatantly breach the pre-conditions for 
ast_cel_report_event, namely that no locks be held.

               /* XXX - what to we put in CEL 'extra' for attended transfers to 
external systems? NULL for now */
               ast_channel_lock(current.chan1);
               ast_cel_report_event(current.chan1, p->refer->attendedtransfer? 
AST_CEL_ATTENDEDTRANSFER : AST_CEL_BLINDTRANSFER, NULL, 
p->refer->attendedtransfer ? NULL : p->refer->refer_to, current.chan2);
               ast_channel_unlock(current.chan1);



It looks like a lock has existed since the initial inclusion of CEL in trunk, 
as the unlock follows the CEL call there, but the lock moved closer to the call 
in a later version.

--
David Woolley
BTS Holdings Plc
Tel: +44 (0)20 8401 9000 Fax: +44 (0)20 8401 9100
http://www.bts.co.uk<http://www.bts.co.uk/>


BTS Holdings PLC - Registered office: BTS House, Manor Road, Wallington, SM6 
0DD - Registered in England: 1517630
-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to