[asterisk-bugs] [Asterisk 0016548]: [patch][regression] Macro executes "h" extension instead of exiting

Asterisk Bug Tracker noreply at bugs.digium.com
Wed Jan 27 15:38:12 CST 2010


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=16548 
====================================================================== 
Reported By:                hajekd
Assigned To:                tilghman
====================================================================== 
Project:                    Asterisk
Issue ID:                   16548
Category:                   Applications/app_dial
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     feedback
Target Version:             1.6.0.22
Asterisk Version:           1.6.0.20 
JIRA:                       SWP-642 
Regression:                 Yes 
Reviewboard Link:            
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2010-01-05 15:51 CST
Last Modified:              2010-01-27 15:38 CST
====================================================================== 
Summary:                    [patch][regression] Macro executes "h" extension
instead of exiting
Description: 
Latest version 1.6.0.20 does not correctly hangup calls. We have some
dialplan under extension h which ends with cmd Hangup. Asterisk continue in
dialplan even after calling cmd Hangup. This is not the case with 1.6.0.19
and earlier. This is causing some issues with CDR, etc.

In this example, macro hangupcall is called twice!

- Executing [h at macro-dial:1] Macro("SIP/501-00000003", "hangupcall") in
new stack
    -- Executing [s at macro-hangupcall:1] ResetCDR("SIP/501-00000003", "w")
in new stack
    -- Executing [s at macro-hangupcall:2] NoCDR("SIP/501-00000003", "") in
new stack
    -- Executing [s at macro-hangupcall:3] GotoIf("SIP/501-00000003",
"1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,6)
    -- Executing [s at macro-hangupcall:6] GotoIf("SIP/501-00000003",
"1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s at macro-hangupcall:9] GotoIf("SIP/501-00000003",
"1?theend") in new stack
    -- Goto (macro-hangupcall,s,11)
    -- Executing [s at macro-hangupcall:11] Hangup("SIP/501-00000003", "") in
new stack
  == Spawn extension (macro-hangupcall, s, 11) exited non-zero on
'SIP/501-00000003' in macro 'hangupcall'
  == Spawn extension (macro-dial, h, 1) exited non-zero on
'SIP/501-00000003'
  == Spawn extension (macro-dial, s, 8) exited non-zero on
'SIP/501-00000003' in macro 'dial'
  == Spawn extension (macro-exten-vm, s, 9) exited non-zero on
'SIP/501-00000003' in macro 'exten-vm'
  == Spawn extension (from-internal, 502, 1) exited non-zero on
'SIP/501-00000003'
    -- Executing [h at from-internal:1] Macro("SIP/501-00000003",
"hangupcall") in new stack
    -- Executing [s at macro-hangupcall:1] ResetCDR("SIP/501-00000003", "w")
in new stack
    -- Executing [s at macro-hangupcall:2] NoCDR("SIP/501-00000003", "") in
new stack
    -- Executing [s at macro-hangupcall:3] GotoIf("SIP/501-00000003",
"1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,6)
    -- Executing [s at macro-hangupcall:6] GotoIf("SIP/501-00000003",
"1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s at macro-hangupcall:9] GotoIf("SIP/501-00000003",
"1?theend") in new stack
    -- Goto (macro-hangupcall,s,11)
    -- Executing [s at macro-hangupcall:11] Hangup("SIP/501-00000003", "") in
new stack
  == Spawn extension (macro-hangupcall, s, 11) exited non-zero on
'SIP/501-00000003' in macro 'hangupcall'
  == Spawn extension (from-internal, h, 1) exited non-zero on
'SIP/501-00000003'
====================================================================== 

---------------------------------------------------------------------- 
 (0117273) hajekd (reporter) - 2010-01-27 15:38
 https://issues.asterisk.org/view.php?id=16548#c117273 
---------------------------------------------------------------------- 
Hmm, studied the changelog carefully and see main/features.c has been
changed with this comment:

2009-11-24 18:53 +0000 [r231096]  Jeff Peeler <jpeeler at digium.com>

        * /, main/features.c: Merged revisions 231095 via svnmerge from
          https://origsvn.digium.com/svn/asterisk/trunk ........ r231095
|
          jpeeler | 2009-11-24 12:50:36 -0600 (Tue, 24 Nov 2009) | 11
lines
          Fix erroneous hangup extension execution ast_spawn_extension
          behaves differently from 1.4 in that hangups and extensions
that
          do not exist do not return an error, whereas in 1.6 it does.
This
          is now taken into account so that the
AST_FLAG_BRIDGE_HANGUP_RUN
          flag gets set properly. (closes issue
https://issues.asterisk.org/view.php?id=16106) Reported by:
          ajohnson Tested by: ajohnson ........

Tried to copy main/features.c from 1.6.0.19 to 1.6.0.21 and the correct
bahviour is back again! Now should be easy to find out what the problem is. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-01-27 15:38 hajekd         Note Added: 0117273                          
======================================================================




More information about the asterisk-bugs mailing list