mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Merge remote-tracking branch 'origin/maint-0.2.4'
This commit is contained in:
commit
aa3126b5b4
6
changes/6783_big_hammer
Normal file
6
changes/6783_big_hammer
Normal file
@ -0,0 +1,6 @@
|
||||
o Major features (deprecation):
|
||||
- There's now a "DisableV2DirectoryInfo_" option that prevents us
|
||||
from serving any directory requests for v2 directory information.
|
||||
This is for us to test disabling the old deprecated V2 directory
|
||||
format, so that we can see whether doing so has any effect on
|
||||
network load. Part of a fix for bug 6783.
|
@ -213,6 +213,7 @@ static config_var_t option_vars_[] = {
|
||||
V(DisableAllSwap, BOOL, "0"),
|
||||
V(DisableDebuggerAttachment, BOOL, "1"),
|
||||
V(DisableIOCP, BOOL, "1"),
|
||||
V(DisableV2DirectoryInfo_, BOOL, "0"),
|
||||
V(DynamicDHGroups, BOOL, "0"),
|
||||
VPORT(DNSPort, LINELIST, NULL),
|
||||
V(DNSListenAddress, LINELIST, NULL),
|
||||
@ -2379,6 +2380,10 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
||||
REJECT("TokenBucketRefillInterval must be between 1 and 1000 inclusive.");
|
||||
}
|
||||
|
||||
if (options->DisableV2DirectoryInfo_ && ! authdir_mode(options)) {
|
||||
REJECT("DisableV2DirectoryInfo_ set, but we aren't an authority.");
|
||||
}
|
||||
|
||||
if (options->ExcludeExitNodes || options->ExcludeNodes) {
|
||||
options->ExcludeExitNodesUnion_ = routerset_new();
|
||||
routerset_union(options->ExcludeExitNodesUnion_,options->ExcludeExitNodes);
|
||||
|
@ -2805,6 +2805,19 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers,
|
||||
const char *key = url + strlen("/tor/status/");
|
||||
long lifetime = NETWORKSTATUS_CACHE_LIFETIME;
|
||||
|
||||
if (options->DisableV2DirectoryInfo_ && !is_v3) {
|
||||
static ratelim_t reject_v2_ratelim = RATELIM_INIT(1800);
|
||||
char *m;
|
||||
write_http_status_line(conn, 404, "Not found");
|
||||
smartlist_free(dir_fps);
|
||||
geoip_note_ns_response(GEOIP_REJECT_NOT_FOUND);
|
||||
if ((m = rate_limit_log(&reject_v2_ratelim, approx_time()))) {
|
||||
log_notice(LD_DIR, "Rejected a v2 networkstatus request.%s", m);
|
||||
tor_free(m);
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!is_v3) {
|
||||
dirserv_get_networkstatus_v2_fingerprints(dir_fps, key);
|
||||
if (!strcmpstart(key, "fp/"))
|
||||
|
11
src/or/or.h
11
src/or/or.h
@ -3999,6 +3999,17 @@ typedef struct {
|
||||
|
||||
/** Fraction: */
|
||||
double PathsNeededToBuildCircuits;
|
||||
|
||||
/** Do we serve v2 directory info at all? This is a temporary option, since
|
||||
* we'd like to disable v2 directory serving entirely, but we need a way to
|
||||
* make it temporarily disableable, in order to do fast testing and be
|
||||
* able to turn it back on if it turns out to be non-workable.
|
||||
*
|
||||
* XXXX025 Make this always-on, or always-off. Right now, it's only
|
||||
* enableable for authorities.
|
||||
*/
|
||||
int DisableV2DirectoryInfo_;
|
||||
|
||||
} or_options_t;
|
||||
|
||||
/** Persistent state for an onion router, as saved to disk. */
|
||||
|
Loading…
Reference in New Issue
Block a user