Commit bdff7e32 authored by Nick Mathewson's avatar Nick Mathewson 🐘
Browse files

Unmap microdesc cache before replacing it.

If we do a replace-then-munmap, windows will never actually rewrite
the microdesc cache.

Found by wanoskarnet; bugfix on 0.2.2.6-alpha.
parent b47f574c
Loading
Loading
Loading
Loading
+6 −0
Changes for changes/md_cache_replace: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
  o Minor bugfixes
    - Avoid a bug that would keep us from replacing a microdescriptor
      cache on Windows.  (We would try to replace the file while still
      holding it open.  That's fine on Unix, but Windows doesn't let us
      do that.)  Bugfix on 0.2.2.6-alpha; bug found by wanoskarnet.
+3 −2
Changes for src/or/microdesc.c: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -399,10 +399,11 @@ microdesc_cache_rebuild(microdesc_cache_t *cache, int force)
    smartlist_add(wrote, md);
  }

  finish_writing_to_file(open_file); /*XXX Check me.*/

  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)) {