]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FreeTDM: fixing redirect information outgoing call bug
authorJames Zhang <jzhang@sangoma.com>
Thu, 19 Jan 2012 21:31:52 +0000 (16:31 -0500)
committerJames Zhang <jzhang@sangoma.com>
Thu, 19 Jan 2012 21:31:52 +0000 (16:31 -0500)
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c

index 0497955059677455fa31dfc7ba0ed35fa919f440..0bed14c2e62f2c29eedba706f9e3a31da673b7ff 100644 (file)
@@ -252,8 +252,19 @@ ftdm_status_t handle_con_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circ
                        sprintf(var, "%d", sngss7_info->circuit->cic);
                        sngss7_add_var(sngss7_info, "ss7_cic", var);
 
+
+            if (siConEvnt->orgPteCde.eh.pres) {
+                sprintf(var, "%d",(uint32_t)siConEvnt->orgPteCde.sigPointCode.val);
+                sngss7_add_var(sngss7_info, "ss7_opc", var);
+                               SS7_DEBUG_CHAN(ftdmchan, " OPC = d%\n", (uint32_t)siConEvnt->orgPteCde.sigPointCode.val);
+                       } else {
+                               SS7_DEBUG_CHAN(ftdmchan, "No OPC information in IAM%s\n", " ");
+            }
+
+                       /*  original code, should be removed after review.
                        sprintf(var, "%d", g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId].spc );
                        sngss7_add_var(sngss7_info, "ss7_opc", var);
+                       */
                        
                        if (siConEvnt->callRef.callId.pres) {
         /* %x expect an unsigned int so as callId is a U32, casting to uint32_t
index 32302926757db68450782c4124756d8140c0e3bf..59777b048b9aa0046bbd9f6e1284176e0b78c6e4 100644 (file)
@@ -585,6 +585,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
        val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_indicator");
        if (!ftdm_strlen_zero(val)) {
                redirInfo->redirInd.val = atoi(val);
+               redirInfo->redirInd.pres = 1;
                bProceed = 1;
        } else {                
                ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Indicator\n");
@@ -593,6 +594,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
        val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_orig");
        if (!ftdm_strlen_zero(val)) {
                redirInfo->origRedirReas.val = atoi(val);
+               redirInfo->origRedirReas.pres = 1;
                bProceed = 1;
        } else {                
                ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Original Reasons\n");
@@ -601,6 +603,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
        val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_count");
        if (!ftdm_strlen_zero(val)) {
                redirInfo->redirCnt.val = atoi(val);
+               redirInfo->redirCnt.pres= 1;
                bProceed = 1;
        } else {                
                ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Count\n");
@@ -609,6 +612,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r
        val = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "ss7_rdinfo_reason");
        if (!ftdm_strlen_zero(val)) {
                redirInfo->redirReas.val = atoi(val);
+               redirInfo->redirReas.pres = 1;
                bProceed = 1;
        } else {                
                ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "No user supplied Redirection Information on Redirection Reasons\n");