FS-3321 --resolve
This commit is contained in:
parent
78f3958f53
commit
e081e8045e
|
@ -1691,7 +1691,11 @@ typedef enum {
|
|||
SWITCH_CAUSE_MEDIA_TIMEOUT = 604,
|
||||
SWITCH_CAUSE_PICKED_OFF = 605,
|
||||
SWITCH_CAUSE_USER_NOT_REGISTERED = 606,
|
||||
SWITCH_CAUSE_PROGRESS_TIMEOUT = 607
|
||||
SWITCH_CAUSE_PROGRESS_TIMEOUT = 607,
|
||||
SWITCH_CAUSE_INVALID_GATEWAY = 608,
|
||||
SWITCH_CAUSE_GATEWAY_DOWN = 609,
|
||||
SWITCH_CAUSE_INVALID_URL = 610,
|
||||
SWITCH_CAUSE_INVALID_PROFILE = 611
|
||||
} switch_call_cause_t;
|
||||
|
||||
typedef enum {
|
||||
|
|
|
@ -1399,6 +1399,8 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET:
|
||||
case SWITCH_CAUSE_NO_ROUTE_DESTINATION:
|
||||
case SWITCH_CAUSE_INVALID_NUMBER_FORMAT:
|
||||
case SWITCH_CAUSE_INVALID_GATEWAY:
|
||||
case SWITCH_CAUSE_INVALID_URL:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_SUBSCRIBED:
|
||||
case SWITCH_CAUSE_INCOMPATIBLE_DESTINATION:
|
||||
|
||||
|
@ -1430,7 +1432,9 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_REQUESTED_CHAN_UNAVAIL:
|
||||
case SWITCH_CAUSE_CHANNEL_UNACCEPTABLE:
|
||||
case SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_INVALID_PROFILE:
|
||||
case SWITCH_CAUSE_NETWORK_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_GATEWAY_DOWN:
|
||||
case SWITCH_CAUSE_FACILITY_REJECTED:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_IMPLEMENTED:
|
||||
case SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED:
|
||||
|
@ -1448,6 +1452,8 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET:
|
||||
case SWITCH_CAUSE_NO_ROUTE_DESTINATION:
|
||||
case SWITCH_CAUSE_INVALID_NUMBER_FORMAT:
|
||||
case SWITCH_CAUSE_INVALID_GATEWAY:
|
||||
case SWITCH_CAUSE_INVALID_URL:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_SUBSCRIBED:
|
||||
case SWITCH_CAUSE_INCOMPATIBLE_DESTINATION:
|
||||
|
||||
|
@ -1480,6 +1486,7 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_CHANNEL_UNACCEPTABLE:
|
||||
case SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_NETWORK_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_GATEWAY_DOWN:
|
||||
case SWITCH_CAUSE_FACILITY_REJECTED:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_IMPLEMENTED:
|
||||
case SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED:
|
||||
|
@ -1497,6 +1504,8 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET:
|
||||
case SWITCH_CAUSE_NO_ROUTE_DESTINATION:
|
||||
case SWITCH_CAUSE_INVALID_NUMBER_FORMAT:
|
||||
case SWITCH_CAUSE_INVALID_GATEWAY:
|
||||
case SWITCH_CAUSE_INVALID_URL:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_SUBSCRIBED:
|
||||
case SWITCH_CAUSE_INCOMPATIBLE_DESTINATION:
|
||||
|
||||
|
@ -1529,6 +1538,7 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_CHANNEL_UNACCEPTABLE:
|
||||
case SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_NETWORK_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_GATEWAY_DOWN:
|
||||
case SWITCH_CAUSE_FACILITY_REJECTED:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_IMPLEMENTED:
|
||||
case SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED:
|
||||
|
@ -1553,6 +1563,8 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET:
|
||||
case SWITCH_CAUSE_NO_ROUTE_DESTINATION:
|
||||
case SWITCH_CAUSE_INVALID_NUMBER_FORMAT:
|
||||
case SWITCH_CAUSE_INVALID_GATEWAY:
|
||||
case SWITCH_CAUSE_INVALID_URL:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_SUBSCRIBED:
|
||||
case SWITCH_CAUSE_INCOMPATIBLE_DESTINATION:
|
||||
|
||||
|
@ -1585,6 +1597,7 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_CHANNEL_UNACCEPTABLE:
|
||||
case SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_NETWORK_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_GATEWAY_DOWN:
|
||||
case SWITCH_CAUSE_FACILITY_REJECTED:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_IMPLEMENTED:
|
||||
case SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED:
|
||||
|
@ -1622,6 +1635,8 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET:
|
||||
case SWITCH_CAUSE_NO_ROUTE_DESTINATION:
|
||||
case SWITCH_CAUSE_INVALID_NUMBER_FORMAT:
|
||||
case SWITCH_CAUSE_INVALID_GATEWAY:
|
||||
case SWITCH_CAUSE_INVALID_URL:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_SUBSCRIBED:
|
||||
case SWITCH_CAUSE_INCOMPATIBLE_DESTINATION:
|
||||
|
||||
|
@ -1629,6 +1644,7 @@ int BoardE1::KhompPvtR2::callFailFromCause(int cause)
|
|||
case SWITCH_CAUSE_CHANNEL_UNACCEPTABLE:
|
||||
case SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_NETWORK_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_GATEWAY_DOWN:
|
||||
case SWITCH_CAUSE_FACILITY_REJECTED:
|
||||
case SWITCH_CAUSE_FACILITY_NOT_IMPLEMENTED:
|
||||
case SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED:
|
||||
|
|
|
@ -326,8 +326,11 @@ static int hangup_cause_to_sip(switch_call_cause_t cause)
|
|||
case SWITCH_CAUSE_REDIRECTION_TO_NEW_DESTINATION:
|
||||
return 410;
|
||||
case SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_INVALID_PROFILE:
|
||||
return 502;
|
||||
case SWITCH_CAUSE_INVALID_NUMBER_FORMAT:
|
||||
case SWITCH_CAUSE_INVALID_URL:
|
||||
case SWITCH_CAUSE_INVALID_GATEWAY:
|
||||
return 484;
|
||||
case SWITCH_CAUSE_FACILITY_REJECTED:
|
||||
return 501;
|
||||
|
@ -338,6 +341,7 @@ static int hangup_cause_to_sip(switch_call_cause_t cause)
|
|||
case SWITCH_CAUSE_NETWORK_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_NORMAL_TEMPORARY_FAILURE:
|
||||
case SWITCH_CAUSE_SWITCH_CONGESTION:
|
||||
case SWITCH_CAUSE_GATEWAY_DOWN:
|
||||
return 503;
|
||||
case SWITCH_CAUSE_OUTGOING_CALL_BARRED:
|
||||
case SWITCH_CAUSE_INCOMING_CALL_BARRED:
|
||||
|
@ -4266,7 +4270,7 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
|
|||
*new_session = NULL;
|
||||
|
||||
if (!outbound_profile || zstr(outbound_profile->destination_number)) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Invalid Destination\n");
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Invalid Empty Destination\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
@ -4303,30 +4307,30 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
|
|||
char *gw, *params;
|
||||
|
||||
if (!(gw = strchr(profile_name, '/'))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid URL\n");
|
||||
cause = SWITCH_CAUSE_INVALID_NUMBER_FORMAT;
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid URL \'%s\'\n", gw);
|
||||
cause = SWITCH_CAUSE_INVALID_URL;
|
||||
goto error;
|
||||
}
|
||||
|
||||
*gw++ = '\0';
|
||||
|
||||
if (!(dest = strchr(gw, '/'))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid URL\n");
|
||||
cause = SWITCH_CAUSE_INVALID_NUMBER_FORMAT;
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid URL \'%s\'\n", gw);
|
||||
cause = SWITCH_CAUSE_INVALID_URL;
|
||||
goto error;
|
||||
}
|
||||
|
||||
*dest++ = '\0';
|
||||
|
||||
if (!(gateway_ptr = sofia_reg_find_gateway(gw))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid Gateway\n");
|
||||
cause = SWITCH_CAUSE_INVALID_NUMBER_FORMAT;
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid Gateway \'%s\'\n", gw);
|
||||
cause = SWITCH_CAUSE_INVALID_GATEWAY;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (gateway_ptr->status != SOFIA_GATEWAY_UP) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Gateway is down!\n");
|
||||
cause = SWITCH_CAUSE_NETWORK_OUT_OF_ORDER;
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Gateway \'%s\' is down!\n", gw);
|
||||
cause = SWITCH_CAUSE_GATEWAY_DOWN;
|
||||
gateway_ptr->ob_failed_calls++;
|
||||
goto error;
|
||||
}
|
||||
|
@ -4433,14 +4437,14 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
|
|||
} else {
|
||||
if (!(dest = strchr(profile_name, '/'))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid URL\n");
|
||||
cause = SWITCH_CAUSE_INVALID_NUMBER_FORMAT;
|
||||
cause = SWITCH_CAUSE_INVALID_URL;
|
||||
goto error;
|
||||
}
|
||||
*dest++ = '\0';
|
||||
|
||||
if (!(profile = sofia_glue_find_profile(profile_name))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid Profile\n");
|
||||
cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
|
||||
cause = SWITCH_CAUSE_INVALID_PROFILE;
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
|
|
@ -103,6 +103,10 @@ static struct switch_cause_table CAUSE_CHART[] = {
|
|||
{"PICKED_OFF", SWITCH_CAUSE_PICKED_OFF},
|
||||
{"USER_NOT_REGISTERED", SWITCH_CAUSE_USER_NOT_REGISTERED},
|
||||
{"PROGRESS_TIMEOUT", SWITCH_CAUSE_PROGRESS_TIMEOUT},
|
||||
{"INVALID_GATEWAY", SWITCH_CAUSE_INVALID_GATEWAY},
|
||||
{"GATEWAY_DOWN", SWITCH_CAUSE_GATEWAY_DOWN},
|
||||
{"INVALID_URL", SWITCH_CAUSE_INVALID_URL},
|
||||
{"INVALID_PROFILE", SWITCH_CAUSE_INVALID_PROFILE},
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
|
|
|
@ -3383,6 +3383,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
|
|||
switch_channel_set_variable(caller_channel, "DIALSTATUS", "NOANSWER");
|
||||
break;
|
||||
case SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER:
|
||||
case SWITCH_CAUSE_INVALID_PROFILE:
|
||||
switch_channel_set_variable(caller_channel, "DIALSTATUS", "INVALIDARGS");
|
||||
break;
|
||||
case SWITCH_CAUSE_CALL_REJECTED:
|
||||
|
|
Loading…
Reference in New Issue