TT#14298 default values for missing leg tokens

- for acc src and dst leg tokens added since 3.x:
  lnp_prefix, user_out

Change-Id: I7bdf360bc372e797f58015a04938d5ac714e1bf2
changes/57/13657/2
Rene Krenn 9 years ago
parent ae963f41e9
commit fa5db1518b

42
cdr.c

@ -358,8 +358,15 @@ static int cdr_parse_srcleg(char *srcleg, cdr_entry_t *cdr)
tmp1 = strchr(tmp2, MED_SEP);
if(tmp1 == NULL)
{
syslog(LOG_WARNING, "Call-Id '%s' has no separated source lnp prefix, '%s'", cdr->call_id, tmp2);
return -1;
if (strict_leg_tokens) {
syslog(LOG_WARNING, "Call-Id '%s' has no separated source lnp prefix, '%s'", cdr->call_id, tmp2);
return -1;
} else {
cdr->source_lnp_prefix[0] = '\0';
cdr->source_user_out[0] = '\0';
syslog(LOG_WARNING, "Call-Id '%s' src leg has missing tokens (using empty lnp prefix, user out) '%s'", cdr->call_id, tmp2);
return 0;
}
}
*tmp1 = '\0';
g_strlcpy(cdr->source_lnp_prefix, tmp2, sizeof(cdr->source_lnp_prefix));
@ -368,8 +375,14 @@ static int cdr_parse_srcleg(char *srcleg, cdr_entry_t *cdr)
tmp1 = strchr(tmp2, MED_SEP);
if(tmp1 == NULL)
{
syslog(LOG_WARNING, "Call-Id '%s' has no separated source user out, '%s'", cdr->call_id, tmp2);
return -1;
if (strict_leg_tokens) {
syslog(LOG_WARNING, "Call-Id '%s' has no separated source user out, '%s'", cdr->call_id, tmp2);
return -1;
} else {
cdr->source_user_out[0] = '\0';
syslog(LOG_WARNING, "Call-Id '%s' src leg has missing tokens (using empty user out) '%s'", cdr->call_id, tmp2);
return 0;
}
}
*tmp1 = '\0';
g_strlcpy(cdr->source_user_out, tmp2, sizeof(cdr->source_user_out));
@ -513,8 +526,15 @@ static int cdr_parse_dstleg(char *dstleg, cdr_entry_t *cdr)
tmp1 = strchr(tmp2, MED_SEP);
if(tmp1 == NULL)
{
syslog(LOG_WARNING, "Call-Id '%s' has no separated destination lnp prefix, '%s'", cdr->call_id, tmp2);
return -1;
if (strict_leg_tokens) {
syslog(LOG_WARNING, "Call-Id '%s' has no separated destination lnp prefix, '%s'", cdr->call_id, tmp2);
return -1;
} else {
cdr->destination_lnp_prefix[0] = '\0';
cdr->destination_user_out[0] = '\0';
syslog(LOG_WARNING, "Call-Id '%s' dst leg has missing tokens (using empty lnp prefix, user out) '%s'", cdr->call_id, tmp2);
return 0;
}
}
*tmp1 = '\0';
g_strlcpy(cdr->destination_lnp_prefix, tmp2, sizeof(cdr->destination_lnp_prefix));
@ -523,8 +543,14 @@ static int cdr_parse_dstleg(char *dstleg, cdr_entry_t *cdr)
tmp1 = strchr(tmp2, MED_SEP);
if(tmp1 == NULL)
{
syslog(LOG_WARNING, "Call-Id '%s' has no separated destination user out, '%s'", cdr->call_id, tmp2);
return -1;
if (strict_leg_tokens) {
syslog(LOG_WARNING, "Call-Id '%s' has no separated destination user out, '%s'", cdr->call_id, tmp2);
return -1;
} else {
cdr->destination_user_out[0] = '\0';
syslog(LOG_WARNING, "Call-Id '%s' dst leg has missing tokens (using empty user out) '%s'", cdr->call_id, tmp2);
return 0;
}
}
*tmp1 = '\0';
g_strlcpy(cdr->destination_user_out, tmp2, sizeof(cdr->destination_user_out));

@ -34,6 +34,7 @@ unsigned int config_stats_port = MEDIATOR_DEFAULT_STATSPORT;
med_stats_period_t config_stats_period = MEDIATOR_DEFAULT_STATSPERIOD;
int config_maintenance = 0;
int strict_leg_tokens = 0;
static u_int8_t config_pid_path_free = 0;
@ -87,6 +88,7 @@ static void config_help(const char *self)
" -X\tThe stats db name (default = '%s').\n" \
" -x\tThe stats db period (default = '%d', 1=hour, 2=day, 3=month).\n" \
" -m\tMaintenance mode (do nothing, just sleep).\n" \
" -s\tStrict acc fields (move to trash otherwise).\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,
@ -100,7 +102,7 @@ int config_parse_cmdopts(int argc, char **argv)
{
int c;
while((c = getopt(argc, argv, "D:i:dl?h:u:p:b:o:H:U:P:B:O:S:T:R:A:N:Z:z:W:w:X:x:m")) != -1)
while((c = getopt(argc, argv, "D:i:dl?h:u:p:b:o:H:U:P:B:O:S:T:R:A:N:Z:z:W:w:X:x:m:s")) != -1)
{
if(c == '?')
{
@ -262,6 +264,10 @@ int config_parse_cmdopts(int argc, char **argv)
{
config_maintenance = 1;
}
else if(c == 's')
{
strict_leg_tokens = 1;
}
}
return 0;

@ -37,6 +37,7 @@ extern unsigned int config_interval;
extern u_int8_t config_dumpcdr;
extern int config_maintenance;
extern int strict_leg_tokens;
int config_parse_cmdopts(int argc, char **argv);
void config_cleanup();

Loading…
Cancel
Save