aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2006-08-04 18:32:43 +0000
committerNick Mathewson <nickm@torproject.org>2006-08-04 18:32:43 +0000
commitbf72878cada8e60d9ceaffa6a9e7bcaf08ffe33c (patch)
tree6ecdad86da80473e4ae119bacde3f9feda40e014 /src/or
parentabe27b807eb14960ffb0c8e7b6dd5b1b7603efd2 (diff)
downloadtor-bf72878cada8e60d9ceaffa6a9e7bcaf08ffe33c.tar
tor-bf72878cada8e60d9ceaffa6a9e7bcaf08ffe33c.tar.gz
r7012@Kushana: nickm | 2006-08-03 19:21:25 -0700
Add an "mmap handle" type to encapsulate bookkeeping elements of mmap issues; add prelim win32 impl svn:r6980
Diffstat (limited to 'src/or')
-rw-r--r--src/or/or.h1
-rw-r--r--src/or/routerlist.c17
2 files changed, 10 insertions, 8 deletions
diff --git a/src/or/or.h b/src/or/or.h
index 7e3f96eaf..b1a213a8d 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1020,6 +1020,7 @@ typedef struct {
/** DOCDOC */
const char *mmap_descriptors;
size_t mmap_descriptors_len;
+ tor_mmap_t *mmap_handle;
} routerlist_t;
/** Information on router used when extending a circuit. (We don't need a
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index de98ac52f..e9819ddd8 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -276,12 +276,12 @@ router_rebuild_store(int force)
goto done;
}
/* Our mmap is now invalid. */
- if (routerlist->mmap_descriptors) {
- tor_munmap_file(routerlist->mmap_descriptors,
- routerlist->mmap_descriptors_len);
- routerlist->mmap_descriptors =
- tor_mmap_file(fname, &routerlist->mmap_descriptors_len);
- if (! routerlist->mmap_descriptors)
+ if (routerlist->mmap_handle) {
+ tor_munmap_file(routerlist->mmap_handle);
+ routerlist->mmap_handle = tor_mmap_file(fname,
+ &routerlist->mmap_descriptors,
+ &routerlist->mmap_descriptors_len);
+ if (! routerlist->mmap_handle)
log_warn(LD_FS, "Unable to mmap new descriptor file at '%s'.",fname);
}
@@ -340,8 +340,9 @@ router_reload_router_list(void)
router_journal_len = router_store_len = 0;
tor_snprintf(fname, fname_len, "%s/cached-routers", options->DataDirectory);
- routerlist->mmap_descriptors =
- tor_mmap_file(fname, &routerlist->mmap_descriptors_len);
+ routerlist->mmap_handle = tor_mmap_file(fname,
+ &routerlist->mmap_descriptors,
+ &routerlist->mmap_descriptors_len);
if (routerlist->mmap_descriptors) {
router_store_len = routerlist->mmap_descriptors_len;
router_load_routers_from_string(routerlist->mmap_descriptors,