mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	Merged revisions 235422 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r235422 | tilghman | 2009-12-17 11:19:08 -0600 (Thu, 17 Dec 2009) | 15 lines Merged revisions 235421 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r235421 | tilghman | 2009-12-17 11:17:51 -0600 (Thu, 17 Dec 2009) | 8 lines Use context from which Macro is executed, not macro context, if applicable. Also, ensure that the extension COULD match, not just that it won't match more. (closes issue #16113) Reported by: OrNix Patches: 20091216__issue16113.diff.txt uploaded by tilghman (license 14) Tested by: OrNix ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@235424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										16
									
								
								main/pbx.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								main/pbx.c
									
									
									
									
									
								
							| @@ -8238,8 +8238,16 @@ static int pbx_builtin_background(struct ast_channel *chan, void *data) | ||||
| 	if (ast_strlen_zero(args.lang)) | ||||
| 		args.lang = (char *)chan->language;	/* XXX this is const */ | ||||
|  | ||||
| 	if (ast_strlen_zero(args.context)) | ||||
| 		args.context = chan->context; | ||||
| 	if (ast_strlen_zero(args.context)) { | ||||
| 		const char *context; | ||||
| 		ast_channel_lock(chan); | ||||
| 		if ((context = pbx_builtin_getvar_helper(chan, "MACRO_CONTEXT"))) { | ||||
| 			args.context = ast_strdupa(context); | ||||
| 		} else { | ||||
| 			args.context = chan->context; | ||||
| 		} | ||||
| 		ast_channel_unlock(chan); | ||||
| 	} | ||||
|  | ||||
| 	if (args.options) { | ||||
| 		if (!strcasecmp(args.options, "skip")) | ||||
| @@ -8297,7 +8305,9 @@ static int pbx_builtin_background(struct ast_channel *chan, void *data) | ||||
| 	 * gone immediately to the "i" extension, but will now need to wait for a | ||||
| 	 * timeout. | ||||
| 	 */ | ||||
| 	if ((exten[0] = res) && !ast_matchmore_extension(chan, args.context, exten, 1, chan->cid.cid_num)) { | ||||
| 	if ((exten[0] = res) && | ||||
| 			ast_canmatch_extension(chan, args.context, exten, 1, chan->cid.cid_num) && | ||||
| 			!ast_matchmore_extension(chan, args.context, exten, 1, chan->cid.cid_num)) { | ||||
| 		snprintf(chan->exten, sizeof(chan->exten), "%c", res); | ||||
| 		ast_copy_string(chan->context, args.context, sizeof(chan->context)); | ||||
| 		chan->priority = 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user