Versions: 1.4.7.1 and current SVN trunk of AppConference.
When I try to redirect a call currently participating on a conference via
Action: Redirect
Channel: SIP/101-081f2518
Exten: 1
Context: helper
Priority: 1
the call gets hung up. Debug and verbose output:
[Jul 11 21:31:45] DEBUG[21277]: manager.c:2031 process_message: Manager received command 'Redirect'
[Jul 11 21:31:45] DEBUG[21277]: channel.c:1544 ast_softhangup_nolock: Soft-Hanging up channel 'SIP/101-081f2518'
[Jul 11 21:31:45] DEBUG[21309]: member.c:743 member_exec: end member event loop, time_entered => 1184182266
[Jul 11 21:31:45] DEBUG[21309]: pbx.c:2428 __ast_pbx_run: Extension 1vchat-1-help, priority 0 returned normally even though call was hung up
With a very early CVS version (sorry, I don't know the exact version, but it was checked out from iaxclient.cvs.sourceforge.net:2401/cvsroot/iaxclient some time ago) that worked without any problems. I was able to reproduce this using any 1.4 Asterisk version.
If there are any additional questions, you can reach me via freenode: "Sebb".
Logged In: NO
Hello,
this works after changing:
--- member.c (revision 885)
+++ member.c (working copy)
@@ -759,7 +759,7 @@
// int expected_frames = ( int )( floor( (double)( usecdiff( &end, &start ) / AST_CONF_FRAME_INTERVAL ) ) ) ;
// ast_log( AST_CONF_DEBUG, "expected_frames => %d\n", expected_frames ) ;
- return 0 ;
+ return -1 ;
}
But I'm not sure if this is the correct solution, there probably should be handled the case when the main loop is left with a serious error.
Sebb
Logged In: YES
user_id=1704473
Originator: NO
i'd like to suggest something like this:
--- appconference-2.0.1/member.c 2008-02-26 17:05:57.000000000 +0100
+++ appconference-2.0.1-new/member.c 2008-03-25 19:32:45.000000000 +0100
@@ -778,7 +787,11 @@
// int expected_frames = ( int )( floor( (double)( msecdiff( &end, &start ) / AST_CONF_FRAME_INTERVAL ) ) ) ;
// ast_log( AST_CONF_DEBUG, "expected_frames => %d\n", expected_frames ) ;
- return 0 ;
+ if (member && member->chan && member->chan->_softhangup == AST_SOFTHANGUP_ASYNCGOTO) {
+ return -1;
+ } else {
+ return 0;
+ }