Loading src/or/buffers.c +8 −5 Original line number Diff line number Diff line Loading @@ -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; 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; Loading src/or/circuitbuild.c +15 −11 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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
src/or/buffers.c +8 −5 Original line number Diff line number Diff line Loading @@ -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; 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; Loading
src/or/circuitbuild.c +15 −11 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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; }