]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: ISDN - Fix for not being able to open d-channel when span is in alarm
authorDavid Yat Sin <dyatsin@sangoma.com>
Wed, 1 Dec 2010 22:02:58 +0000 (17:02 -0500)
committerDavid Yat Sin <dyatsin@sangoma.com>
Wed, 1 Dec 2010 22:03:42 +0000 (17:03 -0500)
libs/freetdm/src/ftdm_io.c
libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c

index 5ba7e389f894cf2936e1f7e548805bce63e906d5..3dd1aa9ece0776d6d6d958b6bc1e1053971043b5 100644 (file)
@@ -1764,16 +1764,26 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_open_chan(ftdm_channel_t *ftdmchan)
 
        ftdm_mutex_lock(ftdmchan->mutex);
 
-       if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_SUSPENDED)) {
-               snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", "Channel is suspended\n");
-               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Cannot open channel when is suspended\n");
-               goto done;
-       }
-
-       if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_IN_ALARM) && !ftdm_test_flag(ftdmchan->span, FTDM_SPAN_PWR_SAVING)) {
-               snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", "Channel is alarmed\n");
-               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Cannot open channel when is alarmed\n");
-               goto done;
+       if (FTDM_IS_VOICE_CHANNEL(ftdmchan)) {
+               if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_SUSPENDED)) {
+                       snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", "Channel is suspended\n");
+                       ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Cannot open channel when is suspended\n");
+                       goto done;
+               }
+               
+               if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_IN_ALARM) && !ftdm_test_flag(ftdmchan->span, FTDM_SPAN_PWR_SAVING)) {
+                       snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", "Channel is alarmed\n");
+                       ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Cannot open channel when is alarmed\n");
+                       goto done;
+               }
+               
+               if (globals.cpu_monitor.alarm &&
+                                 globals.cpu_monitor.alarm_action_flags & FTDM_CPU_ALARM_ACTION_REJECT) {
+                       snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", "CPU usage alarm is on - refusing to open channel\n");
+                       ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "CPU usage alarm is on - refusing to open channel\n");
+                       ftdmchan->caller_data.hangup_cause = FTDM_CAUSE_SWITCH_CONGESTION;
+                       goto done;
+               }
        }
 
        if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_READY)) {
@@ -1782,15 +1792,6 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_open_chan(ftdm_channel_t *ftdmchan)
                goto done;
        }
 
-       if (globals.cpu_monitor.alarm && 
-           globals.cpu_monitor.alarm_action_flags & FTDM_CPU_ALARM_ACTION_REJECT) {
-               snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", "CPU usage alarm is on - refusing to open channel\n");
-               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "CPU usage alarm is on - refusing to open channel\n");
-               ftdmchan->caller_data.hangup_cause = FTDM_CAUSE_SWITCH_CONGESTION;
-               goto done;
-       }
-
-
        status = ftdmchan->fio->open(ftdmchan);
        if (status == FTDM_SUCCESS) {
                ftdm_set_flag(ftdmchan, FTDM_CHANNEL_OPEN | FTDM_CHANNEL_INUSE);
index 6afab42a89913970b4867b23ae11ed8c8b55c0bb..cce10cc1dd8afba2b4245adddbabba8ee43cda32 100644 (file)
@@ -280,7 +280,7 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
                } else if (!strcasecmp(var, "outbound-bearer_cap")) {
                        ftdm_set_bearer_capability(val, (uint8_t*)&span->default_caller_data.bearer_capability);
                } else if (!strcasecmp(var, "outbound-bearer_layer1")) {
-                       ftdm_set_bearer_layer1(val, &span->default_caller_data.bearer_layer1);
+                       ftdm_set_bearer_layer1(val, (uint8_t*)&span->default_caller_data.bearer_layer1);
                } else if (!strcasecmp(var, "channel-restart-on-link-up")) {
                        parse_yesno(var, val, &signal_data->restart_opt);
                } else if (!strcasecmp(var, "local-number")) {