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