]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: Fixed GRA - added group reset by default on startup
authorNenad Corbic <ncorbic@sangoma.com>
Wed, 26 Oct 2011 18:33:28 +0000 (14:33 -0400)
committerNenad Corbic <ncorbic@sangoma.com>
Wed, 26 Oct 2011 18:33:28 +0000 (14:33 -0400)
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c

index 8d01a6d97e7226e9daccc8d5408727b0eb7e73b5..3733a619a7e80cb79b36b9f676fb6b1cc18ea866 100644 (file)
@@ -2271,6 +2271,8 @@ ftdm_status_t handle_ucic(uint32_t suInstId, uint32_t spInstId, uint32_t circuit
                        cinfo->ucic.range = cinfo->tx_grs.range;
                        ftdm_set_flag(sngss7_span, SNGSS7_UCIC_PENDING);
 
+                       SS7_WARN("Set span SNGSS7_UCIC_PENDING for ISUP circuit = %d!\n", circuit);
+
                        ftdm_channel_unlock(fchan);
 
                        goto done;
@@ -2283,6 +2285,7 @@ ftdm_status_t handle_ucic(uint32_t suInstId, uint32_t spInstId, uint32_t circuit
        ftdm_mutex_lock(ftdmchan->mutex);
 
        /* throw the ckt block flag */
+       SS7_DEBUG("Set FLAG_CKT_UCIC_BLOCK for ISUP circuit = %d!\n", circuit);
        sngss7_set_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_BLOCK);
 
        /* set the channel to suspended state */
index ed076925b873d8a956681cd353e6cec67cdd3b2c..2cb59ca36e03a38119ba1ca16e5323df73ab6ee7 100644 (file)
@@ -1024,6 +1024,10 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
                break;
        /**************************************************************************/
        case FTDM_CHANNEL_STATE_RESTART:        /* CICs needs a Reset */
+                 
+               SS7_DEBUG_CHAN(ftdmchan,"RESTART: Current flags: ckt=0x%X, blk=0x%X\n", 
+                                                                       sngss7_info->ckt_flags,
+                                                                       sngss7_info->blk_flags);
 
                if (sngss7_test_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_BLOCK)) {
                        if ((sngss7_test_ckt_flag(sngss7_info, FLAG_RESET_RX)) ||
@@ -1139,7 +1143,7 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
        /**************************************************************************/
        case FTDM_CHANNEL_STATE_SUSPENDED:      /* circuit has been blocked */
 
-                 SS7_DEBUG_CHAN(ftdmchan,"Current flags: ckt=0x%X, blk=0x%X\n", 
+                 SS7_DEBUG_CHAN(ftdmchan,"SUSPEND: Current flags: ckt=0x%X, blk=0x%X\n", 
                                                                        sngss7_info->ckt_flags,
                                                                        sngss7_info->blk_flags);
 
@@ -1256,6 +1260,8 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
                                                                   | FLAG_CKT_MN_BLOCK_RX_DN
                                                                   | FLAG_GRP_MN_BLOCK_RX
                                                                   | FLAG_GRP_MN_BLOCK_RX_DN
+                                                                  | FLAG_CKT_UCIC_BLOCK
+                                                                  | FLAG_CKT_UCIC_BLOCK_DN
                                                                   )
                                                      )
                        ) {
@@ -1410,6 +1416,14 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
                        sngss7_clear_ckt_blk_flag(sngss7_info, FLAG_CKT_UCIC_UNBLK);
 
                        /* throw the channel into reset to sync states */
+                       
+                       clear_rx_grs_flags(sngss7_info);
+                       clear_rx_grs_data(sngss7_info);
+                       clear_tx_grs_flags(sngss7_info);
+                       clear_tx_grs_data(sngss7_info);
+                       clear_rx_rsc_flags(sngss7_info);
+                       clear_tx_rsc_flags(sngss7_info);
+
                        clear_tx_rsc_flags(sngss7_info);
                        sngss7_set_ckt_flag(sngss7_info, FLAG_RESET_TX);
 
index 5aed5f49a4eec5122730e617696c5a1f0b5669bc..4c7bbf084c2c39cd36af098e605a96e0473bce29 100644 (file)
@@ -523,8 +523,6 @@ void ft_to_sngss7_grs (ftdm_channel_t *fchan)
                cinfo->circuit->cic,
                (cinfo->circuit->cic + cinfo->tx_grs.range));
 
-       memset(&cinfo->tx_grs, 0, sizeof(cinfo->tx_grs));
-
        sngss7_set_ckt_flag(cinfo, FLAG_GRP_RESET_SENT);
 
        SS7_FUNC_TRACE_EXIT (__FUNCTION__);
index 3c1124b3d8903784c2f9383a1986709e7bd43da5..7b53a18eba25dfa67cbeaf53e0a2f4a24ff79d53 100644 (file)
@@ -1428,7 +1428,7 @@ ftdm_status_t process_span_ucic(ftdm_span_t *ftdmspan)
                        /* lock the channel */
                        ftdm_channel_lock(ftdmchan);
 
-                       SS7_INFO_CHAN(ftdmchan, "[CIC:%d]Rx UCIC\n", sngss7_info->circuit->cic);
+                       SS7_INFO_CHAN(ftdmchan, "[CIC:%d]Rx Span UCIC\n", sngss7_info->circuit->cic);
 
                        /* clear up any pending state changes */
                        while (ftdm_test_flag (ftdmchan, FTDM_CHANNEL_STATE_CHANGE)) {