diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-01-06 15:37:51 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2009-01-06 15:37:51 +0000 |
commit | 9abfb564a04b498ae25a63746c72a21ee7f2dbc8 (patch) | |
tree | d970accb0a0035a61cbb0579565be99d8b6aa9cc /src/or/dirserv.c | |
parent | d95b63f1e4492507b1950d74f7ec845a6786d80e (diff) | |
download | tor-9abfb564a04b498ae25a63746c72a21ee7f2dbc8.tar.gz tor-9abfb564a04b498ae25a63746c72a21ee7f2dbc8.zip |
Make dirserv_get_routerdesc_fingerprints() treat extrainfos with send_unencrypted==0 correctly. Irrelevant, since we will soon never send them at all.
svn:r17953
Diffstat (limited to 'src/or/dirserv.c')
-rw-r--r-- | src/or/dirserv.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/or/dirserv.c b/src/or/dirserv.c index eff0a380dc..2647fe275c 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2680,7 +2680,8 @@ dirserv_get_networkstatus_v2(smartlist_t *result, */ int dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key, - const char **msg, int for_unencrypted_conn) + const char **msg, int for_unencrypted_conn, + int is_extrainfo) { int by_id = 1; *msg = NULL; @@ -2708,11 +2709,15 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key, } if (for_unencrypted_conn) { - /* Remove anything whose purpose isn't general. */ + /* Remove anything that insists it not be sent unencrypted. */ SMARTLIST_FOREACH(fps_out, char *, cp, { - signed_descriptor_t *sd = - by_id ? get_signed_descriptor_by_fp(cp,0,0) : - router_get_by_descriptor_digest(cp); + signed_descriptor_t *sd; + if (by_id) + sd = get_signed_descriptor_by_fp(cp,is_extrainfo,0); + else if (is_extrainfo) + sd = extrainfo_get_by_descriptor_digest(cp); + else + sd = router_get_by_descriptor_digest(cp); if (sd && !sd->send_unencrypted) { tor_free(cp); SMARTLIST_DEL_CURRENT(fps_out, cp); |