commit f8d4e17956f34936129e47e9865fb4919324e3a6 Author: Mike Perry mikeperry-git@torproject.org Date: Wed Mar 12 20:53:34 2014 -0700
Update and add additional Tor patch backports. --- Bundle-Data/Docs/ChangeLog.txt | 2 + gitian/descriptors/linux/gitian-tor.yml | 6 +- gitian/descriptors/mac/gitian-tor.yml | 6 +- gitian/descriptors/windows/gitian-tor.yml | 6 +- gitian/patches/bug11069.patch | 164 ++++++++++++++++++----------- gitian/patches/bug11156.patch | 164 +++++++++++++++++++++++++++++ gitian/patches/bug5018.patch | 64 ++++++++--- gitian/patches/bug9229.patch | 46 ++++++++ 8 files changed, 376 insertions(+), 82 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt index ccf31b0..b82ccd7 100644 --- a/Bundle-Data/Docs/ChangeLog.txt +++ b/Bundle-Data/Docs/ChangeLog.txt @@ -17,7 +17,9 @@ Tor Browser Bundle 3.6-beta-1 -- Mar 12 2014 * Update Tor to 0.2.4.21 * Backport Pending Tor Patches: * Bug 5018: Don't launch Pluggable Transport helpers if not in use + * Bug 9229: Eliminate 60 second stall during bootstrap with some PTs * Bug 11069: Detect and report Pluggable Transport bootstrap failures + * Bug 11156: Prevent spurious warning about missing pluggable transports * Bug 10237: Disable the media cache to prevent disk leaks for videos * Bug 10703: Force the default charset to avoid locale fingerprinting * Bug 10104: Update gitian to fix LXC build issues (for non-KVM/VT builders) diff --git a/gitian/descriptors/linux/gitian-tor.yml b/gitian/descriptors/linux/gitian-tor.yml index a83d8a4..f0cb682 100644 --- a/gitian/descriptors/linux/gitian-tor.yml +++ b/gitian/descriptors/linux/gitian-tor.yml @@ -26,6 +26,8 @@ files: - "versions" - "bug10297.patch" - "bug5018.patch" +- "bug9229.patch" +- "bug11156.patch" - "bug11069.patch" - "dzip.sh" - "openssl.tar.gz" @@ -82,10 +84,12 @@ script: | git am ~/build/bug10297.patch fi if [ $BUILD_PT_BUNDLES ]; then - git am ~/build/bug11069.patch if [ ${TOR_TAG::9} == "tor-0.2.4" ]; then + git am ~/build/bug9229.patch git am ~/build/bug5018.patch + git am ~/build/bug11069.patch + git am ~/build/bug11156.patch fi fi mkdir -p $OUTDIR/src diff --git a/gitian/descriptors/mac/gitian-tor.yml b/gitian/descriptors/mac/gitian-tor.yml index 1596c8e..8b049b0 100644 --- a/gitian/descriptors/mac/gitian-tor.yml +++ b/gitian/descriptors/mac/gitian-tor.yml @@ -27,6 +27,8 @@ files: - "openssl.tar.gz" - "bug10297.patch" - "bug5018.patch" +- "bug9229.patch" +- "bug11156.patch" - "bug11069.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" @@ -98,10 +100,12 @@ script: | git am ~/build/bug10297.patch fi if [ $BUILD_PT_BUNDLES ]; then - git am ~/build/bug11069.patch if [ ${TOR_TAG::9} == "tor-0.2.4" ]; then + git am ~/build/bug9229.patch git am ~/build/bug5018.patch + git am ~/build/bug11069.patch + git am ~/build/bug11156.patch fi fi mkdir -p $OUTDIR/src diff --git a/gitian/descriptors/windows/gitian-tor.yml b/gitian/descriptors/windows/gitian-tor.yml index 9033939..3d05eaa 100644 --- a/gitian/descriptors/windows/gitian-tor.yml +++ b/gitian/descriptors/windows/gitian-tor.yml @@ -26,6 +26,8 @@ files: - "versions" - "bug10297.patch" - "bug5018.patch" +- "bug9229.patch" +- "bug11156.patch" - "bug11069.patch" - "binutils.tar.bz2" - "dzip.sh" @@ -94,10 +96,12 @@ script: | git am ~/build/bug10297.patch fi if [ $BUILD_PT_BUNDLES ]; then - git am ~/build/bug11069.patch if [ ${TOR_TAG::9} == "tor-0.2.4" ]; then + git am ~/build/bug9229.patch git am ~/build/bug5018.patch + git am ~/build/bug11069.patch + git am ~/build/bug11156.patch fi fi mkdir -p $OUTDIR/src git archive HEAD | tar -x -C $OUTDIR/src diff --git a/gitian/patches/bug11069.patch b/gitian/patches/bug11069.patch index 563aafb..b6032e9 100644 --- a/gitian/patches/bug11069.patch +++ b/gitian/patches/bug11069.patch @@ -1,16 +1,24 @@ -From 404cc6095e31ce47af9287cdda1e4d3ff449b387 Mon Sep 17 00:00:00 2001 +From 67c70b2566fc9bef4527fb8a0c24ce7d8c4d0647 Mon Sep 17 00:00:00 2001 From: George Kadianakis desnacked@riseup.net -Date: Fri, 28 Feb 2014 15:19:30 +0000 -Subject: [PATCH] Throw control port warning if we failed connecting to briges. +Date: Mon, 10 Mar 2014 22:52:07 +0000 +Subject: [PATCH] Throw control port warning if we failed to connect to all our + bridges.
+Conflicts: + src/or/connection.c + src/or/control.c + src/or/control.h + src/test/test_extorport.c --- - changes/bug11069 | 4 ++++ - src/or/connection.c | 41 ++++++++++++++++++++++++++++++++--------- - src/or/connection.h | 2 ++ - src/or/control.c | 7 ++++--- - src/or/entrynodes.c | 21 --------------------- - src/or/entrynodes.h | 1 - - 6 files changed, 42 insertions(+), 34 deletions(-) + changes/bug11069 | 4 ++++ + src/or/connection.c | 25 +++++++++++++++++++++++++ + src/or/connection.h | 2 ++ + src/or/connection_or.c | 8 +++++--- + src/or/control.c | 13 ++++++++----- + src/or/control.h | 3 ++- + src/or/entrynodes.c | 21 --------------------- + src/or/entrynodes.h | 1 - + 8 files changed, 46 insertions(+), 31 deletions(-) create mode 100644 changes/bug11069
diff --git a/changes/bug11069 b/changes/bug11069 @@ -24,57 +32,27 @@ index 0000000..5aa3085 + connect to all of our bridges. Fixes bug 11069; bugfix on + tor-0.2.1.2-alpha. diff --git a/src/or/connection.c b/src/or/connection.c -index 77565ee..12f2b01 100644 +index 4f74a1d..ba28d81 100644 --- a/src/or/connection.c +++ b/src/or/connection.c -@@ -3129,15 +3129,6 @@ connection_handle_read_impl(connection_t *conn) - before = buf_datalen(conn->inbuf); - if (connection_read_to_buf(conn, &max_to_read, &socket_error) < 0) { - /* There's a read error; kill the connection.*/ -- if (conn->type == CONN_TYPE_OR) { -- connection_or_notify_error(TO_OR_CONN(conn), -- socket_error != 0 ? -- errno_to_orconn_end_reason(socket_error) : -- END_OR_CONN_REASON_CONNRESET, -- socket_error != 0 ? -- tor_socket_strerror(socket_error) : -- "(unknown, errno was 0)"); -- } - if (CONN_IS_EDGE(conn)) { - edge_connection_t *edge_conn = TO_EDGE_CONN(conn); - connection_edge_end_errno(edge_conn); -@@ -3152,6 +3143,19 @@ connection_handle_read_impl(connection_t *conn) - * connection_or_notify_error() above. - */ - connection_mark_for_close_internal(conn); -+ -+ /* If it's an OR connection, notify the other components of its -+ failure. */ -+ if (conn->type == CONN_TYPE_OR) { -+ connection_or_notify_error(TO_OR_CONN(conn), -+ socket_error != 0 ? -+ errno_to_orconn_end_reason(socket_error) : -+ END_OR_CONN_REASON_CONNRESET, -+ socket_error != 0 ? -+ tor_socket_strerror(socket_error) : -+ "(unknown, errno was 0)"); -+ } -+ - return -1; - } - n_read += buf_datalen(conn->inbuf) - before; -@@ -4164,6 +4168,25 @@ connection_dir_get_by_purpose_and_resource(int purpose, +@@ -3846,6 +3846,31 @@ connection_get_by_type_purpose(int type, int purpose) return NULL; }
-+/** Return 1 if there are any active OR connections. We use this to -+ * guess if we should tell the controller that we didn't manage to -+ * connect to any of our bridges. */ ++/** Return 1 if there are any active OR connections apart from ++ * <b>this_conn</b>. ++ * ++ * We use this to guess if we should tell the controller that we ++ * didn't manage to connect to any of our bridges. */ +int -+any_active_or_conns(void) ++any_other_active_or_conns(const or_connection_t *this_conn) +{ + smartlist_t *conns = get_connection_array(); + SMARTLIST_FOREACH_BEGIN(conns, connection_t *, conn) { ++ if (conn == TO_CONN(this_conn)) { /* don't consider this conn */ ++ continue; ++ } ++ + if (conn->type == CONN_TYPE_OR && + !conn->marked_for_close) { + log_debug(LD_DIR, "%s: Found an OR connection: %s", @@ -90,23 +68,71 @@ index 77565ee..12f2b01 100644 int connection_is_listener(connection_t *conn) diff --git a/src/or/connection.h b/src/or/connection.h -index fa07650..47c70c5 100644 +index c78fe6e..9bd5f88 100644 --- a/src/or/connection.h +++ b/src/or/connection.h -@@ -187,6 +187,8 @@ connection_t *connection_get_by_type_state_rendquery(int type, int state, +@@ -180,6 +180,8 @@ connection_t *connection_get_by_type_state_rendquery(int type, int state, dir_connection_t *connection_dir_get_by_purpose_and_resource( int state, const char *resource);
-+int any_active_or_conns(void); ++int any_other_active_or_conns(const or_connection_t *this_conn); + #define connection_speaks_cells(conn) ((conn)->type == CONN_TYPE_OR) int connection_is_listener(connection_t *conn); int connection_state_is_open(connection_t *conn); +diff --git a/src/or/connection_or.c b/src/or/connection_or.c +index 8e7cd9e..8684f18 100644 +--- a/src/or/connection_or.c ++++ b/src/or/connection_or.c +@@ -645,7 +645,8 @@ connection_or_about_to_close(or_connection_t *or_conn) + reason); + if (!authdir_mode_tests_reachability(options)) + control_event_bootstrap_problem( +- orconn_end_reason_to_control_string(reason), reason); ++ orconn_end_reason_to_control_string(reason), ++ reason, or_conn); + } + } + } else if (conn->hold_open_until_flushed) { +@@ -1008,7 +1009,7 @@ connection_or_connect_failed(or_connection_t *conn, + { + control_event_or_conn_status(conn, OR_CONN_EVENT_FAILED, reason); + if (!authdir_mode_tests_reachability(get_options())) +- control_event_bootstrap_problem(msg, reason); ++ control_event_bootstrap_problem(msg, reason, conn); + } + + /** <b>conn</b> got an error in connection_handle_read_impl() or +@@ -1638,7 +1639,8 @@ connection_or_client_learned_peer_id(or_connection_t *conn, + if (!authdir_mode_tests_reachability(options)) + control_event_bootstrap_problem( + "Unexpected identity in router certificate", +- END_OR_CONN_REASON_OR_IDENTITY); ++ END_OR_CONN_REASON_OR_IDENTITY, ++ conn); + return -1; + } + if (authdir_mode_tests_reachability(options)) { diff --git a/src/or/control.c b/src/or/control.c -index 05ff9a6..198fb18 100644 +index a88de12..cd2c55c 100644 --- a/src/or/control.c +++ b/src/or/control.c -@@ -4898,9 +4898,10 @@ control_event_bootstrap_problem, (const char *warn, int reason)) +@@ -4696,10 +4696,12 @@ control_event_bootstrap(bootstrap_status_t status, int progress) + + /** Called when Tor has failed to make bootstrapping progress in a way + * that indicates a problem. <b>warn</b> gives a hint as to why, and +- * <b>reason</b> provides an "or_conn_end_reason" tag. ++ * <b>reason</b> provides an "or_conn_end_reason" tag. <b>or_conn</b> ++ * is the connection that caused this problem. + */ + void +-control_event_bootstrap_problem(const char *warn, int reason) ++control_event_bootstrap_problem(const char *warn, int reason, ++ const or_connection_t *or_conn) + { + int status = bootstrap_percent; + const char *tag, *summary; +@@ -4721,9 +4723,10 @@ control_event_bootstrap_problem(const char *warn, int reason) if (reason == END_OR_CONN_REASON_NO_ROUTE) recommendation = "warn";
@@ -116,15 +142,29 @@ index 05ff9a6..198fb18 100644 + /* If we are using bridges and all our OR connections are now + closed, it means that we totally failed to connect to our + bridges. Throw a warning. */ -+ if (get_options()->UseBridges && !any_active_or_conns()) ++ if (get_options()->UseBridges && !any_other_active_or_conns(or_conn)) recommendation = "warn";
if (we_are_hibernating()) +diff --git a/src/or/control.h b/src/or/control.h +index 61062da..1d90a90 100644 +--- a/src/or/control.h ++++ b/src/or/control.h +@@ -85,7 +85,8 @@ void enable_control_logging(void); + void monitor_owning_controller_process(const char *process_spec); + + void control_event_bootstrap(bootstrap_status_t status, int progress); +-void control_event_bootstrap_problem(const char *warn, int reason); ++void control_event_bootstrap_problem(const char *warn, int reason, ++ const or_connection_t *or_conn); + + void control_event_clients_seen(const char *controller_str); + diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c -index d463303..17c5b13 100644 +index 2aa063c..b145c94 100644 --- a/src/or/entrynodes.c +++ b/src/or/entrynodes.c -@@ -2213,27 +2213,6 @@ any_bridge_descriptors_known(void) +@@ -2134,27 +2134,6 @@ any_bridge_descriptors_known(void) return choose_random_entry(NULL) != NULL; }
@@ -153,10 +193,10 @@ index d463303..17c5b13 100644 * (bridge or member of EntryNodes) and all descriptors we know are * down. Else return 0. If <b>act</b> is 1, then mark the down guards diff --git a/src/or/entrynodes.h b/src/or/entrynodes.h -index 772c666..73ac017 100644 +index 52b8dc0..f6c07d9 100644 --- a/src/or/entrynodes.h +++ b/src/or/entrynodes.h -@@ -105,7 +105,6 @@ void retry_bridge_descriptor_fetch_directly(const char *digest); +@@ -104,7 +104,6 @@ void retry_bridge_descriptor_fetch_directly(const char *digest); void fetch_bridge_descriptors(const or_options_t *options, time_t now); void learned_bridge_descriptor(routerinfo_t *ri, int from_cache); int any_bridge_descriptors_known(void); diff --git a/gitian/patches/bug11156.patch b/gitian/patches/bug11156.patch new file mode 100644 index 0000000..ba6e266 --- /dev/null +++ b/gitian/patches/bug11156.patch @@ -0,0 +1,164 @@ +From af42f9b9125fb3f50f7383e63fb02bab1df82db9 Mon Sep 17 00:00:00 2001 +From: George Kadianakis desnacked@riseup.net +Date: Wed, 12 Mar 2014 20:25:05 -0700 +Subject: [PATCH] Don't do directory fetches before all PTs have been + configured. + +--- + src/or/microdesc.c | 2 +- + src/or/networkstatus.c | 36 ++++++++++++++++++++++++++++++------ + src/or/networkstatus.h | 2 +- + src/or/nodelist.c | 8 ++++---- + src/or/routerlist.c | 6 +++--- + 5 files changed, 39 insertions(+), 15 deletions(-) + +diff --git a/src/or/microdesc.c b/src/or/microdesc.c +index 90ac0ac..1f12347 100644 +--- a/src/or/microdesc.c ++++ b/src/or/microdesc.c +@@ -725,7 +725,7 @@ update_microdesc_downloads(time_t now) + smartlist_t *missing; + digestmap_t *pending; + +- if (should_delay_dir_fetches(options)) ++ if (should_delay_dir_fetches(options, NULL)) + return; + if (directory_too_idle_to_fetch_descriptors(options, now)) + return; +diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c +index 1b5c6db..bcadc52 100644 +--- a/src/or/networkstatus.c ++++ b/src/or/networkstatus.c +@@ -31,6 +31,7 @@ + #include "router.h" + #include "routerlist.h" + #include "routerparse.h" ++#include "transports.h" + + /* For tracking v2 networkstatus documents. Only caches do this now. */ + +@@ -1380,14 +1381,37 @@ update_consensus_networkstatus_fetch_time(time_t now) + + /** Return 1 if there's a reason we shouldn't try any directory + * fetches yet (e.g. we demand bridges and none are yet known). +- * Else return 0. */ ++ * Else return 0. ++ ++ * If we return 1 and <b>msg_out</b> is provided, set <b>msg_out</b> ++ * to an explanation of why directory fetches are delayed. (If we ++ * return 0, we set msg_out to NULL.) ++ */ + int +-should_delay_dir_fetches(const or_options_t *options) ++should_delay_dir_fetches(const or_options_t *options, const char **msg_out) + { +- if (options->UseBridges && !any_bridge_descriptors_known()) { +- log_info(LD_DIR, "delaying dir fetches (no running bridges known)"); +- return 1; ++ if (msg_out) { ++ *msg_out = NULL; + } ++ ++ if (options->UseBridges) { ++ if (!any_bridge_descriptors_known()) { ++ if (msg_out) { ++ *msg_out = "No running bridges"; ++ } ++ log_info(LD_DIR, "Delaying dir fetches (no running bridges known)"); ++ return 1; ++ } ++ ++ if (pt_proxies_configuration_pending()) { ++ if (msg_out) { ++ *msg_out = "Pluggable transport proxies still configuring"; ++ } ++ log_info(LD_DIR, "Delaying dir fetches (pt proxies still configuring)"); ++ return 1; ++ } ++ } ++ + return 0; + } + +@@ -1397,7 +1421,7 @@ void + update_networkstatus_downloads(time_t now) + { + const or_options_t *options = get_options(); +- if (should_delay_dir_fetches(options)) ++ if (should_delay_dir_fetches(options, NULL)) + return; + if (authdir_mode_any_main(options) || options->FetchV2Networkstatus) + update_v2_networkstatus_cache_downloads(now); +diff --git a/src/or/networkstatus.h b/src/or/networkstatus.h +index 761f8e7..f50f6f1 100644 +--- a/src/or/networkstatus.h ++++ b/src/or/networkstatus.h +@@ -69,7 +69,7 @@ int networkstatus_nickname_is_unnamed(const char *nickname); + void networkstatus_consensus_download_failed(int status_code, + const char *flavname); + void update_consensus_networkstatus_fetch_time(time_t now); +-int should_delay_dir_fetches(const or_options_t *options); ++int should_delay_dir_fetches(const or_options_t *options,const char **msg_out); + void update_networkstatus_downloads(time_t now); + void update_certificate_downloads(time_t now); + int consensus_is_waiting_for_certs(void); +diff --git a/src/or/nodelist.c b/src/or/nodelist.c +index 178f084..600a1fd 100644 +--- a/src/or/nodelist.c ++++ b/src/or/nodelist.c +@@ -1439,6 +1439,7 @@ update_router_have_minimum_dir_info(void) + const networkstatus_t *consensus = + networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor()); + int using_md; ++ const char *delay_fetches_msg = NULL; + + if (!consensus) { + if (!networkstatus_get_latest_consensus()) +@@ -1451,10 +1452,9 @@ update_router_have_minimum_dir_info(void) + goto done; + } + +- if (should_delay_dir_fetches(get_options())) { +- log_notice(LD_DIR, "no known bridge descriptors running yet; stalling"); +- strlcpy(dir_info_status, "No live bridge descriptors.", +- sizeof(dir_info_status)); ++ if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) { ++ log_notice(LD_DIR, "Delaying dir fetches: %s", delay_fetches_msg); ++ strlcpy(dir_info_status, "%s", sizeof(dir_info_status)); + res = 0; + goto done; + } +diff --git a/src/or/routerlist.c b/src/or/routerlist.c +index cb39729..d78c7bb 100644 +--- a/src/or/routerlist.c ++++ b/src/or/routerlist.c +@@ -684,7 +684,7 @@ authority_certs_fetch_missing(networkstatus_t *status, time_t now) + char id_digest_str[2*DIGEST_LEN+1]; + char sk_digest_str[2*DIGEST_LEN+1]; + +- if (should_delay_dir_fetches(get_options())) ++ if (should_delay_dir_fetches(get_options(), NULL)) + return; + + pending_cert = fp_pair_map_new(); +@@ -4901,7 +4901,7 @@ void + update_router_descriptor_downloads(time_t now) + { + const or_options_t *options = get_options(); +- if (should_delay_dir_fetches(options)) ++ if (should_delay_dir_fetches(options, NULL)) + return; + if (!we_fetch_router_descriptors(options)) + return; +@@ -4925,7 +4925,7 @@ update_extrainfo_downloads(time_t now) + int n_no_ei = 0, n_pending = 0, n_have = 0, n_delay = 0; + if (! options->DownloadExtraInfo) + return; +- if (should_delay_dir_fetches(options)) ++ if (should_delay_dir_fetches(options, NULL)) + return; + if (!router_have_minimum_dir_info()) + return; +-- +1.8.1.2 + diff --git a/gitian/patches/bug5018.patch b/gitian/patches/bug5018.patch index 4784027..b0ac8e6 100644 --- a/gitian/patches/bug5018.patch +++ b/gitian/patches/bug5018.patch @@ -1,14 +1,14 @@ -From e967595b931c92650250cc385ef7f6aeabd887f5 Mon Sep 17 00:00:00 2001 +From 3394daa34842a397561e65002a33c13355df651d Mon Sep 17 00:00:00 2001 From: George Kadianakis desnacked@riseup.net Date: Thu, 28 Feb 2013 18:58:36 +0200 -Subject: [PATCH 1/3] Only launch transport proxies that provide useful +Subject: [PATCH 1/4] Only launch transport proxies that provide useful transports.
--- - changes/bug5018 | 3 +++ - src/or/config.c | 20 ++++++++++++++++---- - src/or/entrynodes.c | 23 +++++++++++++++++++++++ - src/or/entrynodes.h | 1 + + changes/bug5018 | 3 +++ + src/or/config.c | 20 ++++++++++++++++---- + src/or/entrynodes.c | 23 +++++++++++++++++++++++ + src/or/entrynodes.h | 1 + 4 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 changes/bug5018
@@ -22,7 +22,7 @@ index 0000000..c5c12ef + - Don't launch pluggable transport proxies that contribute + transports we don't need. Resolves ticket 5018. diff --git a/src/or/config.c b/src/or/config.c -index 3984755..5f905d5 100644 +index ef02946..47510c5 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -4242,7 +4242,8 @@ parse_client_transport_line(const char *line, int validate_only) @@ -118,17 +118,17 @@ index 52b8dc0..b02cd48 100644
double pathbias_get_close_success_count(entry_guard_t *guard); -- -1.7.9.5 +1.8.1.2
-From d222f04e3a4093efc7be19f43def04d9c0704653 Mon Sep 17 00:00:00 2001 +From 54f75531a9613ee7b964be93b0051bc75322e7e3 Mon Sep 17 00:00:00 2001 From: David Fifield david@bamsoftware.com Date: Sat, 26 Oct 2013 14:34:48 -0700 -Subject: [PATCH 2/3] Simplify transport_is_needed. +Subject: [PATCH 2/4] Simplify transport_is_needed.
By Roger at https://trac.torproject.org/projects/tor/ticket/5018#comment:11. --- - src/or/entrynodes.c | 14 ++++---------- + src/or/entrynodes.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c @@ -163,21 +163,21 @@ index 4062cee..98a01c5 100644
/** Remember a new bridge at <b>addr</b>:<b>port</b>. If <b>digest</b> -- -1.7.9.5 +1.8.1.2
-From c1e396e66773813e051e8c96df86b585031a833b Mon Sep 17 00:00:00 2001 +From 936ff64974b00a898fa0e77e3fd6f9b2df57f448 Mon Sep 17 00:00:00 2001 From: David Fifield david@bamsoftware.com Date: Sat, 26 Oct 2013 14:37:50 -0700 -Subject: [PATCH 3/3] Document that unneeded transports are ignored. +Subject: [PATCH 3/4] Document that unneeded transports are ignored.
Suggested by Roger in https://trac.torproject.org/projects/tor/ticket/5018#comment:11. --- - src/or/config.c | 3 ++- + src/or/config.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/or/config.c b/src/or/config.c -index 5f905d5..3ae0216 100644 +index 47510c5..435d981 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -4220,7 +4220,8 @@ parse_bridge_line(const char *line, int validate_only) @@ -191,5 +191,35 @@ index 5f905d5..3ae0216 100644 * our internal transport list. * - If it's a managed proxy line, launch the managed proxy. */ -- -1.7.9.5 +1.8.1.2 + +From a4cf8514af1d2dbfd15857af83076577b7dcc4ee Mon Sep 17 00:00:00 2001 +From: George Kadianakis desnacked@riseup.net +Date: Mon, 10 Mar 2014 22:05:31 +0000 +Subject: [PATCH 4/4] Tone down the log message for when we don't need a PT + proxy. + +Conflicts: + changes/bug5018 +--- + src/or/config.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/or/config.c b/src/or/config.c +index 435d981..914c3de 100644 +--- a/src/or/config.c ++++ b/src/or/config.c +@@ -4295,8 +4295,8 @@ parse_client_transport_line(const char *line, int validate_only) + + if (is_managed) { /* managed */ + if (!validate_only && is_useless_proxy) { +- log_warn(LD_GENERAL, "Pluggable transport proxy (%s) does not provide " +- "any needed transports and will not be launched.", line); ++ log_notice(LD_GENERAL, "Pluggable transport proxy (%s) does not provide " ++ "any needed transports and will not be launched.", line); + } + + /* If we are not just validating, use the rest of the line as the +-- +1.8.1.2
diff --git a/gitian/patches/bug9229.patch b/gitian/patches/bug9229.patch new file mode 100644 index 0000000..6b1115c --- /dev/null +++ b/gitian/patches/bug9229.patch @@ -0,0 +1,46 @@ +From db72479eea4b5bbd73d1fa33f4c9e4e4e2b99b04 Mon Sep 17 00:00:00 2001 +From: Nick Mathewson nickm@torproject.org +Date: Mon, 10 Mar 2014 15:01:27 -0400 +Subject: [PATCH] Update ns downloads when we receive a bridge descriptor + +This prevents long stalls when we're starting with a state file but +with no bridge descriptors. Fixes bug 9229. I believe this bug has +been present since 0.2.0.3-alpha. +--- + changes/bug9229 | 5 +++++ + src/or/entrynodes.c | 6 +++++- + 2 files changed, 10 insertions(+), 1 deletion(-) + create mode 100644 changes/bug9229 + +diff --git a/changes/bug9229 b/changes/bug9229 +new file mode 100644 +index 0000000..ad7fd22 +--- /dev/null ++++ b/changes/bug9229 +@@ -0,0 +1,5 @@ ++ o Minor bugfixes: ++ - Avoid 60-second delays in the bootstrapping process when Tor ++ is launching for a second time while using bridges. Fixes bug 9229; ++ bugfix on 0.2.0.3-alpha. ++ +diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c +index 2aa063c..59770fa 100644 +--- a/src/or/entrynodes.c ++++ b/src/or/entrynodes.c +@@ -2115,8 +2115,12 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache) + * our entry node list */ + entry_guard_register_connect_status(ri->cache_info.identity_digest, + 1, 0, now); +- if (first) ++ if (first) { ++ /* XXXX apparently, this is never called. See bug #9229. */ + routerlist_retry_directory_downloads(now); ++ } ++ ++ update_networkstatus_downloads(now); + } + } + } +-- +1.8.1.2 +
tor-commits@lists.torproject.org