SWITCH_CAUSE_ALLOTTED_TIMEOUT = 602,
SWITCH_CAUSE_USER_CHALLENGE = 603,
SWITCH_CAUSE_MEDIA_TIMEOUT = 604,
- SWITCH_CAUSE_PICKED_OFF = 605
+ SWITCH_CAUSE_PICKED_OFF = 605,
+ SWITCH_CAUSE_USER_NOT_REGISTERED = 606
} switch_call_cause_t;
typedef enum {
char *p;
sofia_profile_t *profile = NULL;
const char *exclude_contact = NULL;
- char *reply = "";
-
+ char *reply = "error/facility_not_subscribed";
+
if (!cmd) {
stream->write_function(stream, "%s", "");
return SWITCH_STATUS_SUCCESS;
if (!switch_strlen_zero(reply) && end_of(reply) == ',') {
end_of(reply) = '\0';
}
+
+ if (switch_strlen_zero(reply)) {
+ reply = "error/user_not_registered";
+ }
+
stream->write_function(stream, "%s", reply);
reply = NULL;
+
switch_safe_free(mystream.data);
}
}
tech_pvt->local_url = switch_core_session_sprintf(nsession, "%s@%s", dest, host);
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Cannot locate registered user %s@%s\n", dest, host);
- cause = SWITCH_CAUSE_NO_ROUTE_DESTINATION;
+ cause = SWITCH_CAUSE_USER_NOT_REGISTERED;
goto error;
}
} else if (!(host = strchr(dest, '@'))) {
host = profile_name;
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Cannot locate registered user %s@%s\n", dest, profile_name);
- cause = SWITCH_CAUSE_NO_ROUTE_DESTINATION;
+ cause = SWITCH_CAUSE_USER_NOT_REGISTERED;
goto error;
}
} else {
{"USER_CHALLENGE", SWITCH_CAUSE_USER_CHALLENGE},
{"MEDIA_TIMEOUT", SWITCH_CAUSE_MEDIA_TIMEOUT},
{"PICKED_OFF", SWITCH_CAUSE_PICKED_OFF},
+ {"USER_NOT_REGISTERED", SWITCH_CAUSE_USER_NOT_REGISTERED},
{NULL, 0}
};
char *loop_data = NULL;
uint32_t progress_timelimit_sec = 0;
+ *bleg = NULL;
+
+ if (!strncasecmp(bridgeto, "error/", 6)) {
+ *cause = switch_channel_str2cause(bridgeto + 6);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
switch_zmalloc(write_frame.data, SWITCH_RECOMMENDED_BUFFER_SIZE);
write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE;
- *bleg = NULL;
odata = strdup(bridgeto);
if (!odata) {