]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: fix dchan libpri
authorMoises Silva <moises.silva@gmail.com>
Wed, 21 Apr 2010 20:34:43 +0000 (16:34 -0400)
committerMoises Silva <moy@sangoma.com>
Wed, 28 Apr 2010 22:17:50 +0000 (18:17 -0400)
libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c
libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c
libs/freetdm/src/include/freetdm.h
libs/freetdm/src/include/private/ftdm_core.h

index 4e936d981733f1ff018ef930d28d17165eb92886..ba4049a32f04cda5ea963795df46bac676f69e69 100644 (file)
@@ -950,7 +950,8 @@ static int on_restart(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_eve
        ftdm_channel_t *ftdmchan;
 
        ftdm_log(FTDM_LOG_NOTICE, "-- Restarting %d:%d\n", spri->span->span_id, pevent->restart.channel);
-
+       
+       spri->dchan->state = FTDM_CHANNEL_STATE_UP;
        ftdmchan = span->channels[pevent->restart.channel];
 
        if (!ftdmchan) {
@@ -1132,6 +1133,7 @@ static void *ftdm_libpri_run(ftdm_thread_t *me, void *obj)
                }
 
                ftdm_log(FTDM_LOG_CRIT, "PRI down on span %d\n", isdn_data->spri.span->span_id);
+               isdn_data->spri.dchan->state = FTDM_CHANNEL_STATE_DOWN;
 
                if (!down) {
                        ftdm_set_state_all(span, FTDM_CHANNEL_STATE_RESTART);
index 7d192d59c5fa29d40a924b502f61fe3fa6e074cc..d2a4f1b2b20cec9737db463fa889d08a7545eb14 100644 (file)
@@ -950,23 +950,15 @@ static FIO_GET_ALARMS_FUNCTION(wanpipe_get_alarms)
        }
 
        if (alarms & WAN_TE_BIT_ALARM_AIS) {
-               ftdmchan->alarm_flags |= FTDM_ALARM_AIS;
                ftdmchan->alarm_flags |= FTDM_ALARM_BLUE;
                alarms &= ~WAN_TE_BIT_ALARM_AIS;
        }
 
        if (alarms & WAN_TE_BIT_ALARM_RAI) {
-               ftdmchan->alarm_flags |= FTDM_ALARM_RAI;
                ftdmchan->alarm_flags |= FTDM_ALARM_YELLOW;
                alarms &= ~WAN_TE_BIT_ALARM_RAI;
        }
 
-       /* still missing to map:
-        * FTDM_ALARM_RECOVER
-        * FTDM_ALARM_LOOPBACK
-        * FTDM_ALARM_NOTOPEN
-        * */
-
        /* if we still have alarms that we did not map, set the general alarm */
        if (alarms) {
                ftdm_log(FTDM_LOG_DEBUG, "Unmapped wanpipe alarms: %d\n", alarms);
index fa599021e5d06bb3904076b97814c67d325d2355..beb43fe40ff27f76dedbb136201c0a0e2785f643 100644 (file)
@@ -175,6 +175,7 @@ typedef enum {
 FTDM_STR2ENUM_P(ftdm_str2ftdm_chan_type, ftdm_chan_type2str, ftdm_chan_type_t)
 
 #define FTDM_IS_VOICE_CHANNEL(ftdm_chan) ((ftdm_chan)->type != FTDM_CHAN_TYPE_DQ921 && (ftdm_chan)->type != FTDM_CHAN_TYPE_DQ931)
+#define FTDM_IS_DCHAN(ftdm_chan) ((ftdm_chan)->type == FTDM_CHAN_TYPE_DQ921 || (ftdm_chan)->type == FTDM_CHAN_TYPE_DQ931)
 
 typedef void (*ftdm_logger_t)(const char *file, const char *func, int line, int level, const char *fmt, ...);
 
index 3c072cb95847e73750e76a13ee588f263f6f4598..3ab807620ccd02615b24b5a7d86d65a01d2b8e26 100644 (file)
@@ -647,7 +647,9 @@ static __inline__ void ftdm_set_state_all(ftdm_span_t *span, ftdm_channel_state_
        uint32_t j;
        ftdm_mutex_lock(span->mutex);
        for(j = 1; j <= span->chan_count; j++) {
-               ftdm_set_state_locked((span->channels[j]), state);
+               if (!FTDM_IS_DCHAN(span->channels[j])) {
+                       ftdm_set_state_locked((span->channels[j]), state);
+               }
        }
        ftdm_mutex_unlock(span->mutex);
 }