summaryrefslogtreecommitdiff
path: root/pbx
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2004-11-22 18:39:40 +0000
committerMark Spencer <markster@digium.com>2004-11-22 18:39:40 +0000
commita69c0016da8393e5a23b08a1e0a5527611d008e1 (patch)
tree342ac426b962fac14947a01cbd073139b3c9f1b9 /pbx
parent23c2d6b12cd988474aa59dae7ba902e3c0a8d82c (diff)
Realtime improvements
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'pbx')
-rwxr-xr-xpbx/pbx_realtime.c21
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;
}