]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Merge remote branch 'fsorig/master'
authorMoises Silva <moy@sangoma.com>
Mon, 6 Dec 2010 20:10:53 +0000 (15:10 -0500)
committerMoises Silva <moy@sangoma.com>
Mon, 6 Dec 2010 20:10:53 +0000 (15:10 -0500)
1  2 
libs/freetdm/freetdm.2008.sln
libs/freetdm/src/ftdm_io.c
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c

Simple merge
Simple merge
index b9b4eee28b7393da9f487e878652026f056b0d33,ab29b3e74bfe8112d20631fe1637c2d5392ef7cf..16b22a5da172dd22ab214fffa4afad120fb002aa
@@@ -348,35 -352,16 +349,17 @@@ void sngisdn_process_cnst_ind (sngisdn_
                case MI_PROGRESS:
                case MI_ALERTING:
                        get_prog_ind_ie(ftdmchan, &cnStEvnt->progInd);
 +                      get_facility_ie(ftdmchan, &cnStEvnt->facilityStr);
  
-                       if (signal_data->ignore_cause_value != SNGISDN_OPT_TRUE &&
-                               cnStEvnt->causeDgn[0].eh.pres && cnStEvnt->causeDgn[0].causeVal.pres) {
-                               switch(cnStEvnt->causeDgn[0].causeVal.val) {
-                                       case 17:        /* User Busy */
-                                       case 18:        /* No User responding */
-                                       case 19:        /* User alerting, no answer */
-                                       case 21:        /* Call rejected, the called party does not with to accept this call */
-                                       case 27:        /* Destination out of order */
-                                       case 31:        /* Normal, unspecified */
-                                       case 34:        /* Circuit/Channel congestion */
-                                       case 41:        /* Temporary failure */
-                                       case 42:        /* Switching equipment is experiencing a period of high traffic */
-                                       case 47:        /* Resource unavailable */
-                                       case 58:        /* Bearer Capability not available */
-                                       case 63:        /* Service or option not available */
-                                       case 65:        /* Bearer Cap not implemented, not supported */
-                                       case 79:        /* Service or option not implemented, unspecified */
-                                               ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Cause requires disconnect (cause:%d)\n", cnStEvnt->causeDgn[0].causeVal.val);
-                                               ftdmchan->caller_data.hangup_cause = cnStEvnt->causeDgn[0].causeVal.val;
+                       if (sngisdn_cause_val_requires_disconnect(ftdmchan, &cnStEvnt->causeDgn[0]) == FTDM_SUCCESS) {
+                               ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Cause requires disconnect (cause:%d)\n", cnStEvnt->causeDgn[0].causeVal.val);
+                               ftdmchan->caller_data.hangup_cause = cnStEvnt->causeDgn[0].causeVal.val;
                                                
-                                               sngisdn_set_flag(sngisdn_info, FLAG_SEND_DISC);
-                                               ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING);
-                                               goto sngisdn_process_cnst_ind_end;
-                               }
+                               sngisdn_set_flag(sngisdn_info, FLAG_SEND_DISC);
+                               ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_TERMINATING);
+                               goto sngisdn_process_cnst_ind_end;
                        }
-                               
+                       
                        switch(ftdmchan->state) {
                                case FTDM_CHANNEL_STATE_DIALING:
                                case FTDM_CHANNEL_STATE_PROCEED: