mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
free bridge list on exit; try harder to free buffer freelists on exit.
svn:r10854
This commit is contained in:
parent
b7e4683ff9
commit
a1ab2c8087
@ -262,16 +262,19 @@ buf_shrink_freelists(int free_all)
|
||||
int j;
|
||||
for (j = 0; j < 2; ++j) {
|
||||
free_mem_list_t *list = j ? &free_mem_list_16k : &free_mem_list_4k;
|
||||
if (list->lowwater > list->slack) {
|
||||
if (list->lowwater > list->slack || free_all) {
|
||||
int i, n_to_skip, n_to_free;
|
||||
char **ptr;
|
||||
log_info(LD_GENERAL, "We haven't used %d/%d allocated %d-byte buffer "
|
||||
if (free_all) { /* Free every one of them */
|
||||
log_info(LD_GENERAL, "Freeing all %d elements from %d-byte freelist.",
|
||||
list->len, (int)list->chunksize);
|
||||
n_to_free = list->len;
|
||||
} else { /* Skip over the slack and non-lowwater entries */
|
||||
log_info(LD_GENERAL, "We haven't used %d/%d allocated %d-byte buffer "
|
||||
"memory chunks since the last call; freeing all but %d of them",
|
||||
list->lowwater, list->len, (int)list->chunksize, list->slack);
|
||||
if (free_all) /* Free every one of them */
|
||||
n_to_free = list->len;
|
||||
else /* Skip over the slack and non-lowwater entries */
|
||||
n_to_free = list->lowwater - list->slack;
|
||||
}
|
||||
n_to_skip = list->len - n_to_free;
|
||||
for (ptr = &list->list, i = 0; i < n_to_skip; ++i) {
|
||||
char *mem = *ptr;
|
||||
|
@ -2083,17 +2083,6 @@ pick_entry_guards(void)
|
||||
entry_guards_changed();
|
||||
}
|
||||
|
||||
/** Release all storage held by the list of entry guards. */
|
||||
void
|
||||
entry_guards_free_all(void)
|
||||
{
|
||||
if (entry_guards) {
|
||||
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, tor_free(e));
|
||||
smartlist_free(entry_guards);
|
||||
entry_guards = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/** How long (in seconds) do we allow an entry guard to be nonfunctional,
|
||||
* unlisted, excluded, or otherwise nonusable before we give up on it? */
|
||||
#define ENTRY_GUARD_REMOVE_AFTER (30*24*60*60)
|
||||
@ -2823,3 +2812,18 @@ any_bridge_descriptors_known(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
/** Release all storage held by the list of entry guards and related
|
||||
* memory structs. */
|
||||
void
|
||||
entry_guards_free_all(void)
|
||||
{
|
||||
if (entry_guards) {
|
||||
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, tor_free(e));
|
||||
smartlist_free(entry_guards);
|
||||
entry_guards = NULL;
|
||||
}
|
||||
clear_bridge_list();
|
||||
smartlist_free(bridge_list);
|
||||
bridge_list = NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user