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
a8d491a8
Commit
a8d491a8
authored
Sep 12, 2012
by
Nick Mathewson
⛰
Browse files
Add an option to weight down authorities when choosing a fallback
parent
06cd6226
Changes
4
Hide whitespace changes
Inline
Side-by-side
doc/tor.1.txt
View file @
a8d491a8
...
...
@@ -322,6 +322,12 @@ GENERAL OPTIONS
distinguishable from other users, because you won't believe the same
authorities they do.
**DirAuthorityFallbackRate** __NUM__::
When configured to use both directory authorities and fallback
directories, the directory authorities also work as fallbacks. They are
chosen with their regular weights, multiplied by this number, which
should be 1.0 or less. (Default: 1.0)
**DynamicDHGroups** **0**|**1**::
If this option is set to 1, when running as a server, generate our
own Diffie-Hellman group instead of using the one from Apache's mod_ssl.
...
...
src/or/config.c
View file @
a8d491a8
...
...
@@ -208,6 +208,7 @@ static config_var_t option_vars_[] = {
OBSOLETE
(
"DirRecordUsageSaveInterval"
),
V
(
DirReqStatistics
,
BOOL
,
"1"
),
VAR
(
"DirAuthority"
,
LINELIST
,
DirAuthorities
,
NULL
),
V
(
DirAuthorityFallbackRate
,
DOUBLE
,
"1.0"
),
V
(
DisableAllSwap
,
BOOL
,
"0"
),
V
(
DisableDebuggerAttachment
,
BOOL
,
"1"
),
V
(
DisableIOCP
,
BOOL
,
"1"
),
...
...
src/or/or.h
View file @
a8d491a8
...
...
@@ -3431,6 +3431,10 @@ typedef struct {
/** List of fallback directory servers */
config_line_t
*
FallbackDir
;
/** Weight to apply to all directory authority rates if considering them
* along with fallbackdirs */
double
DirAuthorityFallbackRate
;
/** If set, use these main (currently v3) directory authorities and
* not the default ones. */
config_line_t
*
AlternateDirAuthority
;
...
...
src/or/routerlist.c
View file @
a8d491a8
...
...
@@ -1252,7 +1252,7 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags)
/** Pick a random element from a list of dir_server_t, weighting by their
* <b>weight</b> field. */
static
const
dir_server_t
*
dirserver_choose_by_weight
(
const
smartlist_t
*
servers
)
dirserver_choose_by_weight
(
const
smartlist_t
*
servers
,
double
authority_weight
)
{
int
n
=
smartlist_len
(
servers
);
int
i
;
...
...
@@ -1263,6 +1263,8 @@ dirserver_choose_by_weight(const smartlist_t *servers)
for
(
i
=
0
;
i
<
n
;
++
i
)
{
ds
=
smartlist_get
(
servers
,
i
);
weights
[
i
].
dbl
=
ds
->
weight
;
if
(
ds
->
is_authority
)
weights
[
i
].
dbl
*=
authority_weight
;
}
scale_array_elements_to_u64
(
weights
,
n
,
NULL
);
...
...
@@ -1290,6 +1292,8 @@ router_pick_trusteddirserver_impl(const smartlist_t *sourcelist,
const
int
prefer_tunnel
=
(
flags
&
PDS_PREFER_TUNNELED_DIR_CONNS_
);
const
int
no_serverdesc_fetching
=
(
flags
&
PDS_NO_EXISTING_SERVERDESC_FETCH
);
const
int
no_microdesc_fetching
=
(
flags
&
PDS_NO_EXISTING_MICRODESC_FETCH
);
const
double
auth_weight
=
(
sourcelist
==
fallback_dir_servers
)
?
options
->
DirAuthorityFallbackRate
:
1
.
0
;
smartlist_t
*
pick_from
;
int
n_busy
=
0
;
int
try_excluding
=
1
,
n_excluded
=
0
;
...
...
@@ -1368,7 +1372,8 @@ router_pick_trusteddirserver_impl(const smartlist_t *sourcelist,
}
{
const
dir_server_t
*
selection
=
dirserver_choose_by_weight
(
pick_from
);
const
dir_server_t
*
selection
=
dirserver_choose_by_weight
(
pick_from
,
auth_weight
);
if
(
selection
)
result
=
&
selection
->
fake_status
;
...
...
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