[asterisk-bugs] [JIRA] (ASTERISK-27153) AMI Newexten event returns wrong event parameters

John Lagonikas (JIRA) noreply at issues.asterisk.org
Wed Mar 17 08:08:15 CDT 2021


    [ https://issues.asterisk.org/jira/browse/ASTERISK-27153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=254190#comment-254190 ] 

John Lagonikas commented on ASTERISK-27153:
-------------------------------------------

Hello everyone,
we finally decided to dedicate some time and effort to fix this issue, so we've come up with some results. 

At this point, we have identified the problem and the code that's causing it. The solution requires some discussion about what can be done and what not.

The issue is caused when two channels are linked in a bridge, and one of the channels is redirected to an extension (via manager redirect action, but I guess the problem will be evident in other cases too). The ast_explicit_goto() function (pbx.c) makes changes to the channel's cep, but application is still unknown at the time, so no snapshot publishing occurs. But, when the bridge breaks and it's reconfigured, the set_bridge_peer_vars() function (bridge.c) leads to changes in the peer channels which trigger snapshot publishing, thus a NewExten event is triggered where the application / appdata fields are not yet updated.

The most appropriate solution seems to be to perform the goto operation after the bridge has been reconfigured and the channel has left the bridge, but I'm not really accustomed to the synchronization principles used throughout the project, so I thought it would be best to present the findings here and discuss it. I'm available to provide any details necessary.

Any ideas?

> AMI Newexten event returns wrong event parameters
> -------------------------------------------------
>
>                 Key: ASTERISK-27153
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-27153
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Core/ManagerInterface
>    Affects Versions: 13.17.0, 14.6.0, 17.6.0
>         Environment: CentOS 6 64Bit
>            Reporter: John Lagonikas
>            Assignee: Unassigned
>            Severity: Major
>         Attachments: Debug.zip, full.txt, NewExtenTest.tar.gz
>
>
> We have detected that, in some rare cases, Newexten events contain wrong Application / AppData fields (i.e. Application / AppData do not correspond to what was actually executed, but rather display the values corresponding to the previous execution for that channel).
> Our test involves originating a call to TestPhone1, transferring that call to another asterisk via IAX2, then transferring the initial channel to TestPhone2 (local) and then transferring the call to an AGI application.
> The problematic Newexten events can be seen at lines 3162 and 5246 of the attached log file. The actual executions (with the correct app/appdata) can be seen at lines 3127 and 5199 respectively. You can see that the Newexten @5246 contains the app/appdata fields that should have been contained by the Newexten @3162 event.
> The same behavior is exhibited in both asterisk versions 13 and 14 (latest builds). The problem does not appear in asterisk versions 11 and back.
> The manager actions we executed (and which do not appear in the attached log file) are the following:
> Step 1:
> {noformat}
> action: Originate
> channel: Local/mboBCmtGYDJ5UWxcKxQSWDzQg2 at mb_all_calls
> context: mb_all_calls
> exten: mbsLGrALV2_n0eoXJHXMsMZKQ1
> priority: 1
> timeout: 20000
> callerid:  <5432>
> account: TestPhone1
> actionid: mboBCmtGYDJ5UWxcKxQSWDzQg2
> async: 1
> variable:
> {noformat}
> Step 2:
> {noformat}
> action: Redirect
> channel: SIP/TestPhone1-00000000
> extrachannel: 
> context: mb_all_calls
> exten: TestPhone2
> priority: 1
> actionid: @000000C3
> {noformat}
> Step 3:
> {noformat}
> action: Redirect
> channel: SIP/TestPhone1-00000000
> extrachannel: 
> context: mb_all_calls
> exten: mbuadBCmtGYDJ5UWxcKxQSWDzQg
> priority: 1
> actionid: @0000011C
> {noformat}
> All the extensions you see in the log file were registered by our software at the beginning of the test. Their full definition is as follows:
> {noformat}
> action: Command
> command: dialplan add extension "_mohBCmtGYDJ5UW[x]cK[x]QSWD[z]Qg.","1","MusicOnHold","${EXTEN:26}" into "mb_all_calls" replace
> actionid: @00000005
> {noformat}
> {noformat}
> action: Command
> command: dialplan add extension "_mboBCmtGYDJ5UW[x]cK[x]QSWD[z]Qg.","1","agi","agi://192.168.1.69:4573/4qqf0RiNsEezVRJatsHMLA" into "mb_all_calls" replace
> actionid: @00000008
> {noformat}
> {noformat}
> action: Command
> command: dialplan add extension "_mbuadBCmtGYDJ5UW[x]cK[x]QSWD[z]Qg","1","agi","agi://192.168.1.69:4573/hGGhXk7zlkKP-fKZXLtZgg" into "mb_all_calls" replace
> actionid: @0000000B
> {noformat}
> {noformat}
> action: Command
> command: dialplan add extension "_mbq1LQsysi-K0GJ0Pg6F2ctiA.","1","agi","agi://192.168.1.69:4573/1LQsysi-K0GJ0Pg6F2ctiA" into "mb_all_calls" replace
> actionid: @0000000E
> {noformat}
> {noformat}
> action: Command
> command: dialplan add extension "_mbsLGrALV2_[n]0eo[X]JH[X]MsM[Z]KQ.","1","Dial","IAX2/192.168.1.13/mbq1LQsysi-K0GJ0Pg6F2ctiA${EXTEN:25}@mb_all_calls" into "mb_all_calls" replace
> actionid: @00000011
> {noformat}
> {noformat}
> action: Command
> command: dialplan add extension "mbtestmoh","1","musiconhold","default" into "mb_all_calls" replace
> actionid: @00000028
> {noformat}
> {noformat}
> action: Command
> command: dialplan add extension "_TestPho[n]eX","1","dial","SIP/${EXTEN}" into "mb_all_calls" replace
> actionid: @0000002D
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list