fix cause code passthrough

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4061 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2007-01-26 20:39:45 +00:00
parent 28807552d0
commit 00d7e70e2d
4 changed files with 15 additions and 15 deletions

View File

@ -779,7 +779,7 @@ typedef enum {
} switch_input_type_t;
typedef enum {
SWITCH_CAUSE_UNALLOCATED = 1,
SWITCH_CAUSE_UNALLOCATED = 0,
SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET = 2,
SWITCH_CAUSE_NO_ROUTE_DESTINATION = 3,
SWITCH_CAUSE_CHANNEL_UNACCEPTABLE = 6,

View File

@ -1175,7 +1175,6 @@ static switch_status_t sofia_on_execute(switch_core_session_t *session)
// map QSIG cause codes to SIP from RFC4497 section 8.4.1
static int hangup_cause_to_sip(switch_call_cause_t cause) {
switch (cause) {
case SWITCH_CAUSE_UNALLOCATED:
case SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET:
case SWITCH_CAUSE_NO_ROUTE_DESTINATION:
return 404;
@ -2334,7 +2333,7 @@ static switch_call_cause_t sip_cause_to_freeswitch(int status) {
case 404:
case 485:
case 604:
return SWITCH_CAUSE_UNALLOCATED;
return SWITCH_CAUSE_NO_ROUTE_DESTINATION;
case 408:
case 504:
return SWITCH_CAUSE_RECOVERY_ON_TIMER_EXPIRE;

View File

@ -120,7 +120,7 @@ struct switch_channel {
SWITCH_DECLARE(char *) switch_channel_cause2str(switch_call_cause_t cause)
{
uint8_t x;
char *str = "UNALLOCATED";
char *str = "UNKNOWN";
for(x = 0; CAUSE_CHART[x].name; x++) {
if (CAUSE_CHART[x].cause == cause) {
@ -620,7 +620,7 @@ SWITCH_DECLARE(switch_channel_state_t) switch_channel_perform_set_state(switch_c
channel->state = state;
switch_mutex_unlock(channel->flag_mutex);
if (state == CS_HANGUP && channel->hangup_cause == SWITCH_CAUSE_UNALLOCATED) {
if (state == CS_HANGUP && !channel->hangup_cause) {
channel->hangup_cause = SWITCH_CAUSE_NORMAL_CLEARING;
}
if (state < CS_HANGUP) {

View File

@ -2881,8 +2881,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
}
done:
*cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
*cause = SWITCH_CAUSE_UNALLOCATED;
if (var_event) {
switch_event_destroy(&var_event);
}
@ -2900,18 +2900,19 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
if (!peer_channels[i]) {
continue;
}
*cause = switch_channel_get_cause(peer_channels[i]);
*cause = switch_channel_get_cause(peer_channels[i]);
break;
}
}
if (reason != SWITCH_CAUSE_UNALLOCATED) {
*cause = reason;
} else if (caller_channel) {
*cause = switch_channel_get_cause(caller_channel);
} else {
*cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
if (!*cause) {
if (reason) {
*cause = reason;
} else if (caller_channel) {
*cause = switch_channel_get_cause(caller_channel);
} else {
*cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
}
}
if (idx == IDX_CANCEL) {