Use a dedicated connection for provisioning/billing db queries.

trunk@3605
Andreas Granig 16 years ago
parent f2f85f5ebe
commit 9a1393a56d

@ -20,6 +20,12 @@ char *config_cdr_pass = MEDIATOR_DEFAULT_CDRPASS;
char *config_cdr_db = MEDIATOR_DEFAULT_CDRDB;
unsigned int config_cdr_port = MEDIATOR_DEFAULT_CDRPORT;
char *config_prov_host = MEDIATOR_DEFAULT_PROVHOST;
char *config_prov_user = MEDIATOR_DEFAULT_PROVUSER;
char *config_prov_pass = MEDIATOR_DEFAULT_PROVPASS;
char *config_prov_db = MEDIATOR_DEFAULT_PROVDB;
unsigned int config_prov_port = MEDIATOR_DEFAULT_PROVPORT;
static u_int8_t config_pid_path_free = 0;
static u_int8_t config_med_host_free = 0;
@ -35,7 +41,7 @@ static u_int8_t config_cdr_db_free = 0;
static void config_help(const char *self)
{
printf("mediator 1.0 - Creates call detail records from SER accounting.\n" \
printf("mediator 1.2.0 - Creates call detail records from OpenSER accounting.\n" \
"Usage: %s [-?] [-d] [-D pidpath]\n" \
" -D\tThe path of the PID file (default = '%s').\n" \
" -d\tEnables daemonization of the process (default = disabled).\n" \
@ -51,10 +57,16 @@ static void config_help(const char *self)
" -U\tThe CDR db user (default = '%s').\n" \
" -P\tThe CDR db pass (default = '%s').\n" \
" -B\tThe CDR db name (default = '%s').\n" \
" -S\tThe prov db host (default = '%s').\n" \
" -T\tThe prov db port (default = '%d').\n" \
" -R\tThe prov db user (default = '%s').\n" \
" -A\tThe prov db pass (default = '%s').\n" \
" -N\tThe prov db name (default = '%s').\n" \
" -?\tDisplays this message.\n",
self, config_pid_path, config_interval,
config_med_host, config_med_port, config_med_user, config_med_pass, config_med_db,
config_cdr_host, config_cdr_port, config_cdr_user, config_cdr_pass, config_cdr_db);
config_cdr_host, config_cdr_port, config_cdr_user, config_cdr_pass, config_cdr_db,
config_prov_host, config_prov_port, config_prov_user, config_prov_pass, config_prov_db);
}
int config_parse_cmdopts(int argc, char **argv)

@ -20,6 +20,12 @@ extern char *config_cdr_user;
extern char *config_cdr_pass;
extern char *config_cdr_db;
extern char *config_prov_host;
extern unsigned int config_prov_port;
extern char *config_prov_user;
extern char *config_prov_pass;
extern char *config_prov_db;
extern unsigned int config_interval;
extern u_int8_t config_dumpcdr;

@ -32,6 +32,12 @@
#define MEDIATOR_DEFAULT_CDRDB "accounting"
#define MEDIATOR_DEFAULT_CDRPORT 0
#define MEDIATOR_DEFAULT_PROVHOST "localhost"
#define MEDIATOR_DEFAULT_PROVUSER "mediator"
#define MEDIATOR_DEFAULT_PROVPASS "GimmeAllUr$$$"
#define MEDIATOR_DEFAULT_PROVDB "provisioning"
#define MEDIATOR_DEFAULT_PROVPORT 0
#define MED_GW_STRING "gw"
#define MED_AS_STRING "as"
#define MED_PEER_STRING "peer"

@ -21,6 +21,7 @@
static MYSQL *cdr_handler = NULL;
static MYSQL *med_handler = NULL;
static MYSQL *prov_handler = NULL;
/**********************************************************************/
int medmysql_init()
@ -55,6 +56,20 @@ int medmysql_init()
syslog(LOG_CRIT, "Error setting reconnect-option for ACC db: %s", mysql_error(med_handler));
goto err;
}
prov_handler = mysql_init(NULL);
if(!mysql_real_connect(prov_handler,
config_prov_host, config_prov_user, config_prov_pass,
config_prov_db, config_prov_port, NULL, 0))
{
syslog(LOG_CRIT, "Error connecting to provisioning db: %s", mysql_error(prov_handler));
goto err;
}
if(mysql_options(prov_handler, MYSQL_OPT_RECONNECT, &recon) != 0)
{
syslog(LOG_CRIT, "Error setting reconnect-option for provisioning db: %s", mysql_error(prov_handler));
goto err;
}
return 0;
@ -76,6 +91,11 @@ void medmysql_cleanup()
mysql_close(med_handler);
med_handler = NULL;
}
if(prov_handler != NULL)
{
mysql_close(prov_handler);
prov_handler = NULL;
}
}
/**********************************************************************/
@ -359,14 +379,14 @@ int medmysql_load_maps(GHashTable *host_table, GHashTable *ip_table)
snprintf(query, sizeof(query), MED_LOAD_PEER_QUERY);
/* syslog(LOG_DEBUG, "q='%s'", query); */
if(mysql_real_query(med_handler, query, strlen(query)) != 0)
if(mysql_real_query(prov_handler, query, strlen(query)) != 0)
{
syslog(LOG_CRIT, "Error loading peer hosts: %s",
mysql_error(med_handler));
mysql_error(prov_handler));
return -1;
}
res = mysql_store_result(med_handler);
res = mysql_store_result(prov_handler);
while((row = mysql_fetch_row(res)) != NULL)
{
@ -439,14 +459,14 @@ int medmysql_load_uuids(GHashTable *uuid_table)
snprintf(query, sizeof(query), MED_LOAD_UUID_QUERY);
/* syslog(LOG_DEBUG, "q='%s'", query); */
if(mysql_real_query(med_handler, query, strlen(query)) != 0)
if(mysql_real_query(prov_handler, query, strlen(query)) != 0)
{
syslog(LOG_CRIT, "Error loading uuids: %s",
mysql_error(med_handler));
mysql_error(prov_handler));
return -1;
}
res = mysql_store_result(med_handler);
res = mysql_store_result(prov_handler);
while((row = mysql_fetch_row(res)) != NULL)
{

Loading…
Cancel
Save