for(i = 1; i <= globals.span_index; i++) {
span = &globals.spans[i];
if (zap_test_flag(span, ZAP_SPAN_CONFIGURED)) {
- for(j = 0; j < span->chan_count; j++) {
+ for(j = 0; j <= span->chan_count; j++) {
zap_channel_destroy(&span->channels[j]);
}
}
zap_clear_flag_locked(zchan, ZAP_CHANNEL_INUSE);
zap_clear_flag_locked(zchan, ZAP_CHANNEL_OUTBOUND);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_WINK);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_FLASH);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_STATE_CHANGE);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_HOLD);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_OFFHOOK);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_RINGING);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_PROGRESS_DETECT);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_CALLERID_DETECT);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_3WAY);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_PROGRESS);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_MEDIA);
+ zap_clear_flag_locked(zchan, ZAP_CHANNEL_ANSWERED);
return ZAP_SUCCESS;
}
int i;
zap_channel_t *zchan = NULL;
- for(i = 0; i < span->chan_count; i++) {
+ for(i = 0; i <= span->chan_count; i++) {
if (span->channels[i].physical_span_id == event->span+1 && span->channels[i].physical_chan_id == event->chan+1) {
zchan = &span->channels[i];
break;
}
}
+ zap_log(ZAP_LOG_CRIT, "START ACK CANT FIND A CHAN %d:%d\n", event->span+1,event->chan+1);
ss7bc_exec_command(mcon,
event->span,
event->chan,
if ((zchan = find_zchan(span, event))) {
zchan->caller_data.hangup_cause = event->release_cause;
zap_set_state_locked(zchan, ZAP_CHANNEL_STATE_TERMINATING);
-
- ss7bc_exec_command(mcon,
- event->span,
- event->chan,
- 0,
- SIGBOOST_EVENT_CALL_STOPPED_ACK,
- 0);
-
} else {
- ss7bc_exec_command(mcon,
- event->span,
- event->chan,
- 0,
- SIGBOOST_EVENT_CALL_STOPPED,
- ZAP_CAUSE_DESTINATION_OUT_OF_ORDER);
+ zap_log(ZAP_LOG_CRIT, "STOP CANT FIND A CHAN %d:%d\n", event->span+1,event->chan+1);
}
+
+ ss7bc_exec_command(mcon,
+ event->span,
+ event->chan,
+ 0,
+ SIGBOOST_EVENT_CALL_STOPPED_ACK,
+ 0);
+
}
static void handle_call_answer(zap_span_t *span, ss7bc_connection_t *mcon, ss7bc_event_t *event)
if ((zchan = find_zchan(span, event))) {
zap_set_state_locked(zchan, ZAP_CHANNEL_STATE_UP);
} else {
- ss7bc_exec_command(mcon,
- event->span,
- event->chan,
- 0,
- SIGBOOST_EVENT_CALL_STOPPED,
- ZAP_CAUSE_DESTINATION_OUT_OF_ORDER);
+ zap_log(ZAP_LOG_CRIT, "ANSWER CANT FIND A CHAN %d:%d\n", event->span+1,event->chan+1);
}
}
mcon = &ss7_boost_data->mcon;
pcon = &ss7_boost_data->pcon;
- top:
+ top:
init_outgoing_array();
if (FD_ISSET(pcon->socket, &rfds)) {
if ((event = ss7bc_connection_readp(pcon, i))) {
- parse_ss7_event(span, pcon, event);
+ parse_ss7_event(span, mcon, event);
} else goto top;
}