Check bandwidth changes only if small uptime

to upload a new descriptor.
This commit is contained in:
juga0 2018-06-03 09:31:19 +00:00
parent c380562aed
commit 7d70f67dea

View File

@ -2425,13 +2425,24 @@ mark_my_descriptor_dirty(const char *reason)
* if our previous bandwidth estimate was exactly 0. */ * if our previous bandwidth estimate was exactly 0. */
#define MAX_BANDWIDTH_CHANGE_FREQ (3*60*60) #define MAX_BANDWIDTH_CHANGE_FREQ (3*60*60)
/** Maximum uptime to republish our descriptor because of large shifts in
* estimated bandwidth. */
#define MAX_UPTIME_BANDWIDTH_CHANGE (24*60*60)
/** Check whether bandwidth has changed a lot since the last time we announced /** Check whether bandwidth has changed a lot since the last time we announced
* bandwidth. If so, mark our descriptor dirty. */ * bandwidth while the uptime is smaller than MAX_UPTIME_BANDWIDTH_CHANGE.
* If so, mark our descriptor dirty. */
void void
check_descriptor_bandwidth_changed(time_t now) check_descriptor_bandwidth_changed(time_t now)
{ {
static time_t last_changed = 0; static time_t last_changed = 0;
uint64_t prev, cur; uint64_t prev, cur;
/* If the relay uptime is bigger than MAX_UPTIME_BANDWIDTH_CHANGE,
* the next regularly scheduled descriptor update (18h) will be enough */
if (get_uptime() > MAX_UPTIME_BANDWIDTH_CHANGE)
return;
if (!router_get_my_routerinfo()) if (!router_get_my_routerinfo())
return; return;