mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 05:03:43 +01:00
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
This commit is contained in:
parent
d7bf7e0b32
commit
7aa7d1a3e7
@ -12,6 +12,9 @@ Changes in version 0.2.1.9-alpha - 200?-??-??
|
||||
been fetched and validated.
|
||||
- Finally remove deprecated "EXTENEDED_FORMAT" feature. It has
|
||||
been called EXTENDED_EVENTS since 0.1.2.4-alpha.
|
||||
- When we realize that another process has modified our cached
|
||||
descriptors, print out a more useful error message rather than
|
||||
triggering an assertion. Fixes bug 885.
|
||||
|
||||
o Minor bugfixes:
|
||||
- Resume using the correct "REASON=" stream when telling the
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user