Loading doc/TODO +1 −1 Original line number Diff line number Diff line Loading @@ -169,7 +169,7 @@ N . Routerdesc download changes - Should directory mirrors do something else entirely? - Use has_fetched_directory sanely, whatever that means. - What *does* that mean? - If we have a routerdesc for Bob, and he says, "I'm 0.1.0.x", don't o If we have a routerdesc for Bob, and he says, "I'm 0.1.0.x", don't fetch a new one if it was published in the last 2 hours. - How does this interact with the 'recognized hash' rule? . Downgrade new directory events from notice to info Loading src/or/directory.c +7 −5 Original line number Diff line number Diff line Loading @@ -981,7 +981,9 @@ connection_dir_client_reached_eof(connection_t *conn) n_asked_for = smartlist_len(which); } if (status_code != 200) { log_fn(LOG_WARN,"Received http status code %d (\"%s\") from server '%s:%d' while fetching \"/tor/server/%s\". I'll try again soon.", /* 404 means that it didn't have them; no big deal. */ log_fn(status_code == 404 ? LOG_INFO : LOG_WARN, "Received http status code %d (\"%s\") from server '%s:%d' while fetching \"/tor/server/%s\". I'll try again soon.", status_code, reason, conn->address, conn->port, conn->requested_resource); tor_free(body); tor_free(headers); tor_free(reason); Loading Loading @@ -1283,7 +1285,7 @@ directory_handle_command_get(connection_t *conn, char *headers, dirserv_get_routerdescs(descs, url); tor_free(url); if (!smartlist_len(descs)) { write_http_status_line(conn, 400, "Servers unavailable."); write_http_status_line(conn, 404, "Servers unavailable."); } else { size_t len = 0; format_rfc1123_time(date, time(NULL)); Loading Loading @@ -1588,13 +1590,13 @@ dir_routerdesc_download_failed(smartlist_t *failed) } } if (rs->next_attempt_at == 0) log_fn(LOG_NOTICE, "%s failed %d time(s); I'll try again immediately.", log_fn(LOG_INFO, "%s failed %d time(s); I'll try again immediately.", cp, (int)rs->n_download_failures); else if (rs->next_attempt_at < TIME_MAX) log_fn(LOG_NOTICE, "%s failed %d time(s); I'll try again in %d seconds.", log_fn(LOG_INFO, "%s failed %d time(s); I'll try again in %d seconds.", cp, (int)rs->n_download_failures, (int)(rs->next_attempt_at-now)); else log_fn(LOG_NOTICE, "%s failed %d time(s); Giving up for a while.", log_fn(LOG_INFO, "%s failed %d time(s); Giving up for a while.", cp, (int)rs->n_download_failures); }); Loading src/or/routerlist.c +16 −4 Original line number Diff line number Diff line Loading @@ -2349,7 +2349,9 @@ routers_update_status_from_networkstatus(smartlist_t *routers, int reset_failure static smartlist_t * router_list_downloadable(void) { #define MAX_OLD_SERVER_DOWNLOAD_RATE 2*60*60 int n_conns, i, n_downloadable = 0; int n_uptodate=0,n_skip_old=0; connection_t **carray; smartlist_t *superseded = smartlist_create(); smartlist_t *downloading; Loading Loading @@ -2424,12 +2426,22 @@ router_list_downloadable(void) continue; } /* Change this "or" to be an "and" once dirs generate hashes right. * Remove the version check once older versions are uncommon. * XXXXX. NM */ if (!memcmp(ri->signed_descriptor_digest, rs->status.descriptor_digest, DIGEST_LEN) || rs->status.published_on <= ri->published_on) { /* Same digest, or earlier. No need to download it. */ ++n_uptodate; rs->should_download = 0; --n_downloadable; } else if (ri->platform && !tor_version_as_new_as(ri->platform, "0.1.1.6-alpha") && ri->published_on + MAX_OLD_SERVER_DOWNLOAD_RATE > now) { /* Same digest, or date is up-to-date, or we have a comparatively recent * server with an old version. * No need to download it. */ // log_fn(LOG_NOTICE, "Up-to-date status for %s", fp); ++n_skip_old; rs->should_download = 0; --n_downloadable; } /* else { Loading @@ -2447,6 +2459,9 @@ router_list_downloadable(void) }); } if (n_skip_old) log_fn(LOG_INFO, "Skipped %d updatable pre-0.1.1.6 servers.", n_skip_old); if (!n_downloadable) return superseded; Loading Loading @@ -2479,7 +2494,6 @@ update_router_descriptor_downloads(time_t now) smartlist_t *downloadable = NULL; int get_all = 0; int always_split = !server_mode(get_options()) || !get_options()->DirPort; if (!networkstatus_list || smartlist_len(networkstatus_list)<2) get_all = 1; Loading Loading @@ -2519,8 +2533,6 @@ update_router_descriptor_downloads(time_t now) directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC,resource,1); } tor_free(resource); } else { log_fn(LOG_NOTICE, "No routers to download."); } SMARTLIST_FOREACH(downloadable, char *, c, tor_free(c)); smartlist_free(downloadable); Loading Loading
doc/TODO +1 −1 Original line number Diff line number Diff line Loading @@ -169,7 +169,7 @@ N . Routerdesc download changes - Should directory mirrors do something else entirely? - Use has_fetched_directory sanely, whatever that means. - What *does* that mean? - If we have a routerdesc for Bob, and he says, "I'm 0.1.0.x", don't o If we have a routerdesc for Bob, and he says, "I'm 0.1.0.x", don't fetch a new one if it was published in the last 2 hours. - How does this interact with the 'recognized hash' rule? . Downgrade new directory events from notice to info Loading
src/or/directory.c +7 −5 Original line number Diff line number Diff line Loading @@ -981,7 +981,9 @@ connection_dir_client_reached_eof(connection_t *conn) n_asked_for = smartlist_len(which); } if (status_code != 200) { log_fn(LOG_WARN,"Received http status code %d (\"%s\") from server '%s:%d' while fetching \"/tor/server/%s\". I'll try again soon.", /* 404 means that it didn't have them; no big deal. */ log_fn(status_code == 404 ? LOG_INFO : LOG_WARN, "Received http status code %d (\"%s\") from server '%s:%d' while fetching \"/tor/server/%s\". I'll try again soon.", status_code, reason, conn->address, conn->port, conn->requested_resource); tor_free(body); tor_free(headers); tor_free(reason); Loading Loading @@ -1283,7 +1285,7 @@ directory_handle_command_get(connection_t *conn, char *headers, dirserv_get_routerdescs(descs, url); tor_free(url); if (!smartlist_len(descs)) { write_http_status_line(conn, 400, "Servers unavailable."); write_http_status_line(conn, 404, "Servers unavailable."); } else { size_t len = 0; format_rfc1123_time(date, time(NULL)); Loading Loading @@ -1588,13 +1590,13 @@ dir_routerdesc_download_failed(smartlist_t *failed) } } if (rs->next_attempt_at == 0) log_fn(LOG_NOTICE, "%s failed %d time(s); I'll try again immediately.", log_fn(LOG_INFO, "%s failed %d time(s); I'll try again immediately.", cp, (int)rs->n_download_failures); else if (rs->next_attempt_at < TIME_MAX) log_fn(LOG_NOTICE, "%s failed %d time(s); I'll try again in %d seconds.", log_fn(LOG_INFO, "%s failed %d time(s); I'll try again in %d seconds.", cp, (int)rs->n_download_failures, (int)(rs->next_attempt_at-now)); else log_fn(LOG_NOTICE, "%s failed %d time(s); Giving up for a while.", log_fn(LOG_INFO, "%s failed %d time(s); Giving up for a while.", cp, (int)rs->n_download_failures); }); Loading
src/or/routerlist.c +16 −4 Original line number Diff line number Diff line Loading @@ -2349,7 +2349,9 @@ routers_update_status_from_networkstatus(smartlist_t *routers, int reset_failure static smartlist_t * router_list_downloadable(void) { #define MAX_OLD_SERVER_DOWNLOAD_RATE 2*60*60 int n_conns, i, n_downloadable = 0; int n_uptodate=0,n_skip_old=0; connection_t **carray; smartlist_t *superseded = smartlist_create(); smartlist_t *downloading; Loading Loading @@ -2424,12 +2426,22 @@ router_list_downloadable(void) continue; } /* Change this "or" to be an "and" once dirs generate hashes right. * Remove the version check once older versions are uncommon. * XXXXX. NM */ if (!memcmp(ri->signed_descriptor_digest, rs->status.descriptor_digest, DIGEST_LEN) || rs->status.published_on <= ri->published_on) { /* Same digest, or earlier. No need to download it. */ ++n_uptodate; rs->should_download = 0; --n_downloadable; } else if (ri->platform && !tor_version_as_new_as(ri->platform, "0.1.1.6-alpha") && ri->published_on + MAX_OLD_SERVER_DOWNLOAD_RATE > now) { /* Same digest, or date is up-to-date, or we have a comparatively recent * server with an old version. * No need to download it. */ // log_fn(LOG_NOTICE, "Up-to-date status for %s", fp); ++n_skip_old; rs->should_download = 0; --n_downloadable; } /* else { Loading @@ -2447,6 +2459,9 @@ router_list_downloadable(void) }); } if (n_skip_old) log_fn(LOG_INFO, "Skipped %d updatable pre-0.1.1.6 servers.", n_skip_old); if (!n_downloadable) return superseded; Loading Loading @@ -2479,7 +2494,6 @@ update_router_descriptor_downloads(time_t now) smartlist_t *downloadable = NULL; int get_all = 0; int always_split = !server_mode(get_options()) || !get_options()->DirPort; if (!networkstatus_list || smartlist_len(networkstatus_list)<2) get_all = 1; Loading Loading @@ -2519,8 +2533,6 @@ update_router_descriptor_downloads(time_t now) directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC,resource,1); } tor_free(resource); } else { log_fn(LOG_NOTICE, "No routers to download."); } SMARTLIST_FOREACH(downloadable, char *, c, tor_free(c)); smartlist_free(downloadable); Loading