Summary: | ASTERISK-03981: ResponseTimeout called from macro using Dial Application crashes Asterisk | ||
Reporter: | Chris Hozian (chozian) | Labels: | |
Date Opened: | 2005-04-25 09:53:50 | Date Closed: | 2008-01-15 15:32:17.000-0600 |
Priority: | Minor | Regression? | No |
Status: | Closed/Complete | Components: | Core/General |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ||
Description: | Hello, Asterisk will crash when setting a ResponseTimeout from a macro that is called using the Dial application. This problem may occur when using other macros and/or using the other timeout applications as well. Though I have not tested that. Below is the part of my dialplan which will cause the problem. If someone would like to add this part of my dialplan to the sample extensions.conf for CVS HEAD they may. It works pretty well for call screening. START [fromiaxfwd] exten => ${FWDNUMBER},1,SetGlobalVar(BYPASSVM=0) exten => ${FWDNUMBER},n,Setvar(INVALIDTRIES=0) exten => ${FWDNUMBER},n,ResponseTimeout(30) exten => ${FWDNUMBER},n,SetMusicOnHold(random) exten => ${FWDNUMBER},n,Answer exten => ${FWDNUMBER},n,NoOp(${CALLERID}) exten => ${FWDNUMBER},n(recordagain),Wait(2) exten => ${FWDNUMBER},n,Playback(pls-rcrd-name-at-tone) exten => ${FWDNUMBER},n,Playback(and-prs-pound-whn-finished) exten => ${FWDNUMBER},n,SetVar(SCREEN_FILE=/tmp/${TIMESTAMP}-${CALLERIDNUM}) exten => ${FWDNUMBER},n,Record(${SCREEN_FILE}.gsm|6|25) exten => ${FWDNUMBER},n,Wait(1) exten => ${FWDNUMBER},n,Playback(${SCREEN_FILE}) exten => ${FWDNUMBER},n(returnfrominvalid),Wait(1) exten => ${FWDNUMBER},n,Playback(press-1) exten => ${FWDNUMBER},n,Playback(to-accept-recording) exten => ${FWDNUMBER},n,Playback(or) exten => ${FWDNUMBER},n,Playback(press-2) exten => ${FWDNUMBER},n,Read(ACCEPTRECORD|to-rerecord-yr-message|1) exten => ${FWDNUMBER},n,GotoIf($["${ACCEPTRECORD}" = ""] ?t,1) exten => ${FWDNUMBER},n,GotoIf($[${ACCEPTRECORD} = 1] ?${FWDNUMBER},recordaccepted) exten => ${FWDNUMBER},n,GotoIf($[${ACCEPTRECORD} = 2] ?${FWDNUMBER},recordagain:i,1) exten => ${FWDNUMBER},n(recordaccepted),Wait(1) exten => ${FWDNUMBER},n,Playback(this-call-may-be-monitored-or-recorded) exten => ${FWDNUMBER},n,Wait(1) exten => ${FWDNUMBER},n,Playback(pls-hold-while-try) exten => ${FWDNUMBER},n,Dial(${FWDRINGS},60,gmM(screen^${SCREEN_FILE})) exten => ${FWDNUMBER},n,GotoIf($[${BYPASSVM} = 1] ?${FWDNUMBER},hangup) exten => ${FWDNUMBER},n,Voicemail(u${FWDVMBOX}) exten => ${FWDNUMBER},n(hangup),Hangup exten => i,1,GotoIf($[${INVALIDTRIES} = 4] ?t,1) exten => i,n,Playback(invalid) exten => i,n,Setvar(INVALIDTRIES=$[${INVALIDTRIES} + 1]) exten => i,n,Goto(${FWDNUMBER},returnfrominvalid) exten => t,1,System(/bin/rm ${SCREEN_FILE}.gsm) exten => t,n,Playback(call-terminated) exten => t,n,Playback(goodbye) exten => t,n,Hangup exten => h,1,System(/bin/rm ${SCREEN_FILE}.gsm) [macro-screen] exten => s,1,Wait(1) exten => s,n,ResponseTimeout(15) ; this is the point in which Asterisk will crash. exten => s,n,Playback(call) exten => s,n,Playback(from) exten => s,n,Playback(${ARG1}) exten => s,n(repeatoptions),Wait(1) exten => s,n,Playback(press-1) exten => s,n,Playback(for) exten => s,n,Playback(pbx-transfer) exten => s,n,Playback(or) exten => s,n,Playback(press-9) exten => s,n,Read(ACCEPTCALL|to-hang-up|1) exten => s,n,GotoIf($["${ACCEPTCALL}" = ""] ?t,1) exten => s,n,GotoIf($[${ACCEPTCALL} = 1] ?s,callaccepted) exten => s,n,GotoIf($[${ACCEPTCALL} = 9] ?s,calldenied:s,repeatoptions) exten => s,n(calldenied),SetVar(MACRO_RESULT=CONTINUE) exten => s,n,GotoIf($[${MACRO_RESULT} = CONTINUE] ?s,skipmonitor) exten => s,n(callaccepted),SetGlobalVar(BYPASSVM=1) exten => s,n,Monitor(wav49|${TIMESTAMP}-${CALLERID}|mb) exten => s,n(skipmonitor),System(/bin/rm ${ARG1}.gsm) exten => t,1,Playback(connection-timed-out) exten => t,n,Goto(s,calldenied) END Regards, Chris Hozian (aka dsfr) | ||
Comments: | By: Michael Jerris (mikej) 2005-04-25 13:59:09 Bug guidielines require crash bugs need debug info as well please. By: Kevin P. Fleming (kpfleming) 2005-04-26 21:59:02 Fixed in CVS HEAD (for DigitTimeout as well), thanks for the report! By: Digium Subversion (svnbot) 2008-01-15 15:32:17.000-0600 Repository: asterisk Revision: 5510 U trunk/pbx.c ------------------------------------------------------------------------ r5510 | kpfleming | 2008-01-15 15:32:17 -0600 (Tue, 15 Jan 2008) | 2 lines protect ResponseTimeout and DigitTimeout apps from crashing when called in non-PBX channels (bug ASTERISK-3981) ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=5510 |