mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 04:11:08 +00:00
Merge "chan_pjsip.c: Improve ast_request() diagnostic msgs." into 13
This commit is contained in:
@@ -2132,7 +2132,7 @@ static int request(void *obj)
|
|||||||
struct request_data *req_data = obj;
|
struct request_data *req_data = obj;
|
||||||
struct ast_sip_session *session = NULL;
|
struct ast_sip_session *session = NULL;
|
||||||
char *tmp = ast_strdupa(req_data->dest), *endpoint_name = NULL, *request_user = NULL;
|
char *tmp = ast_strdupa(req_data->dest), *endpoint_name = NULL, *request_user = NULL;
|
||||||
RAII_VAR(struct ast_sip_endpoint *, endpoint, NULL, ao2_cleanup);
|
struct ast_sip_endpoint *endpoint;
|
||||||
|
|
||||||
AST_DECLARE_APP_ARGS(args,
|
AST_DECLARE_APP_ARGS(args,
|
||||||
AST_APP_ARG(endpoint);
|
AST_APP_ARG(endpoint);
|
||||||
@@ -2157,10 +2157,18 @@ static int request(void *obj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ast_strlen_zero(endpoint_name)) {
|
if (ast_strlen_zero(endpoint_name)) {
|
||||||
ast_log(LOG_ERROR, "Unable to create PJSIP channel with empty endpoint name\n");
|
if (request_user) {
|
||||||
|
ast_log(LOG_ERROR, "Unable to create PJSIP channel with empty endpoint name: %s@<endpoint-name>\n",
|
||||||
|
request_user);
|
||||||
|
} else {
|
||||||
|
ast_log(LOG_ERROR, "Unable to create PJSIP channel with empty endpoint name\n");
|
||||||
|
}
|
||||||
req_data->cause = AST_CAUSE_CHANNEL_UNACCEPTABLE;
|
req_data->cause = AST_CAUSE_CHANNEL_UNACCEPTABLE;
|
||||||
return -1;
|
return -1;
|
||||||
} else if (!(endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", endpoint_name))) {
|
}
|
||||||
|
endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint",
|
||||||
|
endpoint_name);
|
||||||
|
if (!endpoint) {
|
||||||
ast_log(LOG_ERROR, "Unable to create PJSIP channel - endpoint '%s' was not found\n", endpoint_name);
|
ast_log(LOG_ERROR, "Unable to create PJSIP channel - endpoint '%s' was not found\n", endpoint_name);
|
||||||
req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION;
|
req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION;
|
||||||
return -1;
|
return -1;
|
||||||
@@ -2172,23 +2180,38 @@ static int request(void *obj)
|
|||||||
ast_log(LOG_ERROR, "Unable to create PJSIP channel with empty endpoint name\n");
|
ast_log(LOG_ERROR, "Unable to create PJSIP channel with empty endpoint name\n");
|
||||||
req_data->cause = AST_CAUSE_CHANNEL_UNACCEPTABLE;
|
req_data->cause = AST_CAUSE_CHANNEL_UNACCEPTABLE;
|
||||||
return -1;
|
return -1;
|
||||||
} else if (!(endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", endpoint_name))) {
|
}
|
||||||
|
endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint",
|
||||||
|
endpoint_name);
|
||||||
|
if (!endpoint) {
|
||||||
/* It seems it's not a multi-domain endpoint or single endpoint exact match,
|
/* It seems it's not a multi-domain endpoint or single endpoint exact match,
|
||||||
* it's possible that it's a SIP trunk with a specified user (user@trunkname),
|
* it's possible that it's a SIP trunk with a specified user (user@trunkname),
|
||||||
* so extract the user before @ sign.
|
* so extract the user before @ sign.
|
||||||
*/
|
*/
|
||||||
if ((endpoint_name = strchr(args.endpoint, '@'))) {
|
endpoint_name = strchr(args.endpoint, '@');
|
||||||
request_user = args.endpoint;
|
if (!endpoint_name) {
|
||||||
*endpoint_name++ = '\0';
|
/*
|
||||||
|
* Couldn't find an '@' so it had to be an endpoint
|
||||||
|
* name that doesn't exist.
|
||||||
|
*/
|
||||||
|
ast_log(LOG_ERROR, "Unable to create PJSIP channel - endpoint '%s' was not found\n",
|
||||||
|
args.endpoint);
|
||||||
|
req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
request_user = args.endpoint;
|
||||||
|
*endpoint_name++ = '\0';
|
||||||
|
|
||||||
if (ast_strlen_zero(endpoint_name)) {
|
if (ast_strlen_zero(endpoint_name)) {
|
||||||
ast_log(LOG_ERROR, "Unable to create PJSIP channel with empty endpoint name\n");
|
ast_log(LOG_ERROR, "Unable to create PJSIP channel with empty endpoint name: %s@<endpoint-name>\n",
|
||||||
|
request_user);
|
||||||
req_data->cause = AST_CAUSE_CHANNEL_UNACCEPTABLE;
|
req_data->cause = AST_CAUSE_CHANNEL_UNACCEPTABLE;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", endpoint_name))) {
|
endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint",
|
||||||
|
endpoint_name);
|
||||||
|
if (!endpoint) {
|
||||||
ast_log(LOG_ERROR, "Unable to create PJSIP channel - endpoint '%s' was not found\n", endpoint_name);
|
ast_log(LOG_ERROR, "Unable to create PJSIP channel - endpoint '%s' was not found\n", endpoint_name);
|
||||||
req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION;
|
req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION;
|
||||||
return -1;
|
return -1;
|
||||||
@@ -2196,7 +2219,10 @@ static int request(void *obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(session = ast_sip_session_create_outgoing(endpoint, NULL, args.aor, request_user, req_data->caps))) {
|
session = ast_sip_session_create_outgoing(endpoint, NULL, args.aor, request_user,
|
||||||
|
req_data->caps);
|
||||||
|
ao2_ref(endpoint, -1);
|
||||||
|
if (!session) {
|
||||||
ast_log(LOG_ERROR, "Failed to create outgoing session to endpoint '%s'\n", endpoint_name);
|
ast_log(LOG_ERROR, "Failed to create outgoing session to endpoint '%s'\n", endpoint_name);
|
||||||
req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION;
|
req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION;
|
||||||
return -1;
|
return -1;
|
||||||
|
Reference in New Issue
Block a user