ftdm_channel_t *fchan = span->channels[i];
if (ftdm_test_flag(fchan, FTDM_CHANNEL_EVENT)) {
ftdm_clear_flag(fchan, FTDM_CHANNEL_EVENT);
- }
- if (ioctl(fchan->sockfd, codes.GETEVENT, &zt_event_id) == -1) {
- snprintf(span->last_error, sizeof(span->last_error), "%s", strerror(errno));
- return FTDM_FAIL;
- }
+ if (ioctl(fchan->sockfd, codes.GETEVENT, &zt_event_id) == -1) {
+ snprintf(span->last_error, sizeof(span->last_error), "%s", strerror(errno));
+ return FTDM_FAIL;
+ }
- ftdm_channel_lock(fchan);
- if ((zt_channel_process_event(fchan, &event_id, zt_event_id)) != FTDM_SUCCESS) {
- ftdm_log_chan_msg(fchan, FTDM_LOG_ERROR, "Failed to process event from channel\n");
+ ftdm_channel_lock(fchan);
+ if ((zt_channel_process_event(fchan, &event_id, zt_event_id)) != FTDM_SUCCESS) {
+ ftdm_log_chan_msg(fchan, FTDM_LOG_ERROR, "Failed to process event from channel\n");
+ ftdm_channel_unlock(fchan);
+ return FTDM_FAIL;
+ }
ftdm_channel_unlock(fchan);
- return FTDM_FAIL;
- }
- ftdm_channel_unlock(fchan);
- fchan->last_event_time = 0;
- span->event_header.e_type = FTDM_EVENT_OOB;
- span->event_header.enum_id = event_id;
- span->event_header.channel = fchan;
- *event = &span->event_header;
- return FTDM_SUCCESS;
+ fchan->last_event_time = 0;
+ span->event_header.e_type = FTDM_EVENT_OOB;
+ span->event_header.enum_id = event_id;
+ span->event_header.channel = fchan;
+ *event = &span->event_header;
+ return FTDM_SUCCESS;
+ }
}
return FTDM_FAIL;