#include <tr_cfgwatch.h>
#include <tr_comm.h>
#include <tr_config.h>
-#include <tr_gss.h>
+#include <tr_gss_names.h>
#include <tr_debug.h>
#include <tr_filter.h>
#include <trust_router/tr_constraint.h>
}
if (NULL != (jhname = json_object_get(jint, "hostname"))) {
if (json_is_string(jhname)) {
- trc->internal->hostname = json_string_value(jhname);
+ trc->internal->hostname = talloc_strdup(trc->internal, json_string_value(jhname));
} else {
tr_debug("tr_cfg_parse_internal: Parsing error, hostname is not a string.");
return TR_CFG_NOPARSE;
goto cleanup;
}
- trp_peer_set_server(new_peer, json_string_value(jhost));
+ trp_peer_set_server(new_peer, json_string_value(jhost)); /* string is strdup'ed in _set_server() */
if (jport==NULL)
trp_peer_set_port(new_peer, TRP_PORT);
else
* @param parse_fn Function to apply
* @return TR_CFG_SUCCESS on success, _FAIL or an error code on failure
*/
-static TR_CFG_RC tr_cfg_parse_helper(TR_CFG *cfg, json_t **jcfgs, size_t n_jcfg, TR_CFG_PARSE_FN parse_fn)
+static TR_CFG_RC tr_cfg_parse_helper(TR_CFG *cfg, unsigned int n_jcfg, json_t **jcfgs, TR_CFG_PARSE_FN parse_fn)
{
size_t ii=0;
json_t *this_jcfg=NULL;
TR_CFG_RC ret=TR_CFG_ERROR;
- /* TODO validate arguments */
+ if ((cfg==NULL) || (jcfgs==NULL) || (parse_fn==NULL))
+ return TR_CFG_ERROR;
for (ii=0; ii<n_jcfg; ii++) {
this_jcfg=jcfgs[ii];
cfg_mgr->new->peers=trp_ptable_new(cfg_mgr); /* not sure why this isn't in cfg_mgr->new's context */
/* now run through the parsers on the JSON */
- if ((TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, jcfgs, n_files, tr_cfg_parse_internal))) ||
- (TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, jcfgs, n_files, tr_cfg_parse_local_orgs))) ||
- (TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, jcfgs, n_files, tr_cfg_parse_peer_orgs))) ||
- (TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, jcfgs, n_files, tr_cfg_parse_default_servers))) ||
- (TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, jcfgs, n_files, tr_cfg_parse_comms))))
+ if ((TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, n_files, jcfgs, tr_cfg_parse_internal))) ||
+ (TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, n_files, jcfgs, tr_cfg_parse_local_orgs))) ||
+ (TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, n_files, jcfgs, tr_cfg_parse_peer_orgs))) ||
+ (TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, n_files, jcfgs, tr_cfg_parse_default_servers))) ||
+ (TR_CFG_SUCCESS != (cfg_rc=tr_cfg_parse_helper(cfg_mgr->new, n_files, jcfgs, tr_cfg_parse_comms))))
goto cleanup; /* cfg_rc was set above */
/* make sure we got a complete, consistent configuration */