mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
r8800@totoro: nickm | 2006-09-29 23:10:49 -0400
Resolve bug 336: When displaying circuit paths with non-named routers, use their digests, not their nicknames. svn:r8548
This commit is contained in:
parent
2cb956d1f5
commit
723ff1c93d
@ -45,6 +45,8 @@ Changes in version 0.1.2.2-alpha - 2006-??-??
|
||||
- Only include function names in log messages for debugging messages;
|
||||
in other cases, the content of the message should be clear on its own,
|
||||
and including the function name only seems to confuse users.
|
||||
- Fix CIRC controller events so that controllers can learn the identity
|
||||
digests of non-Named servers used in circuit paths. (Fixes bug 336.)
|
||||
|
||||
o Security Fixes, minor:
|
||||
- If a client asked for a server by name, and we didn't have a
|
||||
|
3
doc/TODO
3
doc/TODO
@ -45,7 +45,8 @@ N - Bug 303: block exit from circuits created with create-fast
|
||||
- Specify and document
|
||||
- Implement
|
||||
- Note that we'd like a better speed-bump too.
|
||||
N - Bug 336: figure out the right thing to do when telling nicknames to
|
||||
o Bug 336: CIRC events should have digests when appropriate.
|
||||
N - figure out the right thing to do when telling nicknames to
|
||||
controllers. We should always give digest, and possibly sometimes give
|
||||
nickname? Or digest, and nickname, with indication of whether name is
|
||||
canonical?
|
||||
|
@ -116,20 +116,29 @@ circuit_list_path(origin_circuit_t *circ, int verbose)
|
||||
circ->build_state->desired_path_len,
|
||||
circ->_base.state == CIRCUIT_STATE_OPEN ? "" : ", exit ",
|
||||
circ->_base.state == CIRCUIT_STATE_OPEN ? "" :
|
||||
(nickname?nickname:"*unnamed*"));
|
||||
(nickname?nickname:"*unnamed*"));
|
||||
smartlist_add(elements, tor_strdup(buf));
|
||||
}
|
||||
|
||||
hop = circ->cpath;
|
||||
do {
|
||||
const char *elt;
|
||||
routerinfo_t *ri;
|
||||
char *elt;
|
||||
if (!hop)
|
||||
break;
|
||||
if (!verbose && hop->state != CPATH_STATE_OPEN)
|
||||
break;
|
||||
if (!hop->extend_info)
|
||||
break;
|
||||
elt = hop->extend_info->nickname;
|
||||
if ((ri = router_get_by_digest(hop->extend_info->identity_digest)) &&
|
||||
ri->is_named) {
|
||||
elt = tor_strdup(hop->extend_info->nickname);
|
||||
} else {
|
||||
elt = tor_malloc(HEX_DIGEST_LEN+2);
|
||||
elt[0] = '$';
|
||||
base16_encode(elt+1, HEX_DIGEST_LEN+1,
|
||||
hop->extend_info->identity_digest, DIGEST_LEN);
|
||||
}
|
||||
tor_assert(elt);
|
||||
if (verbose) {
|
||||
size_t len = strlen(elt)+2+strlen(states[hop->state])+1;
|
||||
@ -137,8 +146,9 @@ circuit_list_path(origin_circuit_t *circ, int verbose)
|
||||
tor_assert(hop->state <= 2);
|
||||
tor_snprintf(v,len,"%s(%s)",elt,states[hop->state]);
|
||||
smartlist_add(elements, v);
|
||||
tor_free(elt);
|
||||
} else {
|
||||
smartlist_add(elements, tor_strdup(elt));
|
||||
smartlist_add(elements, elt);
|
||||
}
|
||||
hop = hop->next;
|
||||
} while (hop != circ->cpath);
|
||||
|
Loading…
Reference in New Issue
Block a user