diff options
author | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2016-08-11 20:10:44 +0300 |
---|---|---|
committer | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2016-08-17 18:51:31 +0300 |
commit | 046069011bc618f578b625be9116b406d1d3c5e8 (patch) | |
tree | f5528391725c9017f4f76e4e4b510a75675b0d61 | |
parent | 57f4e4428a830c89436bf5025ca815a4e35776ac (diff) |
followme: initialize all config items on reload
Some configuration directives were not initialized on reload, and hence
were not reset to default if they were removed from followme.conf.
ASTERISK-26288 #close
Change-Id: Ief829e16374ad1e0ecfd63e6ee4923b5a1d1c150
-rw-r--r-- | apps/app_followme.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/apps/app_followme.c b/apps/app_followme.c index a955843bc..938e63ec4 100644 --- a/apps/app_followme.c +++ b/apps/app_followme.c @@ -316,9 +316,17 @@ static struct call_followme *alloc_profile(const char *fmname) ast_mutex_init(&f->lock); ast_copy_string(f->name, fmname, sizeof(f->name)); - f->moh[0] = '\0'; - f->context[0] = '\0'; + AST_LIST_HEAD_INIT_NOLOCK(&f->numbers); + AST_LIST_HEAD_INIT_NOLOCK(&f->blnumbers); + AST_LIST_HEAD_INIT_NOLOCK(&f->wlnumbers); + return f; +} + +static void init_profile(struct call_followme *f, int activate) +{ f->enable_callee_prompt = enable_callee_prompt; + f->context[0] = '\0'; + ast_copy_string(f->moh, defaultmoh, sizeof(f->moh)); ast_copy_string(f->takecall, takecall, sizeof(f->takecall)); ast_copy_string(f->nextindp, nextindp, sizeof(f->nextindp)); ast_copy_string(f->callfromprompt, callfromprompt, sizeof(f->callfromprompt)); @@ -327,16 +335,9 @@ static struct call_followme *alloc_profile(const char *fmname) ast_copy_string(f->plsholdprompt, plsholdprompt, sizeof(f->plsholdprompt)); ast_copy_string(f->statusprompt, statusprompt, sizeof(f->statusprompt)); ast_copy_string(f->sorryprompt, sorryprompt, sizeof(f->sorryprompt)); - AST_LIST_HEAD_INIT_NOLOCK(&f->numbers); - AST_LIST_HEAD_INIT_NOLOCK(&f->blnumbers); - AST_LIST_HEAD_INIT_NOLOCK(&f->wlnumbers); - return f; -} - -static void init_profile(struct call_followme *f) -{ - f->active = 1; - ast_copy_string(f->moh, defaultmoh, sizeof(f->moh)); + if (activate) { + f->active = 1; + } } @@ -518,7 +519,7 @@ static int reload_followme(int reload) if (!new) ast_mutex_lock(&f->lock); /* Re-initialize the profile */ - init_profile(f); + init_profile(f, 1); free_numbers(f); var = ast_variable_browse(cfg, cat); while (var) { @@ -1248,6 +1249,7 @@ static struct call_followme *find_realtime(const char *name) ast_free(str); return NULL; } + init_profile(new_follower, 0); for (v = var; v; v = v->next) { if (!strcasecmp(v->name, "active")) { |