MT#55283 scale silent-timeout

Change-Id: I111628b82110df3b37922c2aeffae401abf782f8
pull/1855/merge
Richard Fuchs 1 week ago
parent 27992a3f12
commit 9061ce05be

@ -240,7 +240,7 @@ no_sfd:
check = atomic_get_na(&rtpe_config.timeout) * 1000000LL; // XXX scale to micro
tmp_t_reason = TIMEOUT;
if (!MEDIA_ISSET(ps->media, RECV) || !sfd) {
check = atomic_get_na(&rtpe_config.silent_timeout) * 1000000LL; // XXX scale to micro
check = atomic_get_na(&rtpe_config.silent_timeout_us);
tmp_t_reason = SILENT_TIMEOUT;
}
else if (!PS_ISSET(ps, FILLED)) {

@ -420,7 +420,7 @@ str call_query_udp(char **out) {
rwlock_unlock_w(&c->master_lock);
ret = str_sprintf("%s %" PRId64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 "\n", out[RE_UDP_COOKIE],
atomic_get_na(&rtpe_config.silent_timeout) * 1000000L - (rtpe_now - stats.last_packet_us), // XXX scale to micro
atomic_get_na(&rtpe_config.silent_timeout_us) - (rtpe_now - stats.last_packet_us),
atomic64_get_na(&stats.totals[0].packets), atomic64_get_na(&stats.totals[1].packets),
atomic64_get_na(&stats.totals[2].packets), atomic64_get_na(&stats.totals[3].packets));
goto out;

@ -411,8 +411,8 @@ RTPE_CONFIG_BOOL_PARAMS
RTPE_CONFIG_ENUM_PARAMS
#undef X
#define X(s) cw->cw_printf(cw, #s " = %" PRIu64"\n", initial_rtpe_config.s);
RTPE_CONFIG_UINT64_PARAMS
#define X(s) cw->cw_printf(cw, #s " = %" PRId64"\n", initial_rtpe_config.s);
RTPE_CONFIG_INT64_PARAMS
#undef X
cw->cw_printf(cw, "[max-cpu = %.1f]\n"
@ -463,8 +463,8 @@ RTPE_CONFIG_BOOL_PARAMS
RTPE_CONFIG_ENUM_PARAMS
#undef X
#define X(s) cw->cw_printf(cw, #s " = %" PRIu64"\n", rtpe_config.s);
RTPE_CONFIG_UINT64_PARAMS
#define X(s) cw->cw_printf(cw, #s " = %" PRId64"\n", rtpe_config.s);
RTPE_CONFIG_INT64_PARAMS
#undef X
cw->cw_printf(cw, "[max-cpu = %.1f]\n"
@ -515,7 +515,7 @@ RTPE_CONFIG_ENDPOINT_QUEUE_PARAMS
X(load_limit, "max-load") \
X(bw_limit, "max-bw") \
X(timeout, "timeout") \
X(silent_timeout, "silent-timeout") \
X(silent_timeout_us, "silent-timeout") \
X(final_timeout, "final-timeout") \
X(control_tos, "control-tos") \
X(redis_allowed_errors, "redis_allowed_errors") \
@ -654,7 +654,7 @@ static void cli_incoming_list_timeout(str *instr, struct cli_writer *cw, const c
cw->cw_printf(cw, "TIMEOUT=%u\n", rtpe_config.timeout);
}
static void cli_incoming_list_silenttimeout(str *instr, struct cli_writer *cw, const cli_handler_t *handler) {
cw->cw_printf(cw, "SILENT_TIMEOUT=%u\n", rtpe_config.silent_timeout);
cw->cw_printf(cw, "SILENT_TIMEOUT=%" PRId64 "\n", rtpe_config.silent_timeout_us / 1000000L);
}
static void cli_incoming_list_finaltimeout(str *instr, struct cli_writer *cw, const cli_handler_t *handler) {
cw->cw_printf(cw, "FINAL_TIMEOUT=%u\n", rtpe_config.final_timeout);
@ -1053,11 +1053,35 @@ static void cli_incoming_set_gentimeout(str *instr, struct cli_writer *cw, int *
}
}
static void cli_incoming_set_gentimeout_us(str *instr, struct cli_writer *cw, int64_t *conf_timeout) {
long timeout_num;
char *endptr;
if (instr->len == 0) {
cw->cw_printf(cw, "More parameters required.\n");
return;
}
errno = 0;
timeout_num = strtol(instr->s, &endptr, 10);
if ((errno == ERANGE && (timeout_num == ULONG_MAX)) || (errno != 0 && timeout_num == 0) || timeout_num < 0 || timeout_num >= INT_MAX) {
cw->cw_printf(cw, "Fail setting timeout to %s; errno=%d\n", instr->s, errno);
return;
} else if (endptr == instr->s) {
cw->cw_printf(cw, "Fail setting timeout to %s; no digits found\n", instr->s);
return;
} else {
atomic_set_na(conf_timeout, timeout_num * 1000000LL);
cw->cw_printf(cw, "Success setting timeout to %lu\n", timeout_num);
}
}
static void cli_incoming_set_timeout(str *instr, struct cli_writer *cw, const cli_handler_t *handler) {
cli_incoming_set_gentimeout(instr, cw, &rtpe_config.timeout);
}
static void cli_incoming_set_silenttimeout(str *instr, struct cli_writer *cw, const cli_handler_t *handler) {
cli_incoming_set_gentimeout(instr, cw, &rtpe_config.silent_timeout);
cli_incoming_set_gentimeout_us(instr, cw, &rtpe_config.silent_timeout_us);
}
static void cli_incoming_set_finaltimeout(str *instr, struct cli_writer *cw, const cli_handler_t *handler) {
cli_incoming_set_gentimeout(instr, cw, &rtpe_config.final_timeout);

@ -672,6 +672,7 @@ static void options(int *argc, char ***argv, charp_ht templates) {
g_autoptr(char) templates_section = NULL;
g_autoptr(char) interfaces_config = NULL;
g_autoptr(char) transcode_config = NULL;
int silent_timeout = 0;
GOptionEntry e[] = {
{ "table", 't', 0, G_OPTION_ARG_INT, &rtpe_config.kernel_table, "Kernel table to use", "INT" },
@ -703,7 +704,7 @@ static void options(int *argc, char ***argv, charp_ht templates) {
{ "control-tos",0 , 0, G_OPTION_ARG_INT, &rtpe_config.control_tos, "Default TOS value to set on control-ng", "INT" },
{ "control-pmtu", 0,0, G_OPTION_ARG_STRING, &control_pmtu, "Path MTU discovery behaviour on UDP control sockets", "want|dont" },
{ "timeout", 'o', 0, G_OPTION_ARG_INT, &rtpe_config.timeout, "RTP timeout", "SECS" },
{ "silent-timeout",'s',0,G_OPTION_ARG_INT, &rtpe_config.silent_timeout,"RTP timeout for muted", "SECS" },
{ "silent-timeout",'s',0,G_OPTION_ARG_INT, &silent_timeout, "RTP timeout for muted", "SECS" },
{ "final-timeout",'a',0,G_OPTION_ARG_INT, &rtpe_config.final_timeout, "Call timeout", "SECS" },
{ "offer-timeout",0,0, G_OPTION_ARG_INT, &rtpe_config.offer_timeout, "Timeout for incomplete one-sided calls", "SECS" },
{ "port-min", 'm', 0, G_OPTION_ARG_INT, &rtpe_config.port_min, "Lowest port to use for RTP", "INT" },
@ -1074,8 +1075,9 @@ static void options(int *argc, char ***argv, charp_ht templates) {
if (rtpe_config.timeout <= 0)
rtpe_config.timeout = 60;
if (rtpe_config.silent_timeout <= 0)
rtpe_config.silent_timeout = 3600;
rtpe_config.silent_timeout_us = silent_timeout * 1000000LL;
if (rtpe_config.silent_timeout_us <= 0)
rtpe_config.silent_timeout_us = 3600 * 1000000LL;
if (rtpe_config.offer_timeout <= 0)
rtpe_config.offer_timeout = 3600;
@ -1385,7 +1387,7 @@ static void fill_initial_rtpe_cfg(struct rtpengine_config* ini_rtpe_cfg) {
#define X(s) ini_rtpe_cfg->s = rtpe_config.s;
RTPE_CONFIG_INT_PARAMS
RTPE_CONFIG_UINT64_PARAMS
RTPE_CONFIG_INT64_PARAMS
RTPE_CONFIG_BOOL_PARAMS
RTPE_CONFIG_ENDPOINT_PARAMS
RTPE_CONFIG_ENUM_PARAMS

@ -37,7 +37,6 @@ enum endpoint_learning {
X(kernel_table) \
X(max_sessions) \
X(timeout) \
X(silent_timeout) \
X(final_timeout) \
X(offer_timeout) \
X(moh_max_duration) \
@ -104,8 +103,9 @@ enum endpoint_learning {
X(ng_client_timeout) \
X(ng_client_retries) \
#define RTPE_CONFIG_UINT64_PARAMS \
X(bw_limit)
#define RTPE_CONFIG_INT64_PARAMS \
X(bw_limit) \
X(silent_timeout_us) \
#define RTPE_CONFIG_BOOL_PARAMS \
X(homer_rtcp_off) \
@ -222,8 +222,8 @@ struct rtpengine_config {
RTPE_CONFIG_INT_PARAMS
#undef X
#define X(s) uint64_t s;
RTPE_CONFIG_UINT64_PARAMS
#define X(s) int64_t s;
RTPE_CONFIG_INT64_PARAMS
#undef X
#define X(s) gboolean s;

Loading…
Cancel
Save