--- /dev/null
+ o Minor bugfixes:
+ - Authorities now clean their microdesc cache periodically and when
+ reading from disk initially, not only when adding new descriptors.
+ This prevents a bug where we could lose microdescriptors. Bugfix
+ on 0.2.2.6-alpha.
+
rep_history_clean(now - options->RephistTrackTime);
rend_cache_clean();
rend_cache_clean_v2_descs_as_dir();
+ if (authdir_mode_v3(options))
+ microdesc_cache_rebuild(NULL, 0);
#define CLEAN_CACHES_INTERVAL (30*60)
time_to_clean_caches = now + CLEAN_CACHES_INTERVAL;
}
if (f)
finish_writing_to_file(open_file); /*XXX Check me.*/
- microdesc_cache_rebuild(cache, 0/* only as needed */);
-
return added;
}
}
cache->total_len_seen = 0;
cache->n_seen = 0;
+ cache->bytes_dropped = 0;
}
/** Reload the contents of <b>cache</b> from disk. If it is empty, load it
log_notice(LD_DIR, "Reloaded microdescriptor cache. Found %d descriptors.",
total);
- microdesc_cache_clean(cache, 0, 0);
+ microdesc_cache_rebuild(cache, 0 /* don't force */);
return 0;
}
off_t off = 0;
int orig_size, new_size;
+ if (cache == NULL) {
+ cache = the_microdesc_cache;
+ if (cache == NULL)
+ return 0;
+ }
+
/* Remove dead descriptors */
microdesc_cache_clean(cache, 0/*cutoff*/, 0/*force*/);