diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-11-22 18:39:40 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-11-22 18:39:40 +0000 |
commit | 64355621602d650748c1eb196e696f2898b99e16 (patch) | |
tree | 342ac426b962fac14947a01cbd073139b3c9f1b9 /pbx | |
parent | 2c475b6f0e258017bc88ca63ee94ca7b03931baa (diff) |
Realtime improvements
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4314 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rwxr-xr-x | pbx/pbx_realtime.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/pbx/pbx_realtime.c b/pbx/pbx_realtime.c index 453f33619..5a828f44a 100755 --- a/pbx/pbx_realtime.c +++ b/pbx/pbx_realtime.c @@ -87,9 +87,24 @@ static struct ast_variable *realtime_switch_common(const char *table, const char { struct ast_variable *var; char pri[20]; + char *ematch; + char rexten[AST_MAX_EXTENSION + 20]=""; snprintf(pri, sizeof(pri), "%d", priority); - printf("%s/%s/%s/%s exists\n", table, context, exten, pri); - var = ast_load_realtime(table, "context", context, "exten", exten, "priority", pri, NULL); + switch(mode) { + case MODE_MATCHMORE: + ematch = "exten LIKE"; + snprintf(rexten, sizeof(rexten), "%s_%%", exten); + break; + case MODE_CANMATCH: + ematch = "exten LIKE"; + snprintf(rexten, sizeof(rexten), "%s%%", exten); + break; + case MODE_MATCH: + default: + ematch = "exten"; + strncpy(rexten, exten, sizeof(rexten) - 1); + } + var = ast_load_realtime(table, "context", context, ematch, rexten, "priority", pri, NULL); return var; } @@ -143,6 +158,8 @@ static int realtime_matchmore(struct ast_channel *chan, const char *context, con { REALTIME_COMMON(MODE_MATCHMORE); if (var) ast_destroy_realtime(var); + if (var) + res = 1; return res > 0 ? res : 0; } |