*/
static ftdm_channel_t *find_channel_by_cref(ftdm_span_t *span, const int cref)
{
- ftdm_iterator_t *iter = NULL;
+ ftdm_iterator_t *c_iter, *c_cur;
ftdm_channel_t *chan = NULL;
if (!span || cref <= 0)
ftdm_mutex_lock(span->mutex);
+ c_iter = ftdm_span_get_chan_iterator(span, NULL);
+
/* Iterate over all channels on this span */
- for (iter = ftdm_span_get_chan_iterator(span, NULL); iter; iter = ftdm_iterator_next(iter)) {
- ftdm_channel_t *cur = ftdm_iterator_current(iter);
+ for (c_cur = c_iter; c_cur; c_cur = ftdm_iterator_next(c_cur)) {
+ ftdm_channel_t *cur = ftdm_iterator_current(c_cur);
ftdm_caller_data_t *caller_data = NULL;
if (ftdm_channel_get_type(cur) != FTDM_CHAN_TYPE_B)
}
}
- ftdm_iterator_free(iter);
+ ftdm_iterator_free(c_iter);
ftdm_mutex_unlock(span->mutex);
return chan;
}
*/
static ftdm_status_t hunt_channel(ftdm_span_t *span, const int hint, const ftdm_bool_t excl, ftdm_channel_t **chan)
{
- ftdm_iterator_t *iter = NULL;
- ftdm_channel_t *tmp = NULL;
+ ftdm_iterator_t *c_iter, *c_cur;
+ ftdm_channel_t *tmp = NULL;
int ret = FTDM_FAIL;
/* lock span */
}
}
+ c_iter = ftdm_span_get_chan_iterator(span, NULL);
+
/* Iterate over all channels on this span */
- for (iter = ftdm_span_get_chan_iterator(span, NULL); iter; iter = ftdm_iterator_next(iter)) {
- tmp = ftdm_iterator_current(iter);
+ for (c_cur = c_iter; c_cur; c_cur = ftdm_iterator_next(c_cur)) {
+ tmp = ftdm_iterator_current(c_cur);
if (ftdm_channel_get_type(tmp) != FTDM_CHAN_TYPE_B)
continue;
}
}
- ftdm_iterator_free(iter);
+ ftdm_iterator_free(c_iter);
out:
ftdm_mutex_unlock(span->mutex);
return ret;
{
ftdm_span_t *span = spri->span;
ftdm_libpri_data_t *isdn_data = span->signal_data;
- ftdm_iterator_t *iter = NULL;
+ ftdm_iterator_t *c_iter, *c_cur;
ftdm_log_chan_msg(isdn_data->dchan, FTDM_LOG_INFO, "-- T3xx timed out, restarting idle b-channels\n");
ftdm_mutex_lock(span->mutex);
+ c_iter = ftdm_span_get_chan_iterator(span, NULL);
+
/* Iterate b-channels */
- for (iter = ftdm_span_get_chan_iterator(span, NULL); iter; iter = ftdm_iterator_next(iter)) {
- ftdm_channel_t *cur = ftdm_iterator_current(iter);
+ for (c_cur = c_iter; c_cur; c_cur = ftdm_iterator_next(c_cur)) {
+ ftdm_channel_t *cur = ftdm_iterator_current(c_cur);
/* Skip non-b-channels */
if (ftdm_channel_get_type(cur) != FTDM_CHAN_TYPE_B)
continue;
ftdm_set_state_locked(cur, FTDM_CHANNEL_STATE_RESTART);
}
}
- ftdm_iterator_free(iter);
+ ftdm_iterator_free(c_iter);
ftdm_mutex_unlock(span->mutex);
/* Start timer again */