1
0
Fork 0

minor changes to cfg-impl interface

This commit is contained in:
bagyenda 2008-11-12 16:48:47 +00:00
parent e370a86566
commit fcebda1812
5 changed files with 38 additions and 5 deletions

View File

@ -25,6 +25,7 @@ typedef struct mCfgImpFuncs {
mCfgGrp *(*get_multi_by_field)(mCfgImpl *cfg, Octstr *name, Octstr *field, Octstr *value);
Octstr *(*get)(mCfgImpl *cfg, mCfgGrp *grp, Octstr *name);
Octstr *(*get_grp_name)(mCfgImpl *, mCfgGrp *);
void (*destroy_grp)(mCfgImpl *cfg, mCfgGrp *);
} mCfgImpFuncs;

View File

@ -303,6 +303,14 @@ List *mms_cfg_get_multi(mCfg *cfg, Octstr *name)
return cfg->cfg_funcs->get_multi(cfg->xcfg, name);
}
void mms_cfg_destroy_grp(mCfg *cfg, mCfgGrp *grp)
{
gw_assert(cfg);
if (cfg->xcfg == NULL || cfg->cfg_funcs == NULL || cfg->cfg_funcs->destroy_grp == NULL)
return;
else
cfg->cfg_funcs->destroy_grp(cfg->xcfg, grp);
}
mCfgGrp *mms_get_multi_by_field(mCfg *cfg, Octstr *name, Octstr *field, Octstr *value)
{

View File

@ -36,6 +36,11 @@ List *mms_cfg_get_multi(mCfg *cfg,Octstr *name);
mCfgGrp *mms_get_multi_by_field(mCfg *cfg, Octstr *name, Octstr *field, Octstr *value);
/* Destroy a group object after user -- call this to cleanup memory used by group object
* always!
*/
void mms_cfg_destroy_grp(mCfg *, mCfgGrp *);
/* Get a string field value from a group. */
Octstr *mms_cfg_get(mCfg *cfg, mCfgGrp *grp, Octstr *name);

View File

@ -241,6 +241,8 @@ int mms_load_mmsbox_settings(Octstr *fname, gwthread_func_t *mmsc_handler_func)
u->rr_url = _mms_cfg_getx(cfg, x, octstr_imm("read-report-url"));
u->mmsc = mms_cfg_get(cfg, x, octstr_imm("mmsc"));
gwlist_append(sendmms_users, u);
mms_cfg_destroy_grp(cfg, x);
}
gwlist_destroy(l, NULL);
@ -252,8 +254,9 @@ int mms_load_mmsbox_settings(Octstr *fname, gwthread_func_t *mmsc_handler_func)
List *errors = gwlist_create();
List *warnings = gwlist_create();
Octstr *x;
mCfgGrp *xgrp = gwlist_get(l, i);
start_mmsc_from_conf(cfg, gwlist_get(l, i), mmsc_handler_func, errors, warnings);
start_mmsc_from_conf(cfg, xgrp, mmsc_handler_func, errors, warnings);
while ((x = gwlist_extract_first(errors)) != NULL) {
mms_error(0, "mmsbox", NULL, "%s", octstr_get_cstr(x));
@ -266,6 +269,8 @@ int mms_load_mmsbox_settings(Octstr *fname, gwthread_func_t *mmsc_handler_func)
}
gwlist_destroy(errors, NULL);
gwlist_destroy(warnings, NULL);
mms_cfg_destroy_grp(cfg, xgrp);
}
gwlist_destroy(l, NULL);
@ -409,6 +414,8 @@ int mms_load_mmsbox_settings(Octstr *fname, gwthread_func_t *mmsc_handler_func)
m->service_code = mms_cfg_get(cfg, x, octstr_imm("service-code"));
m->special_header = mms_cfg_get(cfg, x, octstr_imm("extra-reply-content-header"));
gwlist_append(mms_services, m);
mms_cfg_destroy_grp(cfg, x);
}
/* Finally load admin-port config and start the thingie */
@ -437,6 +444,8 @@ int mms_load_mmsbox_settings(Octstr *fname, gwthread_func_t *mmsc_handler_func)
gwlist_destroy(l, NULL);
octstr_destroy(gdir);
mms_cfg_destroy_grp(cfg, cgrp);
mms_cfg_destroy_grp(cfg, grp);
return 0;
}
@ -1017,7 +1026,8 @@ static void admin_handler(void *unused)
}
gwlist_destroy(e, (void *)octstr_destroy);
gwlist_destroy(w, (void *)octstr_destroy);
mms_cfg_destroy_grp(cfg, m);
}
} else if (octstr_str_case_compare(url, "/stop") == 0) {
Octstr *x;

View File

@ -319,8 +319,8 @@ MmscSettings *mms_load_mmsc_settings(Octstr *fname, List **proxyrelays)
List *e = gwlist_create();
List *w = gwlist_create();
Octstr *x;
mmsc_load_vasp_from_conf(m, gwlist_get(l, i), e, w);
mCfgGrp *xgrp = gwlist_get(l, i);
mmsc_load_vasp_from_conf(m, xgrp, e, w);
while ((x = gwlist_extract_first(e)) != NULL) {
mms_error(0, "mmsc", NULL, "%s", octstr_get_cstr(x));
@ -333,6 +333,8 @@ MmscSettings *mms_load_mmsc_settings(Octstr *fname, List **proxyrelays)
}
gwlist_destroy(e, NULL);
gwlist_destroy(w, NULL);
mms_cfg_destroy_grp(cfg, xgrp);
}
gwlist_destroy(l, NULL);
@ -361,6 +363,10 @@ MmscSettings *mms_load_mmsc_settings(Octstr *fname, List **proxyrelays)
} else if (m->admin_pass == NULL)
mms_warning(0, "mmsc", NULL, "Empty or no password supplied for admin port. All requests will be allowed!");
mms_cfg_destroy_grp(cfg, cgrp);
mms_cfg_destroy_grp(cfg, grp);
return m;
}
@ -546,6 +552,8 @@ List *mms_proxy_relays(mCfg *cfg, Octstr *myhostname)
mms_warning(0, "mmsc", NULL,"MMSC Config: Found MM4 Proxy %s with same hostname as local host!",
octstr_get_cstr(m->name));
gwlist_append(l, m);
mms_cfg_destroy_grp(cfg, grp);
}
gwlist_destroy(gl, NULL);
@ -975,7 +983,8 @@ static void admin_handler(MmscSettings *settings)
}
gwlist_destroy(e, (void *)octstr_destroy);
gwlist_destroy(w, (void *)octstr_destroy);
mms_cfg_destroy_grp(settings->cfg, m);
}
} else if (octstr_str_case_compare(url, "/stop") == 0) {
Octstr *x;