Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Mike Perry
Tor
Commits
9d615cc5
Commit
9d615cc5
authored
Oct 01, 2012
by
Andrea Shepard
Browse files
Set circuitmux policy on existing active channels when ewma_enabled changes
parent
bb62281b
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/or/config.c
View file @
9d615cc5
...
...
@@ -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.
...
...
src/or/networkstatus.c
View file @
9d615cc5
...
...
@@ -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? */
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment