||
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);
}
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);
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);