parent
a6d2f877f5
commit
6ae73ad808
16
ChangeLog
16
ChangeLog
|
@ -1,16 +1,26 @@
|
||||||
Changes in version 0.1.2.14 - 2007-05-23
|
Changes in version 0.1.2.14 - 2007-05-24
|
||||||
o Directory authority changes:
|
o Directory authority changes:
|
||||||
- Two directory authorities (moria1 and moria2) just moved to new
|
- Two directory authorities (moria1 and moria2) just moved to new
|
||||||
IP addresses. This change will particularly affect those who serve
|
IP addresses. This change will particularly affect those who serve
|
||||||
or use hidden services.
|
or use hidden services.
|
||||||
|
|
||||||
o Major bugfixes:
|
o Major bugfixes (crashes):
|
||||||
- If a directory server runs out of space in the connection table
|
- If a directory server runs out of space in the connection table
|
||||||
as it's processing a begin_dir request, it will free the exit stream
|
as it's processing a begin_dir request, it will free the exit stream
|
||||||
but leave it attached to the circuit, leading to unpredictable
|
but leave it attached to the circuit, leading to unpredictable
|
||||||
behavior. (Reported by seeess, fixes bug 425.)
|
behavior. (Reported by seeess, fixes bug 425.)
|
||||||
- Fix a bug in dirserv_remove_invalid() that would cause authorities
|
- Fix a bug in dirserv_remove_invalid() that would cause authorities
|
||||||
to corrupt memory under some really unlikely scenarios.
|
to corrupt memory under some really unlikely scenarios.
|
||||||
|
- Tighten router parsing rules. (Bugs reported by Benedikt Boss.)
|
||||||
|
- Avoid segfaults when reading from mmaped descriptor file. (Reported
|
||||||
|
by lodger.)
|
||||||
|
|
||||||
|
o Major bugfixes (security):
|
||||||
|
- When choosing an entry guard for our circuit, avoid using guards
|
||||||
|
that are in the same family as the chosen exit -- not just guards
|
||||||
|
that are exactly the chosen exit. (Reported by lodger.)
|
||||||
|
|
||||||
|
o Major bugfixes (resource management):
|
||||||
- If a directory authority is down, skip it when deciding where to get
|
- If a directory authority is down, skip it when deciding where to get
|
||||||
networkstatus objects or descriptors. Otherwise we keep asking
|
networkstatus objects or descriptors. Otherwise we keep asking
|
||||||
every 10 seconds forever. Fixes bug 384.
|
every 10 seconds forever. Fixes bug 384.
|
||||||
|
@ -20,8 +30,6 @@ Changes in version 0.1.2.14 - 2007-05-23
|
||||||
- If all of our dirservers have given us bad or no networkstatuses
|
- If all of our dirservers have given us bad or no networkstatuses
|
||||||
lately, then stop hammering them once per minute even when we
|
lately, then stop hammering them once per minute even when we
|
||||||
think they're failed. Fixes another part of bug 422.
|
think they're failed. Fixes another part of bug 422.
|
||||||
- Tighten router parsing rules.
|
|
||||||
- Avoid segfaults when reading from mmaped descriptor file.
|
|
||||||
|
|
||||||
o Minor bugfixes:
|
o Minor bugfixes:
|
||||||
- Actually set the purpose correctly for descriptors inserted with
|
- Actually set the purpose correctly for descriptors inserted with
|
||||||
|
|
|
@ -2322,11 +2322,15 @@ choose_random_entry(cpath_build_state_t *state)
|
||||||
{
|
{
|
||||||
or_options_t *options = get_options();
|
or_options_t *options = get_options();
|
||||||
smartlist_t *live_entry_guards = smartlist_create();
|
smartlist_t *live_entry_guards = smartlist_create();
|
||||||
|
smartlist_t *exit_family = smartlist_create();
|
||||||
routerinfo_t *chosen_exit = build_state_get_exit_router(state);
|
routerinfo_t *chosen_exit = build_state_get_exit_router(state);
|
||||||
routerinfo_t *r = NULL;
|
routerinfo_t *r = NULL;
|
||||||
int need_uptime = state->need_uptime;
|
int need_uptime = state->need_uptime;
|
||||||
int need_capacity = state->need_capacity;
|
int need_capacity = state->need_capacity;
|
||||||
|
|
||||||
|
smartlist_add(exit_family, chosen_exit);
|
||||||
|
routerlist_add_family(exit_family, chosen_exit);
|
||||||
|
|
||||||
if (!entry_guards)
|
if (!entry_guards)
|
||||||
entry_guards = smartlist_create();
|
entry_guards = smartlist_create();
|
||||||
|
|
||||||
|
@ -2343,7 +2347,7 @@ choose_random_entry(cpath_build_state_t *state)
|
||||||
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry,
|
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry,
|
||||||
{
|
{
|
||||||
r = entry_is_live(entry, need_uptime, need_capacity, 0);
|
r = entry_is_live(entry, need_uptime, need_capacity, 0);
|
||||||
if (r && r != chosen_exit) {
|
if (r && !smartlist_isin(exit_family, r)) {
|
||||||
smartlist_add(live_entry_guards, r);
|
smartlist_add(live_entry_guards, r);
|
||||||
if (smartlist_len(live_entry_guards) >= options->NumEntryGuards)
|
if (smartlist_len(live_entry_guards) >= options->NumEntryGuards)
|
||||||
break; /* we have enough */
|
break; /* we have enough */
|
||||||
|
@ -2380,6 +2384,7 @@ choose_random_entry(cpath_build_state_t *state)
|
||||||
|
|
||||||
r = smartlist_choose(live_entry_guards);
|
r = smartlist_choose(live_entry_guards);
|
||||||
smartlist_free(live_entry_guards);
|
smartlist_free(live_entry_guards);
|
||||||
|
smartlist_free(exit_family);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue