look for something that calls either switch_core_session_locate switch_core_session_get_partner or something that calls switch_core_session_read_lock(session); in all of these cases its necessary to call switch_core_session_rwunlock(session); before letting the session pointer go out of scope. On Thu, Nov 10, 2011 at 3:17 PM, Stephen Wilde <wstephen80@gmail.com> wrote:
I have the necessity to hangup a channel inside a media bug callback in a my custom module.
Currently, what I do is:
static switch_bool_t my_media_callback(switch_media_bug_t *bug, void *user_data, switch_abc_type_t type) { struct my_custom_helper * my_helper = (struct my_custom_helper *) user_data;
switch (type) { case SWITCH_ABC_TYPE_READ_REPLACE: case SWITCH_ABC_TYPE_WRITE_REPLACE: { switch_frame_t *frame;
if (sth->read) { frame = switch_core_media_bug_get_read_replace_frame(bug); } else { frame = switch_core_media_bug_get_write_replace_frame(bug); }
/* .... media analysis .... */
if (to_hangup) { switch_channel_t *channel = switch_core_session_get_channel(my_helper->session);
if (channel) { switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); } } }
return SWITCH_TRUE; }
The dropped channel is a b-leg, previously bridged with an a-leg (incoming call).
Probably in my code there is an error because the code works fine and the channel is correctly dropped but inside Freeswitch remain some "zombies" calls. If I issue a fs_cli "show channels" I see that there are some calls dropped by my module showed in "ACTIVE" state. What is wrong with my channel hangup?
Thanks in advance Stephen
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900