aboutsummaryrefslogtreecommitdiff
path: root/src/or/routerlist.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2006-04-29 18:42:26 +0000
committerNick Mathewson <nickm@torproject.org>2006-04-29 18:42:26 +0000
commit2b720b574695313ed695218f218bb9d7c74aabc0 (patch)
treebbf69aa116c4f88b0832763d3538f8d221d4970d /src/or/routerlist.c
parent15dbe02c04d23ee9b1091f8d8bff2720868633e1 (diff)
downloadtor-2b720b574695313ed695218f218bb9d7c74aabc0.tar
tor-2b720b574695313ed695218f218bb9d7c74aabc0.tar.gz
Start remembering *where* we are storing routerdescs. This will make us easier to move from a RAM-mirrors-disk model to a RAM-caches-disk model, and save maybe around 10MB on a directory server.
svn:r6427
Diffstat (limited to 'src/or/routerlist.c')
-rw-r--r--src/or/routerlist.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 617860530..4345eb353 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -186,6 +186,8 @@ router_append_to_journal(signed_descriptor_t *desc)
tor_free(fname);
return -1;
}
+ desc->saved_location = SAVED_IN_JOURNAL;
+ desc->saved_offset = router_journal_len;
tor_free(fname);
router_journal_len += len;
@@ -243,6 +245,20 @@ router_rebuild_store(int force)
log_warn(LD_FS, "Error writing router store to disk.");
goto done;
}
+ 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;
+ offset += sd->signed_descriptor_len;
+ });
+ }
tor_snprintf(fname, fname_len, "%s/cached-routers.new",
options->DataDirectory);
@@ -1920,7 +1936,7 @@ router_load_routers_from_string(const char *s, int from_cache,
char fp[HEX_DIGEST_LEN+1];
const char *msg;
- router_parse_list_from_string(&s, routers);
+ router_parse_list_from_string(&s, routers, from_cache);
routers_update_status_from_networkstatus(routers, !from_cache);