diff options
author | Jason Parker <jparker@digium.com> | 2011-01-24 17:21:12 +0000 |
---|---|---|
committer | Jason Parker <jparker@digium.com> | 2011-01-24 17:21:12 +0000 |
commit | 54f6c31a27319d768da73afa966423e1083bb486 (patch) | |
tree | 5a5dedd5065b3ab2b3ba6609da56053b4bf66c2d /channels/chan_dahdi.c | |
parent | 1c6bb4c494e7e901838a3b2bb00536ffd0e1e170 (diff) |
Merged revisions 303467 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
................
r303467 | qwell | 2011-01-24 11:20:03 -0600 (Mon, 24 Jan 2011) | 22 lines
Merged revisions 303285 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r303285 | qwell | 2011-01-21 15:48:09 -0600 (Fri, 21 Jan 2011) | 15 lines
Merged revisions 303284 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r303284 | qwell | 2011-01-21 15:45:34 -0600 (Fri, 21 Jan 2011) | 8 lines
Reset configuration before parsing users.conf.
Some values configured in chan_dahdi.conf were able to leak in to users.conf
configuration. This was surprising users, and potentially setting non-sane
"defaults".
ASTNOW-125
........
................
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@303468 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_dahdi.c')
-rw-r--r-- | channels/chan_dahdi.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 4519294d6..dd3366ed4 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -17578,7 +17578,7 @@ static void deep_copy_dahdi_chan_conf(struct dahdi_chan_conf *dest, const struct * \retval 0 on success. * \retval -1 on error. */ -static int setup_dahdi_int(int reload, struct dahdi_chan_conf *base_conf, struct dahdi_chan_conf *conf) +static int setup_dahdi_int(int reload, struct dahdi_chan_conf *default_conf, struct dahdi_chan_conf *base_conf, struct dahdi_chan_conf *conf) { struct ast_config *cfg; struct ast_config *ucfg; @@ -17736,6 +17736,8 @@ static int setup_dahdi_int(int reload, struct dahdi_chan_conf *base_conf, struct if (ucfg) { const char *chans; + /* Reset base_conf, so things dont leak from dahdi_chan.conf */ + deep_copy_dahdi_chan_conf(base_conf, default_conf); process_dahdi(base_conf, "", ast_variable_browse(ucfg, "general"), 1, 0); for (cat = ast_category_browse(ucfg, NULL); cat ; cat = ast_category_browse(ucfg, cat)) { @@ -17822,14 +17824,16 @@ static int setup_dahdi_int(int reload, struct dahdi_chan_conf *base_conf, struct static int setup_dahdi(int reload) { int res; + struct dahdi_chan_conf default_conf = dahdi_chan_conf_default(); struct dahdi_chan_conf base_conf = dahdi_chan_conf_default(); struct dahdi_chan_conf conf = dahdi_chan_conf_default(); - if (base_conf.chan.cc_params && conf.chan.cc_params) { - res = setup_dahdi_int(reload, &base_conf, &conf); + if (default_conf.chan.cc_params && base_conf.chan.cc_params && conf.chan.cc_params) { + res = setup_dahdi_int(reload, &default_conf, &base_conf, &conf); } else { res = -1; } + ast_cc_config_params_destroy(default_conf.chan.cc_params); ast_cc_config_params_destroy(base_conf.chan.cc_params); ast_cc_config_params_destroy(conf.chan.cc_params); |