some changes

git-svn-id: http://svn.openzap.org/svn/openzap/trunk@420 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
Anthony Minessale
2008-03-01 00:48:36 +00:00
parent 7cd6d9f30f
commit 532de2fb08
9 changed files with 316 additions and 266 deletions

View File

@@ -669,6 +669,23 @@ zap_status_t zap_channel_set_state(zap_channel_t *zchan, zap_channel_state_t sta
}
if (ok) {
if (state == ZAP_CHANNEL_STATE_PROGRESS) {
zap_set_flag(zchan, ZAP_CHANNEL_PROGRESS);
} else if (state == ZAP_CHANNEL_STATE_UP) {
zap_set_flag(zchan, ZAP_CHANNEL_PROGRESS);
zap_set_flag(zchan, ZAP_CHANNEL_MEDIA);
zap_set_flag(zchan, ZAP_CHANNEL_ANSWERED);
} else if (state == ZAP_CHANNEL_STATE_PROGRESS_MEDIA) {
zap_set_flag(zchan, ZAP_CHANNEL_PROGRESS);
zap_set_flag(zchan, ZAP_CHANNEL_MEDIA);
}
if (zchan->state == ZAP_CHANNEL_STATE_DOWN) {
zchan->span->active_count++;
} else if (state == ZAP_CHANNEL_STATE_DOWN) {
zchan->span->active_count--;
}
zap_set_flag(zchan, ZAP_CHANNEL_STATE_CHANGE);
zap_set_flag(zchan->span, ZAP_SPAN_STATE_CHANGE);
zchan->last_state = zchan->state;
@@ -690,6 +707,12 @@ zap_status_t zap_channel_open_any(uint32_t span_id, zap_direction_t direction, c
zap_mutex_lock(globals.mutex);
if (globals.spans[span_id].active_count >= globals.spans[span_id].chan_count) {
zap_log(ZAP_LOG_CRIT, "All circuits are busy.\n");
*zchan = NULL;
goto done;
}
if (span_id && globals.spans[span_id].channel_request) {
status = globals.spans[span_id].channel_request(&globals.spans[span_id], direction, caller_data, zchan);
goto done;
@@ -1587,14 +1610,14 @@ zap_status_t zap_channel_read(zap_channel_t *zchan, void *data, zap_size_t *data
if (mlen > sizeof(zchan->caller_data.ani)) {
mlen = sizeof(zchan->caller_data.ani);
}
zap_set_string(zchan->caller_data.ani, str);
zap_set_string(zchan->caller_data.cid_num, zchan->caller_data.ani);
zap_set_string(zchan->caller_data.ani.digits, str);
zap_set_string(zchan->caller_data.cid_num.digits, zchan->caller_data.ani.digits);
}
break;
case MDMF_NO_NUM:
{
zap_set_string(zchan->caller_data.ani, *str == 'P' ? "private" : "unknown");
zap_set_string(zchan->caller_data.cid_name, zchan->caller_data.ani);
zap_set_string(zchan->caller_data.ani.digits, *str == 'P' ? "private" : "unknown");
zap_set_string(zchan->caller_data.cid_name, zchan->caller_data.ani.digits);
}
break;
case MDMF_PHONE_NAME: