[Asterisk-Dev] Problem with hanging up a SIP channel
imran ahmed
codentest at gmail.com
Wed Nov 23 09:45:31 MST 2005
You need to use ast_hangup on channels that are not in the dialplan.
May be you are holding the channel lock before calling ast_hangup in this case.
On 11/23/05, Marc Haisenko <haisenko at comdasys.com> wrote:
> Hi folks,
> I'm currently developing an application for Asterisk and have a hard time with
> what seems to be a simple problem: hanging up a SIP channel I've created.
>
> My application is a "forking dial", which I base on app_conference (I've
> renamed my application app_fdial but of course left all copyright notices in
> place ;-). It should act like this:
> 1. an UA (source) calls Asterisk with my application (app_fdial)
> 2. app_fdial picks up
> 3. app_fdial calls first destination
> 4. source and destination should now be able to talk to each other
> 5. when a certain event happens app_fdial calls a second destination
> 6. for a short period of time (a few seconds) both destinations will be mixed,
> so in effect we have a conference with three participants
> 7. the first destination is hung up
> 8. steps 5 to 7 may repeat, switching the first and second destination of
> course
>
> I should add that only SIP is involved and that I currently use Asterisk
> 1.2.0-rc1 for testing this (1.0.5 behaved the same).
>
>
>
> Now on to my problem:
>
> To call a destination, a spawn a new thread (through ast_pthread_create) which
> uses ast_request_and_dial to call the destination. If it picks up,
> ast_request_and_dial returns a channel which is in AST_STATE_UP (this is
> checked and logged). But if I call ast_softhangup on that channel no BYE SIP
> message is ever sent, though the application notices that the channel went
> down.
>
> I tried to debug this and for some reason sip_hangup is not called on the
> channel I've created. Calling ast_softhangup on the original (source) channel
> works as expected, the BYE is sent, but calling it on channels I've created
> doesn't seem to work.
>
> When I set chan->hangupcause and call ast_hangup the application (and
> Asterisk) crashes (in some mutex function, it seems), but the BYE is sent ;-)
>
> I guess I probably don't understand how to properly create/handle a channel.
> Could someone explain how I should handle such a channel ? Or have I hit a
> bug ? :-)
>
> Thanks a lot,
> Marc
> --
> Marc Haisenko
> Linux Solutions
> Be O.K. service group GmbH
>
> Rüdesheimer Straße 7
> D-80686 München
> Tel: +49 (0)89 - 548 43 33 21
> Fax: +49 (0)89 - 548 43 33 29
> e-mail: haisenko at be-ok.com
> http://www.be-ok.com
>
> --
> Marc Haisenko
> Comdasys AG
>
> Rüdesheimer Straße 7
> D-80686 München
> Tel: +49 (0)89 - 548 43 33 0
> Fax: +49 (0)89 - 548 43 33 29
> e-mail: haisenko at comdasys.com
> http://www.comdasys.com
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-dev
>
More information about the asterisk-dev
mailing list