[asterisk-bugs] [JIRA] (ASTERISK-26716) Channels with pre-dial handlers cannot be hung up via ARI
Tom Pawelek (JIRA)
noreply at issues.asterisk.org
Sun Jan 15 12:25:11 CST 2017
[ https://issues.asterisk.org/jira/browse/ASTERISK-26716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=234635#comment-234635 ]
Tom Pawelek commented on ASTERISK-26716:
----------------------------------------
*UPDATE:* As I mentioned before, the issues only happens in ~75% of the cases. I've managed to capture a debug where 2 call attempts are placed without any changes in the dialplan: the first one is hung up properly, the second one is not.
+Changes to core_local.c+ (My futile attempts at locating the bug)
static int local_hangup(struct ast_channel *ast)
{
ast_debug(1, "*TMP* Entering local_hangup\n");
struct local_pvt *p = ast_channel_tech_pvt(ast);
int res;
if (!p) {
ast_debug(1, "*TMP* No_p\n");
return -1;
}
/* give the pvt a ref to fulfill calling requirements. */
ao2_ref(p, +1);
res = ast_unreal_hangup(&p->base, ast);
if (!res) {
ast_debug(1, "*TMP* No_res\n");
int unlink;
ao2_lock(p);
unlink = !p->base.owner && !p->base.chan;
ao2_unlock(p);
if (unlink) {
ast_debug(1, "*TMP* Unlink_locals\n");
ao2_unlink(locals, p);
}
}
ao2_ref(p, -1);
return res;
}
+Correct hang up+
_C-00000005 correctly hangs up PJSIP/flowroute-00000006_
[2017-01-15 12:58:32] DEBUG[26445] channel.c: Hanging up channel 'Local/13051002000-18001002000 at cont-fas-00000005;1'
[2017-01-15 12:58:32] DEBUG[26445] core_local.c: *TMP* Entering local_hangup
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 881
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 881
[2017-01-15 12:58:32] DEBUG[26445] core_local.c: *TMP* No_res
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 648
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 648
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] channel.c: Hanging up channel 'PJSIP/flowroute-00000006'
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] chan_pjsip.c: AST hangup cause 0 (no match found in PJSIP)
[2017-01-15 12:58:32] DEBUG[26291] devicestate.c: Changing state for Local/13051002000-18001002000 at cont-fas - state 1 (Not in use)
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 704
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] app_dial.c: Exiting with DIALSTATUS=CANCEL.
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 704
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] pbx.c: Spawn extension (cont-fas,13051002000-18001002000,5) exited non-zero on 'Local/13051002000-18001002000 at cont-fas-00000005;2'
[2017-01-15 12:58:32] VERBOSE[26446][C-00000005] pbx.c: Spawn extension (cont-fas, 13051002000-18001002000, 5) exited non-zero on 'Local/13051002000-18001002000 at cont-fas-00000005;2'
[2017-01-15 12:58:32] DEBUG[26307] res_pjsip_session.c: Method is CANCEL
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] channel.c: Soft-Hanging (0x10) up channel 'Local/13051002000-18001002000 at cont-fas-00000005;2'
[2017-01-15 12:58:32] DEBUG[26307] res_config_pgsql.c: PostgreSQL query attempt 1
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] channel.c: Hanging up channel 'Local/13051002000-18001002000 at cont-fas-00000005;2'
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 674
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] core_local.c: *TMP* Entering local_hangup
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 674
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] core_local.c: *TMP* No_res
[2017-01-15 12:58:32] DEBUG[26446][C-00000005] core_local.c: *TMP* Unlink_locals
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 704
[2017-01-15 12:58:32] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 704
[2017-01-15 12:58:32] DEBUG[26291] core_local.c: Checking if extension 13051002000-18001002000 at cont-fas exists (devicestate)
[2017-01-15 12:58:32] DEBUG[26338] stasis/app.c: channel '1484503110.30': is 0 interested in mg-bridges
[2017-01-15 12:58:32] DEBUG[26338] stasis/app.c: channel '1484503110.30' unsubscribed from mg-bridges
[2017-01-15 12:58:32] DEBUG[26291] devicestate.c: Changing state for Local/13051002000-18001002000 at cont-fas - state 1 (Not in use)
+Zombie hang up+
_No attempts to hang up PJSIP (i.e. Local/;2)_
[2017-01-15 12:58:44] DEBUG[26455] bridge.c: Waiting for 0x7f680403d900(Local/13051002000-18001002000 at cont-fas-00000006;1) bridge thread to die.
[2017-01-15 12:58:44] DEBUG[26455] stasis/app.c: channel '1484503123.40': is 1 interested in mg-bridges
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 749
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 749
[2017-01-15 12:58:44] DEBUG[26455] channel.c: Hanging up channel 'Local/13051002000-18001002000 at cont-fas-00000006;1'
[2017-01-15 12:58:44] DEBUG[26455] core_local.c: *TMP* Entering local_hangup
[2017-01-15 12:58:44] DEBUG[26455] core_local.c: *TMP* No_res
[2017-01-15 12:58:44] DEBUG[26456][C-00000006] res_rtp_asterisk.c: No remote address on RTP instance '0x7f6810028060' so dropping frame
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 881
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 881
[2017-01-15 12:58:44] DEBUG[26291] devicestate.c: Changing state for Local/13051002000-18001002000 at cont-fas - state 1 (Not in use)
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 648
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 648
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 704
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 704
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 676
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 676
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 704
[2017-01-15 12:58:44] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 704
[2017-01-15 12:58:44] DEBUG[26338] stasis/app.c: channel '1484503123.40': is 0 interested in mg-bridges
[2017-01-15 12:58:44] DEBUG[26338] stasis/app.c: channel '1484503123.40' unsubscribed from mg-bridges
[2017-01-15 12:58:44] DEBUG[26447] http.c: HTTP Request URI is /ari/bridges/cid-819901
+Zombie follow up+
[2017-01-15 12:58:46] VERBOSE[26456][C-00000006] app_dial.c: PJSIP/flowroute-00000008 is making progress passing it to Local/13051002000-18001002000 at cont-fas-00000006;2
;; 10 minutes later I finally hang up from the PSTN
[2017-01-15 13:10:26] DEBUG[26320] channel.c: Soft-Hanging (0x20) up channel 'Local/13051002000-18001002000 at cont-fas-00000006;2'
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] bridge_channel.c: Bridge d03ac899-2abb-4bca-8274-f52accf08925: pulling 0x7f6804005b90(Local/13051002000-18001002000 at cont-fas-0
0000006;2)
[2017-01-15 13:10:26] VERBOSE[26456][C-00000006] bridge_channel.c: Channel Local/13051002000-18001002000 at cont-fas-00000006;2 left 'simple_bridge' basic-bridge <d03ac899-2abb
-4bca-8274-f52accf08925>
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] bridge_channel.c: Bridge d03ac899-2abb-4bca-8274-f52accf08925: 0x7f6804005b90(Local/13051002000-18001002000 at cont-fas-00000006;
2) is leaving simple_bridge technology
[2017-01-15 13:10:26] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 692
[2017-01-15 13:10:26] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 692
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] bridge.c: Bridge d03ac899-2abb-4bca-8274-f52accf08925 is dissolved, not performing smart bridge operation.
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] bridge.c: Bridge d03ac899-2abb-4bca-8274-f52accf08925: actually destroying basic bridge, nobody wants it anymore
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] bridge.c: Bridge d03ac899-2abb-4bca-8274-f52accf08925: calling basic bridge destructor
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] bridge.c: Bridge d03ac899-2abb-4bca-8274-f52accf08925: calling simple_bridge technology stop
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] bridge.c: Bridge d03ac899-2abb-4bca-8274-f52accf08925: calling simple_bridge technology destructor
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] app_dial.c: Exiting with DIALSTATUS=ANSWER.
[2017-01-15 13:10:26] DEBUG[26338] res_http_websocket.c: Writing websocket string of length 702
[2017-01-15 13:10:26] DEBUG[26338] res_http_websocket.c: Writing websocket text frame, length 702
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] pbx.c: Spawn extension (cont-fas,13051002000-18001002000,5) exited non-zero on 'Local/13051002000-18001002000 at cont-fas-0000000
6;2'
[2017-01-15 13:10:26] VERBOSE[26456][C-00000006] pbx.c: Spawn extension (cont-fas, 13051002000-18001002000, 5) exited non-zero on 'Local/13051002000-18001002000 at cont-fas-000
00006;2'
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] channel.c: Soft-Hanging (0x10) up channel 'Local/13051002000-18001002000 at cont-fas-00000006;2'
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] channel.c: Hanging up channel 'Local/13051002000-18001002000 at cont-fas-00000006;2'
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] core_local.c: *TMP* Entering local_hangup
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] core_local.c: *TMP* No_res
[2017-01-15 13:10:26] DEBUG[26456][C-00000006] core_local.c: *TMP* Unlink_locals
Zombie bridge (simple / audio): *d03ac899-2abb-4bca-8274-f52accf08925*
Zombie leg: *Local/13051002000-18001002000 at cont-fas-00000006;2*
> Channels with pre-dial handlers cannot be hung up via ARI
> ---------------------------------------------------------
>
> Key: ASTERISK-26716
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-26716
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Applications/app_stasis
> Affects Versions: 13.13.1
> Environment: - platform independent -
> Reporter: Tom Pawelek
> Assignee: Unassigned
>
> A local channel with a pre-dial handler will fail to be properly hung up in 90% of the cases - Asterisk does not send BYE/CANCEL on .hangup()
> ; Original channel
> {noformat}
> ch = client.channels.originate(endpoint="Local/12345 at cont-test", app="ari-test")
> {noformat}
> ; Dialplan
> {noformat}
> [test-handler]
> exten => testcall,1,NoOp(foo)
> exten => testcall,n,Return()
> [cont-test]
> exten => _XXX.,1,Answer()
> exten => _XXX.,n,Dial(PJSIP/bar at pstn,,b(test-handler^testcall^1(foo)))
> {noformat}
> ; Attempt to hang up
> {noformat}
> client.channels.hangup(channelId=ch_id)
> {noformat}
> Only b( ) handlers cause the issue to appear, B( ) works perfectly fine.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list