Summary: | ASTERISK-03995: ResponseTimeout called from macro using Dial Application crashes Asterisk | ||
Reporter: | Kevin P. Fleming (kpfleming) | Labels: | |
Date Opened: | 2005-04-26 21:59:44 | Date Closed: | 2011-06-07 14:10:40 |
Priority: | Minor | Regression? | No |
Status: | Closed/Complete | Components: | Core/General |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ||
Description: | Hello,<br /> <br /> 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.<br /> <br /> Below is the part of my dialplan which will cause the problem.<br /> <br /> 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.<br /> <br /> START<br /> <br /> [fromiaxfwd]<br /> exten => ${FWDNUMBER},1,SetGlobalVar(BYPASSVM=0)<br /> exten => ${FWDNUMBER},n,Setvar(INVALIDTRIES=0)<br /> exten => ${FWDNUMBER},n,ResponseTimeout(30)<br /> exten => ${FWDNUMBER},n,SetMusicOnHold(random)<br /> exten => ${FWDNUMBER},n,Answer<br /> exten => ${FWDNUMBER},n,NoOp(${CALLERID})<br /> exten => ${FWDNUMBER},n(recordagain),Wait(2)<br /> exten => ${FWDNUMBER},n,Playback(pls-rcrd-name-at-tone)<br /> exten => ${FWDNUMBER},n,Playback(and-prs-pound-whn-finished)<br /> exten => ${FWDNUMBER},n,SetVar(SCREEN_FILE=/tmp/${TIMESTAMP}-${CALLERIDNUM})<br /> exten => ${FWDNUMBER},n,Record(${SCREEN_FILE}.gsm|6|25)<br /> exten => ${FWDNUMBER},n,Wait(1)<br /> exten => ${FWDNUMBER},n,Playback(${SCREEN_FILE})<br /> exten => ${FWDNUMBER},n(returnfrominvalid),Wait(1)<br /> exten => ${FWDNUMBER},n,Playback(press-1)<br /> exten => ${FWDNUMBER},n,Playback(to-accept-recording)<br /> exten => ${FWDNUMBER},n,Playback(or)<br /> exten => ${FWDNUMBER},n,Playback(press-2)<br /> exten => ${FWDNUMBER},n,Read(ACCEPTRECORD|to-rerecord-yr-message|1)<br /> exten => ${FWDNUMBER},n,GotoIf($["${ACCEPTRECORD}" = ""] ?t,1)<br /> exten => ${FWDNUMBER},n,GotoIf($[${ACCEPTRECORD} = 1] ?${FWDNUMBER},recordaccepted)<br /> exten => ${FWDNUMBER},n,GotoIf($[${ACCEPTRECORD} = 2] ?${FWDNUMBER},recordagain:i,1)<br /> exten => ${FWDNUMBER},n(recordaccepted),Wait(1)<br /> exten => ${FWDNUMBER},n,Playback(this-call-may-be-monitored-or-recorded)<br /> exten => ${FWDNUMBER},n,Wait(1)<br /> exten => ${FWDNUMBER},n,Playback(pls-hold-while-try)<br /> exten => ${FWDNUMBER},n,Dial(${FWDRINGS},60,gmM(screen^${SCREEN_FILE}))<br /> exten => ${FWDNUMBER},n,GotoIf($[${BYPASSVM} = 1] ?${FWDNUMBER},hangup)<br /> exten => ${FWDNUMBER},n,Voicemail(u${FWDVMBOX})<br /> exten => ${FWDNUMBER},n(hangup),Hangup<br /> exten => i,1,GotoIf($[${INVALIDTRIES} = 4] ?t,1)<br /> exten => i,n,Playback(invalid)<br /> exten => i,n,Setvar(INVALIDTRIES=$[${INVALIDTRIES} + 1])<br /> exten => i,n,Goto(${FWDNUMBER},returnfrominvalid)<br /> exten => t,1,System(/bin/rm ${SCREEN_FILE}.gsm)<br /> exten => t,n,Playback(call-terminated)<br /> exten => t,n,Playback(goodbye)<br /> exten => t,n,Hangup<br /> exten => h,1,System(/bin/rm ${SCREEN_FILE}.gsm)<br /> <br /> [macro-screen]<br /> exten => s,1,Wait(1)<br /> <br /> exten => s,n,ResponseTimeout(15) ; this is the point in which Asterisk will crash.<br /> <br /> exten => s,n,Playback(call)<br /> exten => s,n,Playback(from)<br /> exten => s,n,Playback(${ARG1})<br /> exten => s,n(repeatoptions),Wait(1)<br /> exten => s,n,Playback(press-1)<br /> exten => s,n,Playback(for)<br /> exten => s,n,Playback(pbx-transfer)<br /> exten => s,n,Playback(or)<br /> exten => s,n,Playback(press-9)<br /> exten => s,n,Read(ACCEPTCALL|to-hang-up|1)<br /> exten => s,n,GotoIf($["${ACCEPTCALL}" = ""] ?t,1)<br /> exten => s,n,GotoIf($[${ACCEPTCALL} = 1] ?s,callaccepted)<br /> exten => s,n,GotoIf($[${ACCEPTCALL} = 9] ?s,calldenied:s,repeatoptions)<br /> exten => s,n(calldenied),SetVar(MACRO_RESULT=CONTINUE)<br /> exten => s,n,GotoIf($[${MACRO_RESULT} = CONTINUE] ?s,skipmonitor)<br /> exten => s,n(callaccepted),SetGlobalVar(BYPASSVM=1)<br /> exten => s,n,Monitor(wav49|${TIMESTAMP}-${CALLERID}|mb)<br /> exten => s,n(skipmonitor),System(/bin/rm ${ARG1}.gsm)<br /> exten => t,1,Playback(connection-timed-out)<br /> exten => t,n,Goto(s,calldenied)<br /> <br /> END<br /> <br /> Regards,<br /> Chris Hozian (aka dsfr)<br /> | ||
Comments: | By: Russell Bryant (russell) 2005-05-15 19:21:05 fixed in 1.0 By: Digium Subversion (svnbot) 2008-01-15 15:34:51.000-0600 Repository: asterisk Revision: 5685 U branches/v1-0/pbx.c ------------------------------------------------------------------------ r5685 | russell | 2008-01-15 15:34:50 -0600 (Tue, 15 Jan 2008) | 2 lines protect ResponseTimeout and DigitTimeout apps from crashing when called in non-PBX channels (bug ASTERISK-3995) ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=5685 |