mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
Check more error codes when writing microdescriptors.
Possible partial fix, or diagnosis tool, for bug 8031.
This commit is contained in:
parent
d54ccbe9fd
commit
6905c1f60d
2 changed files with 21 additions and 4 deletions
7
changes/bug8031
Normal file
7
changes/bug8031
Normal file
|
@ -0,0 +1,7 @@
|
|||
o Minor bugfixes:
|
||||
- Use direct writes rather than stdio when building microdescriptor
|
||||
caches, in an attempt to mitigate bug 8031, or at least make it
|
||||
less common.
|
||||
- Warn more aggressively when flushing microdescriptors to a
|
||||
microdescriptor cache fails, in an attempt to mitegate bug 8031,
|
||||
or at least make it more diagnosable.
|
|
@ -251,8 +251,14 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache,
|
|||
cache->total_len_seen += md->bodylen;
|
||||
} SMARTLIST_FOREACH_END(md);
|
||||
|
||||
if (fd >= 0)
|
||||
finish_writing_to_file(open_file); /*XXX Check me.*/
|
||||
if (fd >= 0) {
|
||||
if (finish_writing_to_file(open_file) < 0) {
|
||||
log_warn(LD_DIR, "Error appending to microdescriptor file: %s",
|
||||
strerror(errno));
|
||||
smartlist_clear(added);
|
||||
return added;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
networkstatus_t *ns = networkstatus_get_latest_consensus();
|
||||
|
@ -459,11 +465,15 @@ microdesc_cache_rebuild(microdesc_cache_t *cache, int force)
|
|||
smartlist_add(wrote, md);
|
||||
}
|
||||
|
||||
if (finish_writing_to_file(open_file) < 0) {
|
||||
log_warn(LD_DIR, "Error rebuilding microdescriptor cache: %s",
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (cache->cache_content)
|
||||
tor_munmap_file(cache->cache_content);
|
||||
|
||||
finish_writing_to_file(open_file); /*XXX Check me.*/
|
||||
|
||||
cache->cache_content = tor_mmap_file(cache->cache_fname);
|
||||
|
||||
if (!cache->cache_content && smartlist_len(wrote)) {
|
||||
|
|
Loading…
Add table
Reference in a new issue