why "on_my_hangup" is not called ?


static switch_status_t on_my_hangup(switch_core_session_t *session){
        PTRACE(4, "mod_h323\t======>switch_status_t on_my_hangup ");
    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "KABUM => entering on_my_hangup\n");

    switch_channel_t *channel = switch_core_session_get_channel(session);
    h323_private_t *tech_pvt = (h323_private_t *) switch_core_session_get_private(session);
    if (tech_pvt->me) {
                PTRACE(4, "mod_h323\t----->");
        Q931::CauseValues cause = (Q931::CauseValues)switch_channel_get_cause_q850(channel);
        tech_pvt->me->SetQ931Cause(cause);
        tech_pvt->me->ClearCallSynchronous(NULL, H323TranslateToCallEndReason(cause, UINT_MAX));
        tech_pvt->me = NULL;
    }

    return SWITCH_STATUS_SUCCESS;
}


//static switch_status_t on_my_hangup(switch_core_session_t *session);
static switch_status_t on_destroy(switch_core_session_t *session);


static switch_io_routines_t h323fs_io_routines = {
    /*.outgoing_channel */ create_outgoing_channel,
    /*.read_frame */ FSH323Connection::read_audio_frame,
    /*.write_frame */ FSH323Connection::write_audio_frame,
    /*.kill_channel */ FSH323Connection::kill_channel,
    /*.send_dtmf */ FSH323Connection::send_dtmf,
    /*.receive_message */ FSH323Connection::receive_message,
    /*.receive_event */ FSH323Connection::receive_event,
    /*.state_change */ FSH323Connection::state_change,
    /*.read_video_frame */ FSH323Connection::read_video_frame,
    /*.write_video_frame */ FSH323Connection::write_video_frame
};

static switch_state_handler_table_t h323fs_event_handlers = {
    /*.on_init */ FSH323Connection::on_init,
    /*.on_routing */ FSH323Connection::on_routing,
    /*.on_execute */ FSH323Connection::on_execute,
    /*.on_hangup */ on_my_hangup,
    /*.on_exchange_media */ FSH323Connection::on_exchange_media,
    /*.on_soft_execute */ FSH323Connection::on_soft_execute,
    /*.on_consume_media*/ NULL,
    /*.on_hibernate*/ NULL,
    /*.on_reset*/ NULL,
    /*.on_park*/ NULL,
    /*.on_reporting*/ NULL,
    /*.on_destroy*/ on_destroy
};



  }
2009-10-21 18:12:28.659411 [DEBUG] h323.cxx:4138 InternalEstablishedConnectionCheck: connectionState=HasExecutedSignalConnect fastStartState=FastStartAcknowledged
2009-10-21 18:12:28.659411 [DEBUG] mod_h323.cpp:821 ======>PFSH323Connection::OnEstablished [FSH323Connection]
2009-10-21 18:12:28.660476 [NOTICE] mod_h323.cpp:823 Channel [h323/1001] has been answered
2009-10-21 18:12:28.660476 [DEBUG] switch_channel.c:182 h323/1001 receive message [AUDIO_SYNC]
2009-10-21 18:12:28.660476 [DEBUG] mod_h323.cpp:907 ======>FSH323Connection::receive_message MSG=20
2009-10-21 18:12:28.660476 [DEBUG] mod_h323.cpp:964 Received message 20 on connection FSH323Connection
2009-10-21 18:12:28.660476 [DEBUG] mod_h323.cpp:952 Media started on connection FSH323Connection
2009-10-21 18:12:30.795292 [NOTICE] sofia.c:322 Hangup sofia/internal/sip:1001@10.4.62.89 [CS_CONSUME_MEDIA] [NORMAL_CLEARING]
2009-10-21 18:12:30.795292 [DEBUG] switch_channel.c:1683 Send signal sofia/internal/sip:1001@10.4.62.89 [KILL]
2009-10-21 18:12:30.795292 [DEBUG] switch_core_session.c:932 Send signal sofia/internal/sip:1001@10.4.62.89 [BREAK]
2009-10-21 18:12:30.797481 [DEBUG] switch_core_state_machine.c:503 (sofia/internal/sip:1001@10.4.62.89) State CONSUME_MEDIA going to sleep
2009-10-21 18:12:30.797481 [DEBUG] switch_core_state_machine.c:398 (sofia/internal/sip:1001@10.4.62.89) Running State Change CS_HANGUP
2009-10-21 18:12:30.797481 [DEBUG] switch_core_state_machine.c:434 (sofia/internal/sip:1001@10.4.62.89) State HANGUP
2009-10-21 18:12:30.797481 [DEBUG] mod_sofia.c:338 Channel sofia/internal/sip:1001@10.4.62.89 hanging up, cause: NORMAL_CLEARING
2009-10-21 18:12:30.797481 [DEBUG] switch_core_state_machine.c:46 sofia/internal/sip:1001@10.4.62.89 Standard HANGUP, cause: NORMAL_CLEARING
2009-10-21 18:12:30.797481 [DEBUG] switch_core_state_machine.c:434 (sofia/internal/sip:1001@10.4.62.89) State HANGUP going to sleep
2009-10-21 18:12:30.798570 [DEBUG] switch_core_state_machine.c:476 (sofia/internal/sip:1001@10.4.62.89) State Change CS_HANGUP -> CS_REPORTING
2009-10-21 18:12:30.798570 [DEBUG] switch_core_session.c:932 Send signal sofia/internal/sip:1001@10.4.62.89 [BREAK]
2009-10-21 18:12:30.798570 [DEBUG] switch_core_state_machine.c:398 (sofia/internal/sip:1001@10.4.62.89) Running State Change CS_REPORTING
2009-10-21 18:12:30.798570 [DEBUG] switch_core_state_machine.c:612 (sofia/internal/sip:1001@10.4.62.89) State REPORTING
2009-10-21 18:12:30.798570 [DEBUG] switch_core_state_machine.c:53 sofia/internal/sip:1001@10.4.62.89 Standard REPORTING, cause: NORMAL_CLEARING
2009-10-21 18:12:30.798570 [DEBUG] switch_core_state_machine.c:612 (sofia/internal/sip:1001@10.4.62.89) State REPORTING going to sleep
2009-10-21 18:12:30.798570 [DEBUG] switch_core_state_machine.c:411 (sofia/internal/sip:1001@10.4.62.89) State Change CS_REPORTING -> CS_DESTROY
2009-10-21 18:12:30.798570 [DEBUG] switch_core_session.c:1068 Session 2 (sofia/internal/sip:1001@10.4.62.89) Locked, Waiting on external entities
2009-10-21 18:13:04.243274 [DEBUG] h323pdu.cxx:609 Receiving PDU [ip$10.4.62.7:1720/ip$10.4.62.31:48729] :