mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	Merge "res_pjsip: Added "subscribe_context" to endpoint"
This commit is contained in:
		
							
								
								
									
										11
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								CHANGES
									
									
									
									
									
								
							| @@ -360,6 +360,17 @@ cdr_csv | ||||
|    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'. | ||||
|  | ||||
|  | ||||
| ------------------------------------------------------------------------------ | ||||
| --- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ---------- | ||||
| ------------------------------------------------------------------------------ | ||||
|  | ||||
| res_pjsip | ||||
| ------------------ | ||||
|  * Added "subscribe_context" to endpoint. | ||||
|    If specified, incoming SUBSCRIBE requests will be searched for the matching | ||||
|    extension in the indicated context. If no "subscribe_context" is specified, | ||||
|    then the "context" setting is used. | ||||
|  | ||||
| ------------------------------------------------------------------------------ | ||||
| --- Functionality changes from Asterisk 13.9.0 to Asterisk 13.10.0 ----------- | ||||
| ------------------------------------------------------------------------------ | ||||
|   | ||||
| @@ -0,0 +1,21 @@ | ||||
| """pjsip_add_subscribe_context | ||||
|  | ||||
| Revision ID: 9deac0ae4717 | ||||
| Revises: ef7efc2d3964 | ||||
| Create Date: 2016-07-04 12:11:28.117788 | ||||
|  | ||||
| """ | ||||
|  | ||||
| # revision identifiers, used by Alembic. | ||||
| revision = '9deac0ae4717' | ||||
| down_revision = 'ef7efc2d3964' | ||||
|  | ||||
| from alembic import op | ||||
| import sqlalchemy as sa | ||||
|  | ||||
|  | ||||
| def upgrade(): | ||||
|     op.add_column('ps_endpoints', sa.Column('subscribe_context', sa.String(40))) | ||||
|  | ||||
| def downgrade(): | ||||
|     op.drop_column('ps_endpoints', 'subscribe_context') | ||||
| @@ -505,6 +505,8 @@ struct ast_sip_endpoint_subscription_configuration { | ||||
| 	unsigned int minexpiry; | ||||
| 	/*! Message waiting configuration */ | ||||
| 	struct ast_sip_mwi_configuration mwi; | ||||
| 	/* Context for SUBSCRIBE requests */ | ||||
| 	char context[AST_MAX_CONTEXT]; | ||||
| }; | ||||
|  | ||||
| /*! | ||||
|   | ||||
| @@ -900,6 +900,15 @@ | ||||
| 						mask with a slash ('/') | ||||
| 					</para></description> | ||||
| 				</configOption> | ||||
| 				<configOption name="subscribe_context"> | ||||
| 					<synopsis>Context for incoming MESSAGE requests.</synopsis> | ||||
| 					<description><para> | ||||
| 						If specified, incoming SUBSCRIBE requests will be searched for the matching | ||||
| 						extension in the indicated context. | ||||
| 						If no <replaceable>subscribe_context</replaceable> is specified, | ||||
| 						then the <replaceable>context</replaceable> setting is used. | ||||
| 					</para></description> | ||||
| 				</configOption> | ||||
| 			</configObject> | ||||
| 			<configObject name="auth"> | ||||
| 				<synopsis>Authentication type</synopsis> | ||||
| @@ -1964,6 +1973,9 @@ | ||||
| 				<parameter name="ActiveChannels"> | ||||
| 					<para>The number of active channels associated with this endpoint.</para> | ||||
| 				</parameter> | ||||
| 				<parameter name="SubscribeContext"> | ||||
| 					<para><xi:include xpointer="xpointer(/docs/configInfo[@name='res_pjsip']/configFile[@name='pjsip.conf']/configObject[@name='endpoint']/configOption[@name='subscribe_context']/synopsis/node())"/></para> | ||||
| 				</parameter> | ||||
| 			</syntax> | ||||
| 		</managerEventInstance> | ||||
| 	</managerEvent> | ||||
|   | ||||
| @@ -1859,6 +1859,7 @@ int ast_res_pjsip_initialize_configuration(void) | ||||
| 	ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "contact_deny", "", endpoint_acl_handler, NULL, NULL, 0, 0); | ||||
| 	ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "contact_permit", "", endpoint_acl_handler, NULL, NULL, 0, 0); | ||||
| 	ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "contact_acl", "", endpoint_acl_handler, contact_acl_to_str, NULL, 0, 0); | ||||
| 	ast_sorcery_object_field_register(sip_sorcery, "endpoint", "subscribe_context", "", OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct ast_sip_endpoint, subscription.context)); | ||||
|  | ||||
| 	if (ast_sip_initialize_sorcery_transport()) { | ||||
| 		ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n"); | ||||
|   | ||||
| @@ -412,9 +412,11 @@ static void subscription_shutdown(struct ast_sip_subscription *sub) | ||||
| static int new_subscribe(struct ast_sip_endpoint *endpoint, | ||||
| 		const char *resource) | ||||
| { | ||||
| 	if (!ast_exists_extension(NULL, endpoint->context, resource, PRIORITY_HINT, NULL)) { | ||||
| 	const char *context = S_OR(endpoint->subscription.context, endpoint->context); | ||||
|  | ||||
| 	if (!ast_exists_extension(NULL, context, resource, PRIORITY_HINT, NULL)) { | ||||
| 		ast_log(LOG_NOTICE, "Extension state subscription failed: Extension %s does not exist in context '%s' or has no associated hint\n", | ||||
| 			resource, endpoint->context); | ||||
| 			resource, context); | ||||
| 		return 404; | ||||
| 	} | ||||
|  | ||||
| @@ -432,7 +434,9 @@ static int subscription_established(struct ast_sip_subscription *sip_sub) | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	ast_copy_string(exten_state_sub->context, endpoint->context, sizeof(exten_state_sub->context)); | ||||
| 	ast_copy_string(exten_state_sub->context, | ||||
| 		S_OR(endpoint->subscription.context, endpoint->context), | ||||
| 		sizeof(exten_state_sub->context)); | ||||
| 	ast_copy_string(exten_state_sub->exten, resource, sizeof(exten_state_sub->exten)); | ||||
|  | ||||
| 	if ((exten_state_sub->id = ast_extension_state_add_destroy_extended( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user