diff options
author | Nick Mathewson <nickm@torproject.org> | 2006-08-04 18:32:43 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2006-08-04 18:32:43 +0000 |
commit | bf72878cada8e60d9ceaffa6a9e7bcaf08ffe33c (patch) | |
tree | 6ecdad86da80473e4ae119bacde3f9feda40e014 /src/or | |
parent | abe27b807eb14960ffb0c8e7b6dd5b1b7603efd2 (diff) | |
download | tor-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.h | 1 | ||||
-rw-r--r-- | src/or/routerlist.c | 17 |
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, |