mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
Set circuitmux policy on existing active channels when ewma_enabled changes
This commit is contained in:
parent
bb62281ba4
commit
9d615cc5c0
@ -12,6 +12,7 @@
|
||||
#define CONFIG_PRIVATE
|
||||
|
||||
#include "or.h"
|
||||
#include "channel.h"
|
||||
#include "circuitbuild.h"
|
||||
#include "circuitlist.h"
|
||||
#include "circuitmux.h"
|
||||
@ -1169,6 +1170,7 @@ options_act(const or_options_t *old_options)
|
||||
char *msg=NULL;
|
||||
const int transition_affects_workers =
|
||||
old_options && options_transition_affects_workers(old_options, options);
|
||||
int old_ewma_enabled;
|
||||
|
||||
/* disable ptrace and later, other basic debugging techniques */
|
||||
{
|
||||
@ -1376,8 +1378,17 @@ options_act(const or_options_t *old_options)
|
||||
connection_bucket_init();
|
||||
#endif
|
||||
|
||||
old_ewma_enabled = cell_ewma_enabled();
|
||||
/* Change the cell EWMA settings */
|
||||
cell_ewma_set_scale_factor(options, networkstatus_get_latest_consensus());
|
||||
/* If we just enabled ewma, set the cmux policy on all active channels */
|
||||
if (cell_ewma_enabled() && !old_ewma_enabled) {
|
||||
channel_set_cmux_policy_everywhere(&ewma_policy);
|
||||
} else if (!cell_ewma_enabled() && old_ewma_enabled) {
|
||||
/* Turn it off everywhere */
|
||||
channel_set_cmux_policy_everywhere(NULL);
|
||||
}
|
||||
|
||||
|
||||
/* Update the BridgePassword's hashed version as needed. We store this as a
|
||||
* digest so that we can do side-channel-proof comparisons on it.
|
||||
|
@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
#include "or.h"
|
||||
#include "channel.h"
|
||||
#include "circuitbuild.h"
|
||||
#include "circuitmux.h"
|
||||
#include "circuitmux_ewma.h"
|
||||
@ -1636,6 +1637,7 @@ networkstatus_set_current_consensus(const char *consensus,
|
||||
consensus_waiting_for_certs_t *waiting = NULL;
|
||||
time_t current_valid_after = 0;
|
||||
int free_consensus = 1; /* Free 'c' at the end of the function */
|
||||
int old_ewma_enabled;
|
||||
|
||||
if (flav < 0) {
|
||||
/* XXXX we don't handle unrecognized flavors yet. */
|
||||
@ -1829,7 +1831,19 @@ networkstatus_set_current_consensus(const char *consensus,
|
||||
|
||||
dirvote_recalculate_timing(options, now);
|
||||
routerstatus_list_update_named_server_map();
|
||||
cell_ewma_set_scale_factor(options, current_consensus);
|
||||
|
||||
/* Update ewma and adjust policy if needed; first cache the old value */
|
||||
old_ewma_enabled = cell_ewma_enabled();
|
||||
/* Change the cell EWMA settings */
|
||||
cell_ewma_set_scale_factor(options, networkstatus_get_latest_consensus());
|
||||
/* If we just enabled ewma, set the cmux policy on all active channels */
|
||||
if (cell_ewma_enabled() && !old_ewma_enabled) {
|
||||
channel_set_cmux_policy_everywhere(&ewma_policy);
|
||||
} else if (!cell_ewma_enabled() && old_ewma_enabled) {
|
||||
/* Turn it off everywhere */
|
||||
channel_set_cmux_policy_everywhere(NULL);
|
||||
}
|
||||
|
||||
|
||||
/* XXXX024 this call might be unnecessary here: can changing the
|
||||
* current consensus really alter our view of any OR's rate limits? */
|
||||
|
Loading…
Reference in New Issue
Block a user