Skip to content
Snippets Groups Projects
Commit 46ea6f3c authored by Mike Perry's avatar Mike Perry
Browse files

Apply a new patch to address a hang caused by bug11200's fix.

parent a767ba6b
No related branches found
No related tags found
No related merge requests found
......@@ -22,6 +22,9 @@ Tor Browser Bundle 4.0-alpha-1 -- Aug 7 2014
* Bug 9516: Send Tor Launcher log messages to Browser Console
* Bug 11641: Reorganize bundle directory structure to mimic Firefox
* Bug 10819: Create a preference to enable/disable third party isolation
* Backported Tor Patches:
* Bug 11200: Fix a hang during bootstrap introduced in the initial
bug11200 patch.
* Linux:
* Bug 10178: Make it easier to set an alternate Tor control port and password
* Bug 11102: Set Window Class to "Tor Browser" to aid in Desktop navigation
......
......@@ -30,6 +30,7 @@ files:
- "bug9665.patch"
- "bug8402.patch"
- "bug8402-master.patch"
- "bug11200-hang-0.2.5.patch"
- "dzip.sh"
- "openssl-linux32-utils.zip"
- "openssl-linux64-utils.zip"
......@@ -82,6 +83,7 @@ script: |
git am ~/build/bug8402.patch
else
git am ~/build/bug8402-master.patch
git am ~/build/bug11200-hang-0.2.5.patch
fi
fi
mkdir -p $OUTDIR/src
......
......@@ -27,6 +27,7 @@ files:
- "bug9665.patch"
- "bug8402.patch"
- "bug8402-master.patch"
- "bug11200-hang-0.2.5.patch"
- "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
- "dzip.sh"
......@@ -79,6 +80,7 @@ script: |
git am ~/build/bug8402.patch
else
git am ~/build/bug8402-master.patch
git am ~/build/bug11200-hang-0.2.5.patch
fi
fi
mkdir -p $OUTDIR/src
......
......@@ -28,6 +28,7 @@ files:
- "bug9665.patch"
- "bug8402.patch"
- "bug8402-master.patch"
- "bug11200-hang-0.2.5.patch"
- "binutils.tar.bz2"
- "dzip.sh"
- "binutils-win32-utils.zip"
......@@ -79,6 +80,7 @@ script: |
git am ~/build/bug8402.patch
else
git am ~/build/bug8402-master.patch
git am ~/build/bug11200-hang-0.2.5.patch
fi
fi
mkdir -p $OUTDIR/src
......
From 2897735249dfe2de11b2f2e777aa35e1b1926329 Mon Sep 17 00:00:00 2001
From: Roger Dingledine <arma@torproject.org>
Date: Tue, 5 Aug 2014 16:54:46 -0400
Subject: [PATCH 1/3] move the consensus check below the disablednetwork check
should have no impact in practice
---
src/or/nodelist.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 8f87081..a33a8b2 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1495,11 +1495,20 @@ update_router_have_minimum_dir_info(void)
time_t now = time(NULL);
int res;
const or_options_t *options = get_options();
- const networkstatus_t *consensus =
- networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor());
+ const networkstatus_t *consensus;
int using_md;
const char *delay_fetches_msg = NULL;
+ if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) {
+ log_notice(LD_DIR, "Delaying directory fetches: %s", delay_fetches_msg);
+ strlcpy(dir_info_status, delay_fetches_msg, sizeof(dir_info_status));
+ res = 0;
+ goto done;
+ }
+
+ consensus =
+ networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor());
+
if (!consensus) {
if (!networkstatus_get_latest_consensus())
strlcpy(dir_info_status, "We have no usable consensus.",
@@ -1511,13 +1520,6 @@ update_router_have_minimum_dir_info(void)
goto done;
}
- if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) {
- log_notice(LD_DIR, "Delaying directory fetches: %s", delay_fetches_msg);
- strlcpy(dir_info_status, delay_fetches_msg, sizeof(dir_info_status));
- res = 0;
- goto done;
- }
-
using_md = consensus->flavor == FLAV_MICRODESC;
{
--
1.9.1
From 9c62f4677d49073332bfcdd2f8c61229c943fd22 Mon Sep 17 00:00:00 2001
From: Roger Dingledine <arma@torproject.org>
Date: Tue, 5 Aug 2014 17:04:39 -0400
Subject: [PATCH 2/3] Build circuits more readily when DisableNetwork goes to 0
When Tor starts with DisabledNetwork set, it would correctly
conclude that it shouldn't try making circuits, but it would
mistakenly cache this conclusion and continue believing it even
when DisableNetwork is set to 0. Fixes the bug introduced by the
fix for bug 11200; bugfix on 0.2.5.4-alpha.
---
changes/bug11200-caching | 7 +++++++
src/or/nodelist.c | 10 ++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
create mode 100644 changes/bug11200-caching
diff --git a/changes/bug11200-caching b/changes/bug11200-caching
new file mode 100644
index 0000000..e3fbaec
--- /dev/null
+++ b/changes/bug11200-caching
@@ -0,0 +1,7 @@
+ o Major bugfixes:
+ - When Tor starts with DisabledNetwork set, it would correctly
+ conclude that it shouldn't try making circuits, but it would
+ mistakenly cache this conclusion and continue believing it even
+ when DisableNetwork is set to 0. Fixes the bug introduced by the
+ fix for bug 11200; bugfix on 0.2.5.4-alpha.
+
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index a33a8b2..c863663 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1494,16 +1494,21 @@ update_router_have_minimum_dir_info(void)
{
time_t now = time(NULL);
int res;
+ static int disabled=0;
const or_options_t *options = get_options();
const networkstatus_t *consensus;
int using_md;
const char *delay_fetches_msg = NULL;
if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) {
- log_notice(LD_DIR, "Delaying directory fetches: %s", delay_fetches_msg);
+ if (!disabled)
+ log_notice(LD_DIR, "Delaying directory fetches: %s", delay_fetches_msg);
strlcpy(dir_info_status, delay_fetches_msg, sizeof(dir_info_status));
res = 0;
+ disabled = 1;
goto done;
+ } else {
+ disabled = 0;
}
consensus =
@@ -1568,6 +1573,7 @@ update_router_have_minimum_dir_info(void)
control_event_client_status(LOG_NOTICE, "NOT_ENOUGH_DIR_INFO");
}
have_min_dir_info = res;
- need_to_update_have_min_dir_info = 0;
+ if (!disabled)
+ need_to_update_have_min_dir_info = 0;
}
--
1.9.1
From a8f3a72027f35284b2115b078ef8a39c60e5f054 Mon Sep 17 00:00:00 2001
From: Roger Dingledine <arma@torproject.org>
Date: Tue, 5 Aug 2014 17:33:33 -0400
Subject: [PATCH 3/3] Stop redundant clearing of
need_to_update_have_min_dir_info
We were clearing it in router_have_minimum_dir_info() as well as in
update_router_have_minimum_dir_info().
---
src/or/nodelist.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index c863663..6eb286f 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1277,7 +1277,6 @@ router_have_minimum_dir_info(void)
{
if (PREDICT_UNLIKELY(need_to_update_have_min_dir_info)) {
update_router_have_minimum_dir_info();
- need_to_update_have_min_dir_info = 0;
}
return have_min_dir_info;
}
@@ -1488,7 +1487,7 @@ get_frac_paths_needed_for_circs(const or_options_t *options,
/** Change the value of have_min_dir_info, setting it true iff we have enough
* network and router information to build circuits. Clear the value of
- * need_to_update_have_min_dir_info. */
+ * need_to_update_have_min_dir_info if we're confident of our answer. */
static void
update_router_have_minimum_dir_info(void)
{
--
1.9.1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment