Commit 66258f88 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Merge branch 'fewer-diffs' into maint-0.3.1

parents 1ea155b2 abb9a5bd
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
  o Minor features (directory cache, consensus diff):
    - Add a new MaxConsensusAgeForDiffs option to allow directory cache
      operators with low-resource environments to adjust the number of
      consensuses they'll store and generate diffs from. Most cache operators
      should leave it unchanged. Helps to work around bug 22883.

+10 −0
Original line number Diff line number Diff line
@@ -2072,6 +2072,16 @@ details.)
    because clients connect via the ORPort by default. Setting either DirPort
    or BridgeRelay and setting DirCache to 0 is not supported.  (Default: 1)

[[MaxConsensusAgeForDiffs]] **MaxConsensusAgeForDiffs**  __N__ **minutes**|**hours**|**days**|**weeks**::
    When this option is nonzero, Tor caches will not try to generate
    consensus diffs for any consensus older than this amount of time.
    If this option is set to zero, Tor will pick a reasonable default from
    the current networkstatus document.  You should not set this
    option unless your cache is severely low on disk space or CPU.
    If you need to set it, keeping it above 3 or 4 hours will help clients
    much more than setting it to zero.
    (Default: 0)


DIRECTORY AUTHORITY SERVER OPTIONS
----------------------------------
+1 −0
Original line number Diff line number Diff line
@@ -393,6 +393,7 @@ static config_var_t option_vars_[] = {
  V(MaxAdvertisedBandwidth,      MEMUNIT,  "1 GB"),
  V(MaxCircuitDirtiness,         INTERVAL, "10 minutes"),
  V(MaxClientCircuitsPending,    UINT,     "32"),
  V(MaxConsensusAgeForDiffs,     INTERVAL, "0 seconds"),
  VAR("MaxMemInQueues",          MEMUNIT,   MaxMemInQueues_raw, "0"),
  OBSOLETE("MaxOnionsPending"),
  V(MaxOnionQueueDelay,          MSEC_INTERVAL, "1750 msec"),
+12 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#define CONSDIFFMGR_PRIVATE

#include "or.h"
#include "config.h"
#include "conscache.h"
#include "consdiff.h"
#include "consdiffmgr.h"
@@ -462,12 +463,22 @@ cdm_cache_lookup_consensus(consensus_flavor_t flavor, time_t valid_after)
static int32_t
get_max_age_to_cache(void)
{
  /* The parameter is in hours. */
  const int32_t DEFAULT_MAX_AGE_TO_CACHE = 8192;
  const int32_t MIN_MAX_AGE_TO_CACHE = 0;
  const int32_t MAX_MAX_AGE_TO_CACHE = 8192;
  const char MAX_AGE_TO_CACHE_NAME[] = "max-consensus-age-to-cache-for-diff";

  const or_options_t *options = get_options();

  if (options->MaxConsensusAgeForDiffs) {
    const int v = options->MaxConsensusAgeForDiffs;
    if (v >= MAX_MAX_AGE_TO_CACHE * 3600)
      return MAX_MAX_AGE_TO_CACHE;
    else
      return v;
  }

  /* The parameter is in hours, so we multiply */
  return 3600 * networkstatus_get_param(NULL,
                                        MAX_AGE_TO_CACHE_NAME,
                                        DEFAULT_MAX_AGE_TO_CACHE,
+5 −0
Original line number Diff line number Diff line
@@ -4558,6 +4558,11 @@ typedef struct {

  /** Bool (default: 0): Tells if a %include was used on torrc */
  int IncludeUsed;

  /** The seconds after expiration which we as a relay should keep old
   * consensuses around so that we can generate diffs from them.  If 0,
   * use the default. */
  int MaxConsensusAgeForDiffs;
} or_options_t;

/** Persistent state for an onion router, as saved to disk. */