mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +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)) | 	if (ast_strlen_zero(args.lang)) | ||||||
| 		args.lang = (char *)chan->language;	/* XXX this is const */ | 		args.lang = (char *)chan->language;	/* XXX this is const */ | ||||||
|  |  | ||||||
| 	if (ast_strlen_zero(args.context)) | 	if (ast_strlen_zero(args.context)) { | ||||||
| 		args.context = chan->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 (args.options) { | ||||||
| 		if (!strcasecmp(args.options, "skip")) | 		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 | 	 * gone immediately to the "i" extension, but will now need to wait for a | ||||||
| 	 * timeout. | 	 * 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); | 		snprintf(chan->exten, sizeof(chan->exten), "%c", res); | ||||||
| 		ast_copy_string(chan->context, args.context, sizeof(chan->context)); | 		ast_copy_string(chan->context, args.context, sizeof(chan->context)); | ||||||
| 		chan->priority = 0; | 		chan->priority = 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user