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; } switch_input_type_t;
typedef enum { typedef enum {
SWITCH_CAUSE_UNALLOCATED = 1, SWITCH_CAUSE_UNALLOCATED = 0,
SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET = 2, SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET = 2,
SWITCH_CAUSE_NO_ROUTE_DESTINATION = 3, SWITCH_CAUSE_NO_ROUTE_DESTINATION = 3,
SWITCH_CAUSE_CHANNEL_UNACCEPTABLE = 6, 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 // map QSIG cause codes to SIP from RFC4497 section 8.4.1
static int hangup_cause_to_sip(switch_call_cause_t cause) { static int hangup_cause_to_sip(switch_call_cause_t cause) {
switch (cause) { switch (cause) {
case SWITCH_CAUSE_UNALLOCATED:
case SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET: case SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET:
case SWITCH_CAUSE_NO_ROUTE_DESTINATION: case SWITCH_CAUSE_NO_ROUTE_DESTINATION:
return 404; return 404;
@ -2334,7 +2333,7 @@ static switch_call_cause_t sip_cause_to_freeswitch(int status) {
case 404: case 404:
case 485: case 485:
case 604: case 604:
return SWITCH_CAUSE_UNALLOCATED; return SWITCH_CAUSE_NO_ROUTE_DESTINATION;
case 408: case 408:
case 504: case 504:
return SWITCH_CAUSE_RECOVERY_ON_TIMER_EXPIRE; 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) SWITCH_DECLARE(char *) switch_channel_cause2str(switch_call_cause_t cause)
{ {
uint8_t x; uint8_t x;
char *str = "UNALLOCATED"; char *str = "UNKNOWN";
for(x = 0; CAUSE_CHART[x].name; x++) { for(x = 0; CAUSE_CHART[x].name; x++) {
if (CAUSE_CHART[x].cause == cause) { 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; channel->state = state;
switch_mutex_unlock(channel->flag_mutex); 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; channel->hangup_cause = SWITCH_CAUSE_NORMAL_CLEARING;
} }
if (state < CS_HANGUP) { if (state < CS_HANGUP) {

View File

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