]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: ss7 - added functions to clear flags for reset
authorKonrad Hammel <konrad@sangoma.com>
Mon, 27 Sep 2010 17:37:21 +0000 (13:37 -0400)
committerKonrad Hammel <konrad@sangoma.com>
Mon, 27 Sep 2010 17:37:21 +0000 (13:37 -0400)
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c

index ce9423cd00bf3f63752f119a60e79fdddc5b069c..4125c84101b65d36e24a82ebf4516328b79e5c07 100644 (file)
@@ -1136,8 +1136,14 @@ void ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
                if (sngss7_test_flag (sngss7_info, FLAG_CKT_UCIC_UNBLK)) {
                        SS7_DEBUG_CHAN(ftdmchan, "Processing CKT_UCIC_UNBLK flag %s\n", "");;
 
-                       /* throw the channel into reset from our side since it is already in reset from the remote side */
-                       sngss7_set_flag (sngss7_info, FLAG_RESET_TX);
+                       /* remove the UCIC block flag */
+                       sngss7_clear_flag(sngss7_info, FLAG_CKT_UCIC_BLOCK);
+
+                       /* remove the UCIC unblock flag */
+                       sngss7_clear_flag(sngss7_info, FLAG_CKT_UCIC_UNBLK);
+
+                       /* throw the channel into reset to sync states */
+                       sngss7_set_flag(sngss7_info, FLAG_RESET_TX);
 
                        /* bring the channel into restart again */
                        goto suspend_goto_restart;
index 8e7c6496aaef6d1594c1c88ab1ee7047d164dc7e..dfa174e85a3e70d3aec829af3aef59eabcbbd18b 100644 (file)
@@ -61,6 +61,11 @@ ftdm_status_t check_if_rx_grs_started(ftdm_span_t *ftdmspan);
 ftdm_status_t check_if_rx_grs_processed(ftdm_span_t *ftdmspan);
 ftdm_status_t check_if_rx_gra_started(ftdm_span_t *ftdmspan);
 ftdm_status_t check_for_res_sus_flag(ftdm_span_t *ftdmspan);
+
+ftdm_status_t clear_rx_grs_flags(sngss7_chan_data_t *sngss7_info);
+ftdm_status_t clear_tx_grs_flags(sngss7_chan_data_t *sngss7_info);
+ftdm_status_t clear_rx_rsc_flags(sngss7_chan_data_t *sngss7_info);
+ftdm_status_t clear_tx_rsc_flags(sngss7_chan_data_t *sngss7_info);
 /******************************************************************************/
 
 /* FUNCTIONS ******************************************************************/
@@ -752,7 +757,49 @@ ftdm_status_t check_for_res_sus_flag(ftdm_span_t *ftdmspan)
 }
 
 /******************************************************************************/
+ftdm_status_t clear_rx_grs_flags(sngss7_chan_data_t *sngss7_info)
+{
+       /* clear all the flags related to an incoming GRS */
+       sngss7_clear_flag(sngss7_info, FLAG_GRP_RESET_RX);
+       sngss7_clear_flag(sngss7_info, FLAG_GRP_RESET_RX_DN);
+       sngss7_clear_flag(sngss7_info, FLAG_GRP_RESET_RX_CMPLT);
+
+       return FTDM_SUCCESS;
+}
+
+/******************************************************************************/
+ftdm_status_t clear_tx_grs_flags(sngss7_chan_data_t *sngss7_info)
+{
+       /* clear all the flags related to an outgoing GRS */
+       sngss7_clear_flag(sngss7_info, FLAG_GRP_RESET_BASE);
+       sngss7_clear_flag(sngss7_info, FLAG_GRP_RESET_TX);
+       sngss7_clear_flag(sngss7_info, FLAG_GRP_RESET_SENT);
+       sngss7_clear_flag(sngss7_info, FLAG_GRP_RESET_TX_RSP);
+
+       return FTDM_SUCCESS;
+}
+
+/******************************************************************************/
+ftdm_status_t clear_rx_rsc_flags(sngss7_chan_data_t *sngss7_info)
+{
+       /* clear all the flags related to an incoming RSC */
+       sngss7_clear_flag(sngss7_info, FLAG_RESET_RX);
+
+       return FTDM_SUCCESS;
+}
+
+/******************************************************************************/
+ftdm_status_t clear_tx_rsc_flags(sngss7_chan_data_t *sngss7_info)
+{
+       /* clear all the flags related to an outgoing RSC */
+       sngss7_clear_flag(sngss7_info, FLAG_RESET_TX);
+       sngss7_clear_flag(sngss7_info, FLAG_RESET_SENT);
+       sngss7_clear_flag(sngss7_info, FLAG_RESET_TX_RSP);
+
+       return FTDM_SUCCESS;
+}
 
+/******************************************************************************/
 
 /******************************************************************************/
 /* For Emacs: