mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	chan_pjsip.c: Improve ast_request() diagnostic msgs.
Attempting to dial PJSIP/endpoint when the endpoint doesn't exist and disable_multi_domain=no results in a misleading empty endpoint name message. The message should say the endpoint was not found. * Added missing endpoint not found message. * Added more information to the empty endpoint name msgs if available. * Eliminated RAII_VAR in request(). Change-Id: I21da85ebd62dcc32115b2ffcb5157416ebae51e4
This commit is contained in:
		| @@ -2132,7 +2132,7 @@ static int request(void *obj) | ||||
| 	struct request_data *req_data = obj; | ||||
| 	struct ast_sip_session *session = 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_APP_ARG(endpoint); | ||||
| @@ -2157,10 +2157,18 @@ static int request(void *obj) | ||||
| 		} | ||||
|  | ||||
| 		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; | ||||
| 			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); | ||||
| 			req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION; | ||||
| 			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"); | ||||
| 			req_data->cause = AST_CAUSE_CHANNEL_UNACCEPTABLE; | ||||
| 			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's possible that it's a SIP trunk with a specified user (user@trunkname), | ||||
| 			 * so extract the user before @ sign. | ||||
| 			 */ | ||||
| 			if ((endpoint_name = strchr(args.endpoint, '@'))) { | ||||
| 				request_user = args.endpoint; | ||||
| 				*endpoint_name++ = '\0'; | ||||
| 			endpoint_name = strchr(args.endpoint, '@'); | ||||
| 			if (!endpoint_name) { | ||||
| 				/* | ||||
| 				 * 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)) { | ||||
| 				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; | ||||
| 				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); | ||||
| 				req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION; | ||||
| 				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); | ||||
| 		req_data->cause = AST_CAUSE_NO_ROUTE_DESTINATION; | ||||
| 		return -1; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user