diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-12-17 13:15:45 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-12-17 13:15:45 -0500 |
commit | 3d5154550c92766347631e4d15fae825a0f165dd (patch) | |
tree | 1c696321c3613a2983d1872934b6d76d6931d9f5 /src/or/routerparse.c | |
parent | 59f50c80d443a7e148f85cfed493e3e703cc4386 (diff) | |
parent | d8cfa2ef4e6d57f6dd4a33e5b3cfb1a2a12fc4be (diff) | |
download | tor-3d5154550c92766347631e4d15fae825a0f165dd.tar.gz tor-3d5154550c92766347631e4d15fae825a0f165dd.zip |
Merge remote-tracking branch 'public/bug10409_023' into maint-0.2.4
Diffstat (limited to 'src/or/routerparse.c')
-rw-r--r-- | src/or/routerparse.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 890d59660a..3aa4bdf8a5 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -4245,12 +4245,17 @@ find_start_of_next_microdesc(const char *s, const char *eos) /** Parse as many microdescriptors as are found from the string starting at * <b>s</b> and ending at <b>eos</b>. If allow_annotations is set, read any - * annotations we recognize and ignore ones we don't. If <b>copy_body</b> is - * true, then strdup the bodies of the microdescriptors. Return all newly + * annotations we recognize and ignore ones we don't. + * + * If <b>saved_location</b> isn't SAVED_IN_CACHE, make a local copy of each + * descriptor in the body field of each microdesc_t. + * + * Return all newly * parsed microdescriptors in a newly allocated smartlist_t. */ smartlist_t * microdescs_parse_from_string(const char *s, const char *eos, - int allow_annotations, int copy_body) + int allow_annotations, + saved_location_t where) { smartlist_t *tokens; smartlist_t *result; @@ -4259,6 +4264,7 @@ microdescs_parse_from_string(const char *s, const char *eos, const char *start = s; const char *start_of_next_microdesc; int flags = allow_annotations ? TS_ANNOTATIONS_OK : 0; + const int copy_body = (where != SAVED_IN_CACHE); directory_token_t *tok; @@ -4288,6 +4294,7 @@ microdescs_parse_from_string(const char *s, const char *eos, tor_assert(cp); md->bodylen = start_of_next_microdesc - cp; + md->saved_location = where; if (copy_body) md->body = tor_memdup_nulterm(cp, md->bodylen); else |