Skip to content
Snippets Groups Projects
Commit e79f0c07 authored by Jenkins2's avatar Jenkins2 Committed by Gerrit Code Review
Browse files

Merge "chan_pjsip.c: Improve ast_request() diagnostic msgs."

parents f2d23e86 4a461bcd
No related branches found
No related tags found
No related merge requests found
...@@ -2381,7 +2381,7 @@ static int request(void *obj) ...@@ -2381,7 +2381,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);
...@@ -2406,10 +2406,18 @@ static int request(void *obj) ...@@ -2406,10 +2406,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;
...@@ -2421,23 +2429,38 @@ static int request(void *obj) ...@@ -2421,23 +2429,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;
...@@ -2445,7 +2468,10 @@ static int request(void *obj) ...@@ -2445,7 +2468,10 @@ static int request(void *obj)
} }
} }
if (!(session = ast_sip_session_create_outgoing(endpoint, NULL, args.aor, request_user, req_data->topology))) { session = ast_sip_session_create_outgoing(endpoint, NULL, args.aor, request_user,
req_data->topology);
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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment