summaryrefslogtreecommitdiff
path: root/src/or/dirserv.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2009-01-06 15:37:51 +0000
committerNick Mathewson <nickm@torproject.org>2009-01-06 15:37:51 +0000
commit9abfb564a04b498ae25a63746c72a21ee7f2dbc8 (patch)
treed970accb0a0035a61cbb0579565be99d8b6aa9cc /src/or/dirserv.c
parentd95b63f1e4492507b1950d74f7ec845a6786d80e (diff)
downloadtor-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.c15
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);