]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Likely fix for bug 309: when we calculate offsets after rebuilding the descriptor...
authorNick Mathewson <nickm@torproject.org>
Tue, 27 Jun 2006 15:52:51 +0000 (15:52 +0000)
committerNick Mathewson <nickm@torproject.org>
Tue, 27 Jun 2006 15:52:51 +0000 (15:52 +0000)
svn:r6693

src/or/routerlist.c

index 009858054316bc88e47e491b39a7f4f8d20217e0..548103a0cfa33dd089d9df360a498f7b049a6ce6 100644 (file)
@@ -221,6 +221,7 @@ router_rebuild_store(int force)
   smartlist_t *chunk_list = NULL;
   char *fname = NULL;
   int r = -1, i;
+  off_t offset = 0;
 
   if (!force && !router_should_rebuild_store())
     return 0;
@@ -230,6 +231,8 @@ router_rebuild_store(int force)
   /* Don't save deadweight. */
   routerlist_remove_old_routers();
 
+  log_info(LD_DIR, "Rebuilding router descriptor cache");
+
   options = get_options();
   fname_len = strlen(options->DataDirectory)+32;
   fname = tor_malloc(fname_len);
@@ -279,19 +282,19 @@ router_rebuild_store(int force)
       log_warn(LD_FS, "Unable to mmap new descriptor file at '%s'.",fname);
   }
 
+  offset = 0;
   for (i = 0; i < 2; ++i) {
     smartlist_t *lst = (i == 0) ? routerlist->old_routers :
                                   routerlist->routers;
-    off_t offset = 0;
     SMARTLIST_FOREACH(lst, void *, ptr,
     {
       signed_descriptor_t *sd = (i==0) ?
         ((signed_descriptor_t*)ptr): &((routerinfo_t*)ptr)->cache_info;
 
       sd->saved_location = SAVED_IN_CACHE;
-      sd->saved_offset = offset;
-      if (routerlist->mmap_descriptors)
-        sd->signed_descriptor_body = NULL;
+      if (routerlist->mmap_descriptors) {
+        tor_free(sd->signed_descriptor_body); // sets it to null
+      }
       offset += sd->signed_descriptor_len;
     });
   }