Summary: | ASTERISK-15806: Park is passed incorrect parameters if a Dial application is executed in a subroutine anywhere on the system. | ||
Reporter: | precisenetworks (precisenetworks) | Labels: | |
Date Opened: | 2010-03-13 20:02:24.000-0600 | Date Closed: | 2010-03-22 11:05:02 |
Priority: | Major | Regression? | No |
Status: | Closed/Complete | Components: | Features/Parking |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ||
Description: | When the dialplan utilizes a GoSub and that subroutine executes a Dial application, the next call parked on the system is then passed the incorrect parameters. However, the Park executes normally when calls are handled without using GoSub. Due to the invalid return extension, the call will drop without a handler ultimately in the default context. I am not sure if this is a parse error, a pointer side effect, or something else. Patrick Bennett Hagen Precise Networks, Inc. ****** ADDITIONAL INFORMATION ****** The output is from Asterisk 1.6.1.6. Same output reproduced in versions 1.6.2 and 1.6.2.5 # 104 called 103 -- Executing [103@internal:1] Gosub("SIP/104-0847e2d0", "DialPhoneTest,s,1(SIP/103)") in new stack -- Executing [s@DialPhoneTest:1] Dial("SIP/104-0847e2d0", "SIP/103,15,ro") in new stack -- Called 103 -- SIP/103-08481c90 is ringing -- SIP/103-08481c90 answered SIP/104-0847e2d0 -- Packet2Packet bridging SIP/104-0847e2d0 and SIP/103-08481c90 # 103 put 104 on hold. Called 101. Hung up (didn't wait for an answer). Resumed call to 103. # It does not matter if the callee answers the call. -- Started music on hold, class 'default', on SIP/104-0847e2d0 -- Executing [101@internal:1] Gosub("SIP/103-084dd3d0", "DialPhoneTest,s,1(SIP/101)") in new stack -- Executing [s@DialPhoneTest:1] Dial("SIP/103-084dd3d0", "SIP/101,15,ro") in new stack -- Called 101 -- SIP/101-08519228 is ringing == Spawn extension (DialPhoneTest, s, 1) exited non-zero on 'SIP/103-084dd3d0' -- Stopped music on hold on SIP/104-0847e2d0 # 103 parked 104. # If the the Dial application is Dial(${ARG1},15,ro) -- then Park returns to 15, ro, 1 # If the the Dial application is Dial(${ARG1},15) -- no timeout, then Park returns to 15, s, 1 # If the the Dial application is Dial(${ARG1}) -- no timeout or options, then Park returns to internal, s, 1 -- Started music on hold, class 'default', on SIP/104-0847e2d0 -- Executing [700@internal:1] Park("SIP/103-08519228", "SIP/101,15,ro") in new stack [Mar 13 18:00:59] WARNING[6118]: features.c:3236 park_call_exec: Invalid timeout 'SIP/101' provided == Parked SIP/103-08519228 on 701 (lot default). Will timeout back to extension [15] ro, 1 in 60 seconds -- Added extension '701' priority 1 to parkedcalls (0x8516448) -- <SIP/103-08519228> Playing 'digits/7.gsm' (language 'en') -- <SIP/103-08519228> Playing 'digits/0.gsm' (language 'en') -- <SIP/103-08519228> Playing 'digits/1.gsm' (language 'en') -- Started music on hold, class 'default', on SIP/103-08519228 == Spawn extension (internal, s, 1) exited non-zero on 'Parked/SIP/103-08519228<ZOMBIE>' -- Stopped music on hold on SIP/103-08519228 -- Stopped music on hold on SIP/104-0847e2d0 -- Started music on hold, class 'default', on SIP/104-0847e2d0 == Spawn extension (DialPhoneTest, s, 1) exited non-zero on 'SIP/103-08519228<ZOMBIE>' # 103 allowed 104 to timeout in parking. -- Stopped music on hold on SIP/104-0847e2d0 -- Added extension 'SIP0103' priority 1 to park-dial (0x84b1e38) == Timeout for SIP/104-0847e2d0 parked on 701 (default). Returning to 15,ro,1 == Starting SIP/104-0847e2d0 at 15,ro,1 failed so falling back to exten 's' == Starting SIP/104-0847e2d0 at 15,s,1 still failed so falling back to context 'default' [Mar 13 18:01:59] WARNING[6119]: pbx.c:3839 __ast_pbx_run: Channel 'SIP/104-0847e2d0' sent into invalid extension 's' in context 'default', but no invalid handler # parkedcalls show Num Channel (Context Extension Pri ) Timeout *** Parking lot: default 701 SIP/104-0847e2d0 (15 ro 1 ) 50s ---CLI> 1 parked call in total. # features.conf [general] parkext => 700 parkpos => 701-720 context => parkedcalls parkingtime => 60 ;comebacktoorigin = no courtesytone = beep parkedplay = caller adsipark = yes findslot => next parkedmusicclass=default transferdigittimeout => 2 xfersound = beep xferfailsound = beeperr pickupexten = *8 featuredigittimeout = 500 atxfernoanswertimeout = 15 [featuremap] blindxfer => #1 disconnect => *0 automon => *1 atxfer => *2 parkcall => ASTERISK-68 [applicationmap] # sip.conf [general] allowguest=no allowoverlap=no allowsubscribe=no callevents=yes compactheaders=no context=incoming callcounter=yes counteronpeer=yes recordhistory=yes srvlookup=yes useragent=asterisk videosupport=yes [office-phones](!) type=friend context=internal host=dynamic disallow=all allow=ulaw callgroup=1 pickupgroup=1 canreinvite=no dtmfmode=inband nat=no allowsubscribe=yes [101](office-phones) [102](office-phones) [103](office-phones) [104](office-phones) # extensions.conf [general] [globals] [default] [DialPhoneTest] exten => s,1,Dial(${ARG1},15,ro) exten => s,n,Hangup() [internal] include => parkedcalls exten => 101,1,GoSub(DialPhoneTest,s,1(SIP/101)) exten => 102,1,GoSub(DialPhoneTest,s,1(SIP/102)) exten => 103,1,GoSub(DialPhoneTest,s,1(SIP/103)) exten => 104,1,GoSub(DialPhoneTest,s,1(SIP/104)) | ||
Comments: | By: Leif Madsen (lmadsen) 2010-03-15 10:47:17 Thanks for the finely detailed report! By: Leif Madsen (lmadsen) 2010-03-18 14:40:24 I have marked an issues as related to this one, which we believe may have fixed this issue. Please test the latest code from the branch in order to get the fix as it has already been committed, then report back. Thanks! By: precisenetworks (precisenetworks) 2010-03-22 01:02:49 This issue appears to be fixed in version 1.6.2.6. Thanks! By: Elazar Broad (ebroad) 2010-03-22 11:05:02 Per the reporter, this was fixed in 1.6.2.6. |