mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 13:53:31 +01:00
if you're using relaybandwidthrate and relaybandwidthburst, make
sure that's reflected in your router descriptor. svn:r10114
This commit is contained in:
parent
dc795203aa
commit
b1d93df038
@ -6,10 +6,14 @@ Changes in version 0.2.0.1-alpha - 2007-??-??
|
|||||||
queue for each circuit. This lets us use less slack memory, and
|
queue for each circuit. This lets us use less slack memory, and
|
||||||
will eventually let us be smarter about prioritizing different kinds
|
will eventually let us be smarter about prioritizing different kinds
|
||||||
of traffic.
|
of traffic.
|
||||||
- Allocate cells in memory pools better speed and memory efficiency,
|
- Use memory pools to allocate cells with better speed and memory
|
||||||
especially on platforms where malloc() is inefficient.
|
efficiency, especially on platforms where malloc() is inefficient.
|
||||||
- Stop reading on edge connections when their corresponding circuit
|
- Stop reading on edge connections when their corresponding circuit
|
||||||
buffers are full; start again as the circuits empty out.
|
buffers are full; start again as the circuits empty out.
|
||||||
|
- New config options RelayBandwidthRate and RelayBandwidthBurst:
|
||||||
|
a separate set of token buckets for relayed traffic. Right now
|
||||||
|
relayed traffic is defined as answers to directory requests, and
|
||||||
|
OR connections that don't have any local circuits on them.
|
||||||
- Make PreferTunneledDirConns and TunnelDirConns work even when
|
- Make PreferTunneledDirConns and TunnelDirConns work even when
|
||||||
we have no cached directory info. This means Tor clients can now
|
we have no cached directory info. This means Tor clients can now
|
||||||
do all of their connections protected by TLS.
|
do all of their connections protected by TLS.
|
||||||
|
@ -2275,6 +2275,24 @@ validate_ports_csv(smartlist_t *sl, const char *name, char **msg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** If <b>value</b> exceeds ROUTER_MAX_DECLARED_BANDWIDTH, write
|
||||||
|
* a complaint into *<b>msg</b> using string <b>desc</b>, and return -1.
|
||||||
|
* Else return 0.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
ensure_bandwidth_cap(uint64_t value, const char *desc, char **msg)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
char buf[1024];
|
||||||
|
if (value > ROUTER_MAX_DECLARED_BANDWIDTH) {
|
||||||
|
r = tor_snprintf(buf, sizeof(buf), "%s must be at most %d",
|
||||||
|
desc, ROUTER_MAX_DECLARED_BANDWIDTH);
|
||||||
|
*msg = tor_strdup(r >= 0 ? buf : "internal error");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Lowest allowable value for RendPostPeriod; if this is too low, hidden
|
/** Lowest allowable value for RendPostPeriod; if this is too low, hidden
|
||||||
* services can overload the directory system. */
|
* services can overload the directory system. */
|
||||||
#define MIN_REND_POST_PERIOD (10*60)
|
#define MIN_REND_POST_PERIOD (10*60)
|
||||||
@ -2644,20 +2662,22 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
|||||||
if (options->KeepalivePeriod < 1)
|
if (options->KeepalivePeriod < 1)
|
||||||
REJECT("KeepalivePeriod option must be positive.");
|
REJECT("KeepalivePeriod option must be positive.");
|
||||||
|
|
||||||
if (options->BandwidthRate > ROUTER_MAX_DECLARED_BANDWIDTH) {
|
if (ensure_bandwidth_cap(options->BandwidthRate,
|
||||||
r = tor_snprintf(buf, sizeof(buf),
|
"BandwidthRate", msg) < 0)
|
||||||
"BandwidthRate must be at most %d",
|
|
||||||
ROUTER_MAX_DECLARED_BANDWIDTH);
|
|
||||||
*msg = tor_strdup(r >= 0 ? buf : "internal error");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
if (ensure_bandwidth_cap(options->BandwidthBurst,
|
||||||
if (options->BandwidthBurst > ROUTER_MAX_DECLARED_BANDWIDTH) {
|
"BandwidthBurst", msg) < 0)
|
||||||
r = tor_snprintf(buf, sizeof(buf),
|
|
||||||
"BandwidthBurst must be at most %d",
|
|
||||||
ROUTER_MAX_DECLARED_BANDWIDTH);
|
|
||||||
*msg = tor_strdup(r >= 0 ? buf : "internal error");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
if (ensure_bandwidth_cap(options->MaxAdvertisedBandwidth,
|
||||||
|
"MaxAdvertisedBandwidth", msg) < 0)
|
||||||
|
return -1;
|
||||||
|
if (ensure_bandwidth_cap(options->RelayBandwidthRate,
|
||||||
|
"RelayBandwidthRate", msg) < 0)
|
||||||
|
return -1;
|
||||||
|
if (ensure_bandwidth_cap(options->RelayBandwidthBurst,
|
||||||
|
"RelayBandwidthBurst", msg) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (server_mode(options)) {
|
if (server_mode(options)) {
|
||||||
if (options->BandwidthRate < ROUTER_REQUIRED_MIN_BANDWIDTH*2) {
|
if (options->BandwidthRate < ROUTER_REQUIRED_MIN_BANDWIDTH*2) {
|
||||||
r = tor_snprintf(buf, sizeof(buf),
|
r = tor_snprintf(buf, sizeof(buf),
|
||||||
|
@ -944,17 +944,22 @@ router_rebuild_descriptor(int force)
|
|||||||
}
|
}
|
||||||
get_platform_str(platform, sizeof(platform));
|
get_platform_str(platform, sizeof(platform));
|
||||||
ri->platform = tor_strdup(platform);
|
ri->platform = tor_strdup(platform);
|
||||||
ri->bandwidthrate = (int)options->BandwidthRate;
|
|
||||||
ri->bandwidthburst = (int)options->BandwidthBurst;
|
|
||||||
ri->bandwidthcapacity = hibernating ? 0 : rep_hist_bandwidth_assess();
|
|
||||||
|
|
||||||
if (options->BandwidthRate > options->MaxAdvertisedBandwidth) {
|
/* compute ri->bandwidthrate as the min of various options */
|
||||||
if (options->MaxAdvertisedBandwidth > ROUTER_MAX_DECLARED_BANDWIDTH) {
|
ri->bandwidthrate = (int)options->BandwidthRate;
|
||||||
ri->bandwidthrate = ROUTER_MAX_DECLARED_BANDWIDTH;
|
if (ri->bandwidthrate > options->MaxAdvertisedBandwidth)
|
||||||
} else {
|
ri->bandwidthrate = (int)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;
|
||||||
|
if (options->RelayBandwidthBurst > 0 &&
|
||||||
|
ri->bandwidthburst > options->RelayBandwidthBurst)
|
||||||
|
ri->bandwidthburst = (int)options->RelayBandwidthBurst;
|
||||||
|
|
||||||
|
ri->bandwidthcapacity = hibernating ? 0 : rep_hist_bandwidth_assess();
|
||||||
|
|
||||||
policies_parse_exit_policy(options->ExitPolicy, &ri->exit_policy,
|
policies_parse_exit_policy(options->ExitPolicy, &ri->exit_policy,
|
||||||
options->ExitPolicyRejectPrivate);
|
options->ExitPolicyRejectPrivate);
|
||||||
|
Loading…
Reference in New Issue
Block a user