fix parse err in originate code
This commit is contained in:
parent
7898679b20
commit
1fba654845
|
@ -92,6 +92,47 @@ static inline switch_bool_t switch_is_moh(const char *s)
|
||||||
return SWITCH_TRUE;
|
return SWITCH_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* find a character (find) in a string (in) and return a pointer to that point in the string where the character was found
|
||||||
|
using the array (allowed) as allowed non-matching characters, when (allowed) is NULL, behaviour should be identical to strchr()
|
||||||
|
*/
|
||||||
|
static inline char *switch_strchr_strict(const char *in, char find, const char *allowed)
|
||||||
|
{
|
||||||
|
const char *p;
|
||||||
|
|
||||||
|
switch_assert(in);
|
||||||
|
|
||||||
|
p = in;
|
||||||
|
|
||||||
|
while(p && *p) {
|
||||||
|
const char *a = allowed;
|
||||||
|
int found = 0;
|
||||||
|
|
||||||
|
if (!a) {
|
||||||
|
found = 1;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
while(a && *a) {
|
||||||
|
|
||||||
|
if (*p == *a) {
|
||||||
|
found = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
a++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found) return NULL;
|
||||||
|
|
||||||
|
if (*p == find) break;
|
||||||
|
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (char *) p;
|
||||||
|
}
|
||||||
|
|
||||||
#define switch_arraylen(_a) (sizeof(_a) / sizeof(_a[0]))
|
#define switch_arraylen(_a) (sizeof(_a) / sizeof(_a[0]))
|
||||||
#define switch_split(_data, _delim, _array) switch_separate_string(_data, _delim, _array, switch_arraylen(_array))
|
#define switch_split(_data, _delim, _array) switch_separate_string(_data, _delim, _array, switch_arraylen(_array))
|
||||||
|
|
||||||
|
|
|
@ -1064,7 +1064,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a,
|
||||||
|
|
||||||
check_a = end;
|
check_a = end;
|
||||||
|
|
||||||
while (check_a && (check_b = strchr(check_a, a))) {
|
while (check_a && (check_b = switch_strchr_strict(check_a, a, " "))) {
|
||||||
if ((check_b = switch_find_end_paren(check_b, a, b))) {
|
if ((check_b = switch_find_end_paren(check_b, a, b))) {
|
||||||
check_a = check_b;
|
check_a = check_b;
|
||||||
}
|
}
|
||||||
|
@ -1090,7 +1090,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a,
|
||||||
char *pnext;
|
char *pnext;
|
||||||
*next++ = '\0';
|
*next++ = '\0';
|
||||||
|
|
||||||
if ((pnext = strchr(next, a))) {
|
if ((pnext = switch_strchr_strict(next, a, " "))) {
|
||||||
next = pnext + 1;
|
next = pnext + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2313,7 +2313,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p == end) {
|
if (p == end) {
|
||||||
end = strchr(p, '[');
|
end = switch_strchr_strict(p, '[', " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
p++;
|
p++;
|
||||||
|
@ -2537,7 +2537,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
|
||||||
current_variable = NULL;
|
current_variable = NULL;
|
||||||
switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "originate_early_media", oglobals.early_ok ? "true" : "false");
|
switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "originate_early_media", oglobals.early_ok ? "true" : "false");
|
||||||
|
|
||||||
|
printf("ASS %s\n", vdata);
|
||||||
if (vdata) {
|
if (vdata) {
|
||||||
char *var_array[1024] = { 0 };
|
char *var_array[1024] = { 0 };
|
||||||
int var_count = 0;
|
int var_count = 0;
|
||||||
|
@ -2552,7 +2552,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
|
||||||
char *pnext;
|
char *pnext;
|
||||||
*next++ = '\0';
|
*next++ = '\0';
|
||||||
|
|
||||||
if ((pnext = strchr(next, '['))) {
|
if ((pnext = switch_strchr_strict(next, '[', " "))) {
|
||||||
next = pnext + 1;
|
next = pnext + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue