mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 03:20:57 +00:00
Add a compatibility option for upgrading realtime extensions
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@117986 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -53,6 +53,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
||||
|
||||
#define EXT_DATA_SIZE 256
|
||||
|
||||
/* If set to 0, translate commas to "\," and pipes to "," */
|
||||
static int compat16 = 1;
|
||||
|
||||
/* Realtime switch looks up extensions in the supplied realtime table.
|
||||
|
||||
@@ -176,8 +178,24 @@ static int realtime_exec(struct ast_channel *chan, const char *context, const ch
|
||||
for (v = var; v ; v = v->next) {
|
||||
if (!strcasecmp(v->name, "app"))
|
||||
app = ast_strdupa(v->value);
|
||||
else if (!strcasecmp(v->name, "appdata"))
|
||||
tmp = ast_strdupa(v->value);
|
||||
else if (!strcasecmp(v->name, "appdata")) {
|
||||
if (!compat16) {
|
||||
char *ptr;
|
||||
tmp = alloca(strlen(v->value) * 2 + 1);
|
||||
for (ptr = tmp; *v->value; v->value++) {
|
||||
if (*v->value == ',') {
|
||||
*ptr++ = '\\';
|
||||
*ptr++ = ',';
|
||||
} else if (*v->value == '|') {
|
||||
*ptr++ = ',';
|
||||
} else {
|
||||
*ptr++ = *v->value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
tmp = ast_strdupa(v->value);
|
||||
}
|
||||
}
|
||||
}
|
||||
ast_variables_destroy(var);
|
||||
if (!ast_strlen_zero(app)) {
|
||||
@@ -243,6 +261,18 @@ static int unload_module(void)
|
||||
|
||||
static int load_module(void)
|
||||
{
|
||||
struct ast_flags flags = { 0 };
|
||||
struct ast_config *cfg = ast_config_load("pbx_realtime.conf", flags);
|
||||
if (cfg) {
|
||||
const char *tmp = ast_variable_retrieve(cfg, "general", "compat");
|
||||
if (tmp && strncmp(tmp, "1.6", 3)) {
|
||||
compat16 = 0;
|
||||
} else {
|
||||
compat16 = 1;
|
||||
}
|
||||
ast_config_destroy(cfg);
|
||||
}
|
||||
|
||||
if (ast_register_switch(&realtime_switch))
|
||||
return AST_MODULE_LOAD_FAILURE;
|
||||
return AST_MODULE_LOAD_SUCCESS;
|
||||
|
Reference in New Issue
Block a user