All pastes #592898 Raw Edit

Someone

public text v1 · immutable
#592898 ·published 2007-06-28 00:06 UTC
rendered paste body

static switch_status_t do_config(void)
{
	char *cf = "xml_cdr.conf";
	switch_xml_t cfg, xml, settings, param;

	if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf);
		return SWITCH_STATUS_TERM;
	}

	if ((settings = switch_xml_child(cfg, "settings"))) {
		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
			char *var = (char *) switch_xml_attr_soft(param, "name");
			char *val = (char *) switch_xml_attr_soft(param, "value");

			if (!strcasecmp(var, "cred")) {
				globals.cred = val;
			} else if (!strcasecmp(var, "url")) {
				globals.url = val;
			} else if (!strcasecmp(var, "delay")) {
				globals.delay = (uint32_t) atoi(val);
			} else if (!strcasecmp(var, "retries")) {
				globals.retries = (uint32_t) atoi(val);
			} else if (!strcasecmp(var, "logDir")) {
				if (switch_strlen_zero(val)) {
					globals.logDir = SWITCH_GLOBAL_dirs.log_dir;
				} else {
					globals.logDir = val;
				}
			} else if (!strcasecmp(var, "errLogDir")) {
				globals.errLogDir = val;
			}

		}
	}
	if(globals.retries < 0) {
		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "retries is negative, setting to 0\n");
		globals.retries = 0;
	}


	if(globals.retries && globals.delay<=0) {
		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "retries set but delay 0 setting to 5000ms\n");
		globals.delay = 5000;
	}

	if(!switch_strlen_zero(globals.url) && switch_strlen_zero(globals.errLogDir)) {
		if ((globals.errLogDir = switch_mprintf("%s/xml_cdr", SWITCH_GLOBAL_dirs.log_dir))) {
			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
			return SWITCH_STATUS_FALSE;
		}
	}

	return SWITCH_STATUS_SUCCESS;
}