change logic to declinatio mortuus obfirmo

git-svn-id: http://svn.openzap.org/svn/openzap/trunk@698 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
Anthony Minessale 2009-03-13 18:52:35 +00:00
parent dd8d70b0a8
commit d95fb86db5
2 changed files with 21 additions and 11 deletions

View File

@ -712,6 +712,16 @@ static __inline__ void zap_set_flag_all(zap_span_t *span, uint32_t flag)
zap_mutex_unlock(span->mutex);
}
static __inline__ void zap_clear_flag_all(zap_span_t *span, uint32_t flag)
{
uint32_t j;
zap_mutex_lock(span->mutex);
for(j = 1; j <= span->chan_count; j++) {
zap_clear_flag_locked((span->channels[j]), flag);
}
zap_mutex_unlock(span->mutex);
}
#endif
/* For Emacs:

View File

@ -1387,16 +1387,14 @@ static __inline__ zap_status_t process_event(zap_span_t *span, zap_event_t *even
zap_set_state_locked(event->channel, ZAP_CHANNEL_STATE_RESTART);
}
}
if (event->channel->type == ZAP_CHAN_TYPE_DQ921) {
zap_log(ZAP_LOG_WARNING, "Stopping ISDN for span %s\n", span->name);
span->stop(span);
}
zap_set_flag(event->channel, ZAP_CHANNEL_SUSPENDED);
zap_channel_get_alarms(event->channel);
isdn_data->sig_cb(&sig);
zap_log(ZAP_LOG_WARNING, "channel %d:%d (%d:%d) has alarms [%s]\n",
zap_log(ZAP_LOG_WARNING, "channel %d:%d (%d:%d) has alarms! [%s]\n",
event->channel->span_id, event->channel->chan_id,
event->channel->physical_span_id, event->channel->physical_chan_id,
event->channel->last_error);
@ -1404,11 +1402,9 @@ static __inline__ zap_status_t process_event(zap_span_t *span, zap_event_t *even
break;
case ZAP_OOB_ALARM_CLEAR:
{
if (event->channel->type == ZAP_CHAN_TYPE_DQ921) {
zap_log(ZAP_LOG_WARNING, "Resuming ISDN for span %s\n", span->name);
span->start(span);
}
zap_log(ZAP_LOG_WARNING, "channel %d:%d (%d:%d) alarms Cleared!\n", event->channel->span_id, event->channel->chan_id,
event->channel->physical_span_id, event->channel->physical_chan_id);
sig.event_id = ZAP_OOB_ALARM_CLEAR;
zap_clear_flag(event->channel, ZAP_CHANNEL_SUSPENDED);
@ -1705,6 +1701,10 @@ static void *zap_isdn_run(zap_thread_t *me, void *obj)
{
errs = 0;
if (flags & ZAP_READ) {
if (zap_test_flag(isdn_data->dchan, ZAP_CHANNEL_SUSPENDED)) {
zap_clear_flag_all(span, ZAP_CHANNEL_SUSPENDED);
}
len = sizeof(frame);
if (zap_channel_read(isdn_data->dchan, frame, &len) == ZAP_SUCCESS) {
#ifdef IODEBUG