summaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
Diffstat (limited to 'src/or')
-rw-r--r--src/or/rendcommon.c7
-rw-r--r--src/or/rephist.c47
2 files changed, 31 insertions, 23 deletions
diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index 77fb984ba3..f9a237bb23 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -361,7 +361,7 @@ rend_cache_lookup_desc(const char *query, int version, const char **desc,
* Return -1 if it's malformed or otherwise rejected; return 0 if
* it's the same or older than one we've already got; return 1 if
* it's novel. The published flag tells us if we store the descriptor
- * in our role aus directory (1) or if we cache it as client (0).
+ * in our role as directory (1) or if we cache it as client (0).
*/
int
rend_cache_store(const char *desc, size_t desc_len, int published)
@@ -397,7 +397,7 @@ rend_cache_store(const char *desc, size_t desc_len, int published)
rend_service_descriptor_free(parsed);
return -1;
}
- /* report novel publication to statistic */
+ /* report novel publication to statistics */
if (published && options->HSAuthorityRecordStats) {
hs_usage_note_publish_total(query, time(NULL));
}
@@ -418,7 +418,7 @@ rend_cache_store(const char *desc, size_t desc_len, int published)
if (!e) {
e = tor_malloc_zero(sizeof(rend_cache_entry_t));
strmap_set_lc(rend_cache, key, e);
- /* report novel publication to statistic */
+ /* report novel publication to statistics */
if (published && options->HSAuthorityRecordStats) {
hs_usage_note_publish_novel(query, time(NULL));
}
@@ -486,6 +486,7 @@ rend_process_relay_cell(circuit_t *circ, int command, size_t length,
(void)r;
}
+/** Return the number of entries in our rendezvous descriptor cache. */
int
rend_cache_size(void)
{
diff --git a/src/or/rephist.c b/src/or/rephist.c
index 1940dd1919..1243fa3ebe 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -1197,10 +1197,10 @@ hs_usage_init(void)
/** Clears the given ordered list by resetting its attributes and releasing
* the memory allocated by its elements. */
static void
-hs_usage_list_clear(hs_usage_list_t *l)
+hs_usage_list_clear(hs_usage_list_t *lst)
{
/* walk through elements and free memory */
- hs_usage_list_elem_t *current = l->start;
+ hs_usage_list_elem_t *current = lst->start;
hs_usage_list_elem_t *tmp;
while (current != NULL) {
tmp = current->next;
@@ -1209,19 +1209,21 @@ hs_usage_list_clear(hs_usage_list_t *l)
current = tmp;
}
/* reset attributes */
- l->start = NULL;
- l->total_count = 0;
- l->total_service_ids = 0;
+ lst->start = NULL;
+ lst->total_count = 0;
+ lst->total_service_ids = 0;
return;
}
/** Frees the memory used by the given list. */
static void
-hs_usage_list_free(hs_usage_list_t *l)
+hs_usage_list_free(hs_usage_list_t *lst)
{
- hs_usage_list_clear(l);
+ if (!lst)
+ return;
+ hs_usage_list_clear(lst);
rephist_total_alloc -= sizeof(hs_usage_list_t);
- tor_free(l);
+ tor_free(lst);
}
/** Frees the memory used by the given service-related observations. */
@@ -1229,6 +1231,8 @@ static void
hs_usage_service_related_observation_free(
hs_usage_service_related_observation_t *s)
{
+ if (!s)
+ return;
hs_usage_list_free(s->list);
rephist_total_alloc -= sizeof(hs_usage_service_related_observation_t);
tor_free(s);
@@ -1257,20 +1261,23 @@ void
hs_usage_free_all(void)
{
hs_usage_general_period_related_observations_free(descs);
+ descs = NULL;
hs_usage_service_related_observation_free(fetch_successful);
hs_usage_service_related_observation_free(fetch_total);
hs_usage_service_related_observation_free(publish_novel);
hs_usage_service_related_observation_free(publish_total);
+ fetch_successful = fetch_total = publish_novel = publish_total = NULL;
hs_usage_current_observation_period_free(current_period);
+ current_period = NULL;
}
/** Inserts a new occurence for the given service id to the given ordered
* list. */
static void
-hs_usage_insert_value(hs_usage_list_t *l, const char *service_id)
+hs_usage_insert_value(hs_usage_list_t *lst, const char *service_id)
{
/* search if there is already an elem with same service_id in list */
- hs_usage_list_elem_t *current = l->start;
+ hs_usage_list_elem_t *current = lst->start;
hs_usage_list_elem_t *previous = NULL;
while (current != NULL && strcmp(current->service_id,service_id)) {
previous = current;
@@ -1283,14 +1290,14 @@ hs_usage_insert_value(hs_usage_list_t *l, const char *service_id)
/* create elem */
hs_usage_list_elem_t *e = hs_usage_list_elem_new();
/* update list attributes (one new elem, one new occurence) */
- l->total_count++;
- l->total_service_ids++;
+ lst->total_count++;
+ lst->total_service_ids++;
/* copy service id to elem */
strlcpy(e->service_id,service_id,sizeof(e->service_id));
/* let either l->start or previously last elem point to new elem */
- if (l->start == NULL) {
+ if (lst->start == NULL) {
/* this is the first elem */
- l->start = e;
+ lst->start = e;
} else {
/* there were elems in the list before */
previous->next = e;
@@ -1298,7 +1305,7 @@ hs_usage_insert_value(hs_usage_list_t *l, const char *service_id)
} else {
/* found! add occurence to elem and consider resorting */
/* update list attributes (no new elem, but one new occurence) */
- l->total_count++;
+ lst->total_count++;
/* add occurence to elem */
current->count++;
/* is it another than the first list elem? and has previous elem fewer
@@ -1308,14 +1315,14 @@ hs_usage_insert_value(hs_usage_list_t *l, const char *service_id)
/* remove current elem first */
previous->next = current->next;
/* can we prepend elem to all other elements? */
- if (l->start->count <= current->count) {
+ if (lst->start->count <= current->count) {
/* yes! prepend elem */
- current->next = l->start;
- l->start = current;
+ current->next = lst->start;
+ lst->start = current;
} else {
/* no! walk through list a second time and insert at correct place */
- hs_usage_list_elem_t *insert_current = l->start->next;
- hs_usage_list_elem_t *insert_previous = l->start;
+ hs_usage_list_elem_t *insert_current = lst->start->next;
+ hs_usage_list_elem_t *insert_previous = lst->start;
while (insert_current != NULL &&
insert_current->count > current->count) {
insert_previous = insert_current;