mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Merge branch 'tor-gitlab/mr/337'
This commit is contained in:
commit
15a95df376
4
changes/ticket40228
Normal file
4
changes/ticket40228
Normal file
@ -0,0 +1,4 @@
|
||||
o Minor features (dormant mode):
|
||||
- Add a new 'DormantTimeoutEnabled' option to allow coarse-grained
|
||||
control over whether the client ever becomes dormant from inactivity.
|
||||
Most people won't need this. Closes ticket 40228.
|
@ -1879,6 +1879,12 @@ The following options control when Tor enters and leaves dormant mode:
|
||||
counts as client activity for the purpose of DormantClientTimeout.
|
||||
If false, then only network activity counts. (Default: 1)
|
||||
|
||||
[[DormantTimeoutEnabled]] **DormantTimeoutEnabled** **0**|**1**::
|
||||
If false, then no amount of time without activity is sufficient to
|
||||
make Tor go dormant. Setting this option to zero is only recommended for
|
||||
special-purpose applications that need to use the Tor binary for
|
||||
something other than sending or receiving Tor traffic. (Default: 1)
|
||||
|
||||
== NODE SELECTION OPTIONS
|
||||
|
||||
// These options are in alphabetical order, with exceptions as noted.
|
||||
|
@ -423,6 +423,7 @@ static const config_var_t option_vars_[] = {
|
||||
VPORT(DNSPort),
|
||||
OBSOLETE("DNSListenAddress"),
|
||||
V(DormantClientTimeout, INTERVAL, "24 hours"),
|
||||
V(DormantTimeoutEnabled, BOOL, "1"),
|
||||
V(DormantTimeoutDisabledByIdleStreams, BOOL, "1"),
|
||||
V(DormantOnFirstStartup, BOOL, "0"),
|
||||
V(DormantCanceledByStartup, BOOL, "0"),
|
||||
|
@ -1033,6 +1033,13 @@ struct or_options_t {
|
||||
**/
|
||||
int DormantClientTimeout;
|
||||
|
||||
/**
|
||||
* Boolean: If enabled, then we consider the timeout when deciding whether
|
||||
* to be dormant. If not enabled, then only the SIGNAL ACTIVE/DORMANT
|
||||
* controls can change our status.
|
||||
**/
|
||||
int DormantTimeoutEnabled;
|
||||
|
||||
/** Boolean: true if having an idle stream is sufficient to prevent a client
|
||||
* from becoming dormant.
|
||||
**/
|
||||
|
@ -1820,6 +1820,12 @@ check_network_participation_callback(time_t now, const or_options_t *options)
|
||||
goto found_activity;
|
||||
}
|
||||
|
||||
/* If we aren't allowed to become dormant, then participation doesn't
|
||||
matter */
|
||||
if (! options->DormantTimeoutEnabled) {
|
||||
goto found_activity;
|
||||
}
|
||||
|
||||
/* If we're running an onion service, we can't become dormant. */
|
||||
/* XXXX this would be nice to change, so that we can be dormant with a
|
||||
* service. */
|
||||
|
@ -154,6 +154,9 @@ netstatus_load_from_state(const mainloop_state_t *state, time_t now)
|
||||
last_activity = now;
|
||||
participating_on_network = true;
|
||||
}
|
||||
if (! get_options()->DormantTimeoutEnabled) {
|
||||
participating_on_network = true;
|
||||
}
|
||||
reset_user_activity(last_activity);
|
||||
}
|
||||
|
||||
|
@ -231,6 +231,8 @@ test_mainloop_check_participation(void *arg)
|
||||
const time_t start = 1542658829;
|
||||
const time_t ONE_DAY = 24*60*60;
|
||||
|
||||
options->DormantTimeoutEnabled = 1;
|
||||
|
||||
// Suppose we've been idle for a day or two
|
||||
reset_user_activity(start - 2*ONE_DAY);
|
||||
set_network_participation(true);
|
||||
|
Loading…
Reference in New Issue
Block a user