From 7aa7d1a3e7f8b39b5c4f036beeb92f23c5d39e5d Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 10 Dec 2008 03:01:26 +0000 Subject: Give a better error when something has changed our descriptor cache out from under us. Based on patch from Karsten. Addresses bug 885. svn:r17550 --- src/or/routerlist.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/or/routerlist.c') diff --git a/src/or/routerlist.c b/src/or/routerlist.c index e2f3170b6a..5ed8813f9a 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -2211,6 +2211,11 @@ signed_descriptor_get_body_impl(signed_descriptor_t *desc, if (store && store->mmap) { tor_assert(desc->saved_offset + len <= store->mmap->size); r = store->mmap->data + offset; + } else if (store) { + log_err(LD_DIR, "We couldn't read a descriptor that is supposedly " + "mmaped in our cache. Is another process running in our data " + "directory? Exiting."); + exit(1); } } if (!r) /* no mmap, or not in cache. */ @@ -2221,11 +2226,11 @@ signed_descriptor_get_body_impl(signed_descriptor_t *desc, if (!with_annotations) { if (memcmp("router ", r, 7) && memcmp("extra-info ", r, 11)) { char *cp = tor_strndup(r, 64); - log_err(LD_DIR, "descriptor at %p begins with unexpected string %s", + log_err(LD_DIR, "descriptor at %p begins with unexpected string %s. " + "Is another process running in our data directory? Exiting.", desc, escaped(cp)); - tor_free(cp); + exit(1); } - tor_assert(!memcmp("router ", r, 7) || !memcmp("extra-info ", r, 11)); } return r; -- cgit v1.2.3-54-g00ecf