]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: Initial fix attempt for libpri. It will now load and work. More testing...
authorMarc Olivier Chouinard <mochouinard@moctel.com>
Thu, 30 Sep 2010 06:37:57 +0000 (02:37 -0400)
committerMarc Olivier Chouinard <mochouinard@moctel.com>
Thu, 30 Sep 2010 06:37:57 +0000 (02:37 -0400)
libs/freetdm/src/ftdm_io.c
libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c
libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.c

index ba27f0b00286089868857fc028e2de39da996d95..6ed1d6ee779025ffcfe25cac254b3ff203385c5f 100644 (file)
@@ -1841,6 +1841,8 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_open(uint32_t span_id, uint32_t chan_id,
            ||
            chan_is_avail(check)
            ||
+           (check->type == FTDM_CHAN_TYPE_DQ921 && ftdm_test_flag(check, FTDM_CHANNEL_CONFIGURED) && ftdm_test_flag(check, FTDM_CHANNEL_READY))
+           ||
            may_be_available) {
                if (!ftdm_test_flag(check, FTDM_CHANNEL_OPEN)) {
                        status = check->fio->open(check);
index ba4049a32f04cda5ea963795df46bac676f69e69..77dd3d1bfcd56ce7d79b9b85fc516818e7bdd8f6 100644 (file)
@@ -1133,7 +1133,9 @@ 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 (isdn_data->spri.dchan) {
+                       isdn_data->spri.dchan->state = FTDM_CHANNEL_STATE_DOWN;
+               }
 
                if (!down) {
                        ftdm_set_state_all(span, FTDM_CHANNEL_STATE_RESTART);
index b286ec1df6ca9aa1eab2a867d209b885a9542579..8dfba34ec30ef3c3a22a810a0c57f186519474d1 100644 (file)
@@ -177,7 +177,7 @@ int lpwrap_init_pri(struct lpwrap_pri *spri, ftdm_span_t *span, ftdm_channel_t *
        spri->dchan = dchan;
        spri->span = span;
 
-       if ((spri->pri = pri_new_cb(spri->dchan->sockfd, node, swtype, __pri_lpwrap_read, __pri_lpwrap_write, spri))){
+       if (spri->dchan && (spri->pri = pri_new_cb(spri->dchan->sockfd, node, swtype, __pri_lpwrap_read, __pri_lpwrap_write, spri))){
                unsigned char buf[4] = { 0 };
                size_t buflen = sizeof(buf), len = 0;
                pri_set_debug(spri->pri, debug);