[asterisk-bugs] [Asterisk 0013640]: Crash in cdr code in specific one-touch parking scenario

Asterisk Bug Tracker noreply at bugs.digium.com
Thu Oct 23 08:53:25 CDT 2008


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=13640 
====================================================================== 
Reported By:                mdu113
Assigned To:                murf
====================================================================== 
Project:                    Asterisk
Issue ID:                   13640
Category:                   CDR/General
Reproducibility:            always
Severity:                   crash
Priority:                   normal
Status:                     assigned
Asterisk Version:           SVN 
SVN Branch (only for SVN checkouts, not tarball releases):  1.4  
SVN Revision (number only!): 147193 
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             2008-10-07 12:34 CDT
Last Modified:              2008-10-23 08:53 CDT
====================================================================== 
Summary:                    Crash in cdr code in specific one-touch parking
scenario
Description: 
Asterisk crashes in cdr code in ast_bridge_call() in the following
one-touch parking scenario: A calls B, B answers, A dials feature code to
park B. Asterisk plays MOH to B and parking announcement to A. Now if B
hangs up during parking announcement is being played to the A then asterisk
crashes immediately after it ends playing parking announcement to A.
I'm attaching backtrace in bt.txt
====================================================================== 

---------------------------------------------------------------------- 
 (0094201) murf (administrator) - 2008-10-23 08:53
 http://bugs.digium.com/view.php?id=13640#c94201 
---------------------------------------------------------------------- 
mdu113-

It is just as well...

It is hoped the new patches I just posted here,
labeled "plan C", will be acceptable to reviewers.

I would especially like to thank Josh
Colp for the time he took to explain
to me not only the rules behind parking
and what goes on, but why. I would like
to think that his time with me was not
in vain!

The previous attempts to fix this problem
were done with big misunderstandings about
what was going on with parking, or just
big gaps in my understanding. As it turns
out, the last attempt was like trying
to grab the animal at the wrong end, and
getting bitten in the process.

The trick is using the results of ast_bridge_call
to determine whether or not the peer pointer
is still valid, and separating park results
from other transfers. To do this, I invented
a new result code, AST_PBX_NO_HANGUP_PEER_PARKED,
and having the parking code return these, as opposed
to the builtins for blind and attended transfers.

All peer referencing code, after the call
to ast_bridge_call, should be done inside
tests for these result codes.

I have documented some of the reasoning
in the features.c/ res_features.c code
itself. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2008-10-23 08:53 murf           Note Added: 0094201                          
======================================================================




More information about the asterisk-bugs mailing list