mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	This fixes a problem with pattern ranges; and corrects a situation in res_features, where an extension would be created with the name Zap/51, as an example. THe / is bad because it would tend to mean that the 51 is to be cid matched.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89329 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -868,8 +868,10 @@ static void log_match_char_tree(struct match_char *node, char *prefix) | ||||
| static void cli_match_char_tree(struct match_char *node, char *prefix, int fd) | ||||
| { | ||||
| 	char my_prefix[1024]; | ||||
| 	 | ||||
| 	ast_cli(fd, "%s%s:%c:%d:%s%s\n", prefix, node->x, node->is_pattern ? 'Y':'N', node->specificity, node->exten? "EXTEN:":"", node->exten ? node->exten->exten : ""); | ||||
| 	if (strlen(node->x) > 1 ) | ||||
| 		ast_cli(fd, "%s[%s]:%c:%d:%s%s\n", prefix, node->x, node->is_pattern ? 'Y':'N', node->specificity, node->exten? "EXTEN:":"", node->exten ? node->exten->exten : ""); | ||||
| 	else | ||||
| 		ast_cli(fd, "%s%s:%c:%d:%s%s\n", prefix, node->x, node->is_pattern ? 'Y':'N', node->specificity, node->exten? "EXTEN:":"", node->exten ? node->exten->exten : ""); | ||||
| 	strcpy(my_prefix,prefix); | ||||
| 	strcat(my_prefix,"+       "); | ||||
| 	if (node->next_char) | ||||
| @@ -1084,6 +1086,7 @@ struct match_char *add_exten_to_pattern_tree(struct ast_context *con, struct ast | ||||
| 		if (pattern && *s1 == '[' && *(s1-1) != '\\') { | ||||
| 			char *s2 = buf; | ||||
| 			buf[0] = 0; | ||||
| 			s1++; /* get past the '[' */ | ||||
| 			while (*s1 != ']' && *(s1-1) != '\\' ) { | ||||
| 				if (*s1 == '\\') { | ||||
| 					if (*(s1+1) == ']') { | ||||
| @@ -1110,6 +1113,7 @@ struct match_char *add_exten_to_pattern_tree(struct ast_context *con, struct ast | ||||
| 					*s2++ = *s1++; | ||||
| 				} | ||||
| 			} | ||||
| 			*s2 = 0; /* null terminate the exploded range */ | ||||
| 			specif = strlen(buf); | ||||
| 		} else { | ||||
| 			if (*s1 == '\\') { | ||||
|   | ||||
| @@ -2104,8 +2104,15 @@ static void *do_parking_thread(void *ignore) | ||||
| 					} | ||||
| 					if (con) { | ||||
| 						char returnexten[AST_MAX_EXTENSION]; | ||||
| 						char peername_flat[AST_MAX_EXTENSION]; /* using something like Zap/52 for an extension name is NOT a good idea */ | ||||
| 						int i; | ||||
| 						ast_copy_string(peername_flat,peername,sizeof(peername_flat)); | ||||
| 						for(i=0; peername_flat[i] && i < AST_MAX_EXTENSION; i++) { | ||||
| 							if (peername_flat[i] == '/')  | ||||
| 								peername_flat[i]= '0'; | ||||
| 						} | ||||
| 						snprintf(returnexten, sizeof(returnexten), "%s,,t", peername); | ||||
| 						ast_add_extension2(con, 1, peername, 1, NULL, NULL, "Dial", ast_strdup(returnexten), ast_free_ptr, registrar); | ||||
| 						ast_add_extension2(con, 1, peername_flat, 1, NULL, NULL, "Dial", ast_strdup(returnexten), ast_free_ptr, registrar); | ||||
| 					} | ||||
| 					if (comebacktoorigin) {  | ||||
| 						set_c_e_p(chan, parking_con_dial, peername, 1); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user