[Home]

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-0600Date Closed:2010-03-22 11:05:02
Priority:MajorRegression?No
Status:Closed/CompleteComponents: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.