summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/conscache.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/or/conscache.c b/src/or/conscache.c
index 4919dba3d2..33a5495974 100644
--- a/src/or/conscache.c
+++ b/src/or/conscache.c
@@ -539,6 +539,10 @@ consensus_cache_rescan(consensus_cache_t *cache)
map = storage_dir_map_labeled(cache->dir, fname,
&labels, &body, &bodylen);
if (! map) {
+ /* The ERANGE error might come from tor_mmap_file() -- it means the file
+ * was empty. EINVAL might come from ..map_labeled() -- it means the
+ * file was misformatted. In both cases, we should just delete it.
+ */
if (errno == ERANGE || errno == EINVAL) {
log_warn(LD_FS, "Found %s file %s in consensus cache; removing it.",
errno == ERANGE ? "empty" : "misformatted",