version 1.1.1.1, 2020/06/03 09:46:45
|
version 1.1.1.2, 2021/03/17 00:20:09
|
Line 25
|
Line 25
|
u_int task_manager_total_retransmit_timeout() |
u_int task_manager_total_retransmit_timeout() |
{ |
{ |
double timeout, base, limit = 0, total = 0; |
double timeout, base, limit = 0, total = 0; |
int tries, i; | int tries, max_tries = 0, i; |
|
|
tries = lib->settings->get_int(lib->settings, "%s.retransmit_tries", |
tries = lib->settings->get_int(lib->settings, "%s.retransmit_tries", |
RETRANSMIT_TRIES, lib->ns); |
RETRANSMIT_TRIES, lib->ns); |
Line 36 u_int task_manager_total_retransmit_timeout()
|
Line 36 u_int task_manager_total_retransmit_timeout()
|
limit = lib->settings->get_double(lib->settings, "%s.retransmit_limit", |
limit = lib->settings->get_double(lib->settings, "%s.retransmit_limit", |
0, lib->ns); |
0, lib->ns); |
|
|
|
if (base > 1) |
|
{ |
|
max_tries = log(UINT32_MAX/(1000.0 * timeout))/log(base); |
|
} |
|
|
for (i = 0; i <= tries; i++) |
for (i = 0; i <= tries; i++) |
{ |
{ |
double interval = timeout * pow(base, i); | double interval = UINT32_MAX/1000.0; |
| if (max_tries && i <= max_tries) |
| { |
| interval = timeout * pow(base, i); |
| } |
if (limit) |
if (limit) |
{ |
{ |
interval = min(interval, limit); |
interval = min(interval, limit); |