Menu

#1 Call hangup when redirecting with manager "Redirect"

open
nobody
None
5
2007-07-12
2007-07-12
Anonymous
No

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".

Discussion

  • Nobody/Anonymous

    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

     
  • Marcus Hunger

    Marcus Hunger - 2008-04-01

    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;
    + }

     

Log in to post a comment.

MongoDB Logo MongoDB