mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	pbx_builtin: Properly handle hangup during Background
Before this patch, when a user hung up during a Background, we would stuff 0xff into a char and attempt a dialplan lookup of it. This caused problems for some realtime engines which interpreted the value as the beginning of an invalid UTF-8 sequence. ASTERISK-19291 #close Reported by: Andrew Nowrot Change-Id: I8ca6da93252d61c76ebdb46a4aa65e73ca985358
This commit is contained in:
		| @@ -1111,6 +1111,13 @@ static int pbx_builtin_background(struct ast_channel *chan, const char *data) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/* If ast_waitstream didn't give us back a digit, there is nothing else to do */ | ||||
| 	if (res <= 0) { | ||||
| 		goto done; | ||||
| 	} | ||||
|  | ||||
| 	exten[0] = res; | ||||
|  | ||||
| 	/* | ||||
| 	 * If the single digit DTMF is an extension in the specified context, then | ||||
| 	 * go there and signal no DTMF.  Otherwise, we should exit with that DTMF. | ||||
| @@ -1130,7 +1137,6 @@ static int pbx_builtin_background(struct ast_channel *chan, const char *data) | ||||
| 	 * be returned (see #16434). | ||||
| 	 */ | ||||
| 	if (!ast_test_flag(ast_channel_flags(chan), AST_FLAG_DISABLE_WORKAROUNDS) | ||||
| 		&& (exten[0] = res) | ||||
| 		&& ast_canmatch_extension(chan, args.context, exten, 1, | ||||
| 			S_COR(ast_channel_caller(chan)->id.number.valid, ast_channel_caller(chan)->id.number.str, NULL)) | ||||
| 		&& !ast_matchmore_extension(chan, args.context, exten, 1, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user