Loading ChangeLog +6 −2 Original line number Diff line number Diff line Loading @@ -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 will eventually let us be smarter about prioritizing different kinds of traffic. - Allocate cells in memory pools better speed and memory efficiency, especially on platforms where malloc() is inefficient. - Use memory pools to allocate cells with better speed and memory efficiency, especially on platforms where malloc() is inefficient. - Stop reading on edge connections when their corresponding circuit 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 we have no cached directory info. This means Tor clients can now do all of their connections protected by TLS. Loading src/or/config.c +32 −12 Original line number Diff line number Diff line Loading @@ -2275,6 +2275,24 @@ validate_ports_csv(smartlist_t *sl, const char *name, char **msg) 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 * services can overload the directory system. */ #define MIN_REND_POST_PERIOD (10*60) Loading Loading @@ -2644,20 +2662,22 @@ options_validate(or_options_t *old_options, or_options_t *options, if (options->KeepalivePeriod < 1) REJECT("KeepalivePeriod option must be positive."); if (options->BandwidthRate > ROUTER_MAX_DECLARED_BANDWIDTH) { r = tor_snprintf(buf, sizeof(buf), "BandwidthRate must be at most %d", ROUTER_MAX_DECLARED_BANDWIDTH); *msg = tor_strdup(r >= 0 ? buf : "internal error"); if (ensure_bandwidth_cap(options->BandwidthRate, "BandwidthRate", msg) < 0) return -1; } if (options->BandwidthBurst > ROUTER_MAX_DECLARED_BANDWIDTH) { r = tor_snprintf(buf, sizeof(buf), "BandwidthBurst must be at most %d", ROUTER_MAX_DECLARED_BANDWIDTH); *msg = tor_strdup(r >= 0 ? buf : "internal error"); if (ensure_bandwidth_cap(options->BandwidthBurst, "BandwidthBurst", msg) < 0) 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 (options->BandwidthRate < ROUTER_REQUIRED_MIN_BANDWIDTH*2) { r = tor_snprintf(buf, sizeof(buf), Loading src/or/router.c +13 −8 Original line number Diff line number Diff line Loading @@ -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); Loading Loading
ChangeLog +6 −2 Original line number Diff line number Diff line Loading @@ -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 will eventually let us be smarter about prioritizing different kinds of traffic. - Allocate cells in memory pools better speed and memory efficiency, especially on platforms where malloc() is inefficient. - Use memory pools to allocate cells with better speed and memory efficiency, especially on platforms where malloc() is inefficient. - Stop reading on edge connections when their corresponding circuit 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 we have no cached directory info. This means Tor clients can now do all of their connections protected by TLS. Loading
src/or/config.c +32 −12 Original line number Diff line number Diff line Loading @@ -2275,6 +2275,24 @@ validate_ports_csv(smartlist_t *sl, const char *name, char **msg) 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 * services can overload the directory system. */ #define MIN_REND_POST_PERIOD (10*60) Loading Loading @@ -2644,20 +2662,22 @@ options_validate(or_options_t *old_options, or_options_t *options, if (options->KeepalivePeriod < 1) REJECT("KeepalivePeriod option must be positive."); if (options->BandwidthRate > ROUTER_MAX_DECLARED_BANDWIDTH) { r = tor_snprintf(buf, sizeof(buf), "BandwidthRate must be at most %d", ROUTER_MAX_DECLARED_BANDWIDTH); *msg = tor_strdup(r >= 0 ? buf : "internal error"); if (ensure_bandwidth_cap(options->BandwidthRate, "BandwidthRate", msg) < 0) return -1; } if (options->BandwidthBurst > ROUTER_MAX_DECLARED_BANDWIDTH) { r = tor_snprintf(buf, sizeof(buf), "BandwidthBurst must be at most %d", ROUTER_MAX_DECLARED_BANDWIDTH); *msg = tor_strdup(r >= 0 ? buf : "internal error"); if (ensure_bandwidth_cap(options->BandwidthBurst, "BandwidthBurst", msg) < 0) 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 (options->BandwidthRate < ROUTER_REQUIRED_MIN_BANDWIDTH*2) { r = tor_snprintf(buf, sizeof(buf), Loading
src/or/router.c +13 −8 Original line number Diff line number Diff line Loading @@ -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); Loading