aboutsummaryrefslogtreecommitdiff
path: root/src/or/router.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/or/router.c')
-rw-r--r--src/or/router.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/or/router.c b/src/or/router.c
index 650360942..ada3703da 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -944,17 +944,22 @@ router_rebuild_descriptor(int force)
}
get_platform_str(platform, sizeof(platform));
ri->platform = tor_strdup(platform);
+
+ /* compute ri->bandwidthrate as the min of various options */
ri->bandwidthrate = (int)options->BandwidthRate;
+ if (ri->bandwidthrate > options->MaxAdvertisedBandwidth)
+ ri->bandwidthrate = (int)options->MaxAdvertisedBandwidth;
+ if (options->RelayBandwidthRate > 0 &&
+ ri->bandwidthrate > options->RelayBandwidthRate)
+ ri->bandwidthrate = (int)options->RelayBandwidthRate;
+
+ /* and compute ri->bandwidthburst similarly */
ri->bandwidthburst = (int)options->BandwidthBurst;
- ri->bandwidthcapacity = hibernating ? 0 : rep_hist_bandwidth_assess();
+ if (options->RelayBandwidthBurst > 0 &&
+ ri->bandwidthburst > options->RelayBandwidthBurst)
+ ri->bandwidthburst = (int)options->RelayBandwidthBurst;
- if (options->BandwidthRate > options->MaxAdvertisedBandwidth) {
- if (options->MaxAdvertisedBandwidth > ROUTER_MAX_DECLARED_BANDWIDTH) {
- ri->bandwidthrate = ROUTER_MAX_DECLARED_BANDWIDTH;
- } else {
- ri->bandwidthrate = (int)options->MaxAdvertisedBandwidth;
- }
- }
+ ri->bandwidthcapacity = hibernating ? 0 : rep_hist_bandwidth_assess();
policies_parse_exit_policy(options->ExitPolicy, &ri->exit_policy,
options->ExitPolicyRejectPrivate);