Thank you Anthony, solved!
I have in my code a call to a "switch_core_session_locate" so, as you say, after adding a "switch_core_session_rwunlock" the problem disappear and there are no more "zombie" sessions in my Freeswitch.

Stephen

On Fri, Nov 11, 2011 at 12:34 AM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
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

_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting@freeswitch.org
http://www.freeswitchsolutions.com

FreeSWITCH-powered IP PBX: The CudaTel Communication Server
http://www.cudatel.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://wiki.freeswitch.org
http://www.cluecon.com

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