mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 13:43:47 +01:00
fixup! Make router_pick_directory_server respect PDS_NO_EXISTING_*
Document n_busy_out, and set it correctly when we goto retry_without_exclude.
This commit is contained in:
parent
482e3cfa09
commit
55b21b366c
@ -1383,6 +1383,10 @@ router_pick_dirserver_generic(smartlist_t *sourcelist,
|
|||||||
*
|
*
|
||||||
* If the PDS_PREFER_TUNNELED_DIR_CONNS_ flag is set, prefer directory servers
|
* If the PDS_PREFER_TUNNELED_DIR_CONNS_ flag is set, prefer directory servers
|
||||||
* that we can use with BEGINDIR.
|
* that we can use with BEGINDIR.
|
||||||
|
*
|
||||||
|
* If <b>n_busy_out</b> is provided, set *<b>n_busy_out</b> to the number of
|
||||||
|
* directories that we excluded for no other reason than
|
||||||
|
* PDS_NO_EXISTING_SERVERDESC_FETCH or PDS_NO_EXISTING_MICRODESC_FETCH.
|
||||||
*/
|
*/
|
||||||
static const routerstatus_t *
|
static const routerstatus_t *
|
||||||
router_pick_directory_server_impl(dirinfo_type_t type, int flags,
|
router_pick_directory_server_impl(dirinfo_type_t type, int flags,
|
||||||
@ -1506,17 +1510,18 @@ router_pick_directory_server_impl(dirinfo_type_t type, int flags,
|
|||||||
smartlist_free(overloaded_direct);
|
smartlist_free(overloaded_direct);
|
||||||
smartlist_free(overloaded_tunnel);
|
smartlist_free(overloaded_tunnel);
|
||||||
|
|
||||||
if (n_busy_out)
|
|
||||||
*n_busy_out = n_busy;
|
|
||||||
|
|
||||||
if (result == NULL && try_excluding && !options->StrictNodes && n_excluded) {
|
if (result == NULL && try_excluding && !options->StrictNodes && n_excluded) {
|
||||||
/* If we got no result, and we are excluding nodes, and StrictNodes is
|
/* If we got no result, and we are excluding nodes, and StrictNodes is
|
||||||
* not set, try again without excluding nodes. */
|
* not set, try again without excluding nodes. */
|
||||||
try_excluding = 0;
|
try_excluding = 0;
|
||||||
n_excluded = 0;
|
n_excluded = 0;
|
||||||
|
n_busy = 0;
|
||||||
goto retry_without_exclude;
|
goto retry_without_exclude;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (n_busy_out)
|
||||||
|
*n_busy_out = n_busy;
|
||||||
|
|
||||||
return result ? result->rs : NULL;
|
return result ? result->rs : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user