mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Add a "message_context" option for PJSIP endpoints.
........ Merged revisions 411157 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@411158 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -26,6 +26,9 @@ PJSIP: | ||||
|    REGISTER requests for each contact that is registered. If using realtime for | ||||
|    PJSIP contacts, this means that the schema has been updated to add a user_agent | ||||
|    column. An alembic revision has been added to facilitate this update. | ||||
|   | ||||
|  - PJSIP endpoints now have a "message_context" option that can be used to determine | ||||
|    where to route incoming MESSAGE requests from the endpoint. | ||||
|  | ||||
| Realtime Configuration: | ||||
|  - PJSIP endpoint columns 'tos_audio' and 'tos_video' have been changed from yes/no | ||||
|   | ||||
| @@ -562,6 +562,8 @@ struct ast_sip_endpoint { | ||||
| 		AST_STRING_FIELD(fromuser); | ||||
| 		/*! Domain to place in From header */ | ||||
| 		AST_STRING_FIELD(fromdomain); | ||||
| 		/*! Context to route incoming MESSAGE requests to */ | ||||
| 		AST_STRING_FIELD(message_context); | ||||
| 	); | ||||
| 	/*! Configuration for extensions */ | ||||
| 	struct ast_sip_endpoint_extensions extensions; | ||||
|   | ||||
| @@ -685,6 +685,14 @@ | ||||
| 						multiple 'set_var'(s). | ||||
| 					</para></description> | ||||
| 				</configOption> | ||||
| 				<configOption name="message_context"> | ||||
| 					<synopsis>Context to route incoming MESSAGE requests to.</synopsis> | ||||
| 					<description><para> | ||||
| 						If specified, incoming MESSAGE requests will be routed to the indicated | ||||
| 						dialplan context. If no <replaceable>message_context</replaceable> is | ||||
| 						specified, then the <replaceable>context</replaceable> setting is used. | ||||
| 					</para></description> | ||||
| 				</configOption> | ||||
| 			</configObject> | ||||
| 			<configObject name="auth"> | ||||
| 				<synopsis>Authentication type</synopsis> | ||||
|   | ||||
| @@ -1723,6 +1723,7 @@ int ast_res_pjsip_initialize_configuration(const struct ast_module_info *ast_mod | ||||
| 	ast_sorcery_object_field_register(sip_sorcery, "endpoint", "srtp_tag_32", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, media.rtp.srtp_tag_32)); | ||||
| 	ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "redirect_method", "user", redirect_handler, NULL, NULL, 0, 0); | ||||
| 	ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "set_var", "", set_var_handler, set_var_to_str, set_var_to_vl, 0, 0); | ||||
| 	ast_sorcery_object_field_register(sip_sorcery, "endpoint", "message_context", "", OPT_STRINGFIELD_T, 1, STRFLDSET(struct ast_sip_endpoint, message_context)); | ||||
|  | ||||
| 	if (ast_sip_initialize_sorcery_transport()) { | ||||
| 		ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n"); | ||||
|   | ||||
| @@ -464,13 +464,14 @@ static enum pjsip_status_code rx_data_to_ast_msg(pjsip_rx_data *rdata, struct as | ||||
| 	const char *field; | ||||
| 	pjsip_status_code code; | ||||
| 	struct ast_sip_endpoint *endpt = ast_pjsip_rdata_get_endpoint(rdata); | ||||
| 	const char *context = S_OR(endpt->message_context, endpt->context); | ||||
|  | ||||
| 	/* make sure there is an appropriate context and extension*/ | ||||
| 	if ((code = get_destination(rdata, endpt->context, buf)) != PJSIP_SC_OK) { | ||||
| 	if ((code = get_destination(rdata, context, buf)) != PJSIP_SC_OK) { | ||||
| 		return code; | ||||
| 	} | ||||
|  | ||||
| 	CHECK_RES(ast_msg_set_context(msg, "%s", endpt->context)); | ||||
| 	CHECK_RES(ast_msg_set_context(msg, "%s", context)); | ||||
| 	CHECK_RES(ast_msg_set_exten(msg, "%s", buf)); | ||||
|  | ||||
| 	/* to header */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user