mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Add GETINFO md/id/* and md/name/* items for relay microdescs
This commit is contained in:
parent
e26f5553ec
commit
ef2b0bd528
9
changes/bug3832
Normal file
9
changes/bug3832
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
o Major features:
|
||||||
|
|
||||||
|
- Allow Tor controllers like Vidalia to obtain the microdescriptor
|
||||||
|
for a relay by identity digest or nickname. Previously,
|
||||||
|
microdescriptors were only available by their own digests, so a
|
||||||
|
controller would have to ask for and parse the whole
|
||||||
|
microdescriptor consensus in order to look up a single relay's
|
||||||
|
microdesc. Fixes bug 3832; bugfix on 0.2.3.1-alpha.
|
||||||
|
|
@ -1640,6 +1640,22 @@ getinfo_helper_dir(control_connection_t *control_conn,
|
|||||||
*answer = smartlist_join_strings(sl, "", 0, NULL);
|
*answer = smartlist_join_strings(sl, "", 0, NULL);
|
||||||
SMARTLIST_FOREACH(sl, char *, c, tor_free(c));
|
SMARTLIST_FOREACH(sl, char *, c, tor_free(c));
|
||||||
smartlist_free(sl);
|
smartlist_free(sl);
|
||||||
|
} else if (!strcmpstart(question, "md/id/")) {
|
||||||
|
const node_t *node = node_get_by_hex_id(question+strlen("md/id/"));
|
||||||
|
const microdesc_t *md = NULL;
|
||||||
|
if (node) md = node->md;
|
||||||
|
if (md) {
|
||||||
|
tor_assert(md->body);
|
||||||
|
*answer = tor_strndup(md->body, md->bodylen);
|
||||||
|
}
|
||||||
|
} else if (!strcmpstart(question, "md/name/")) {
|
||||||
|
const node_t *node = node_get_by_nickname(question+strlen("md/name/"), 1);
|
||||||
|
const microdesc_t *md = NULL;
|
||||||
|
if (node) md = node->md;
|
||||||
|
if (md) {
|
||||||
|
tor_assert(md->body);
|
||||||
|
*answer = tor_strndup(md->body, md->bodylen);
|
||||||
|
}
|
||||||
} else if (!strcmpstart(question, "desc-annotations/id/")) {
|
} else if (!strcmpstart(question, "desc-annotations/id/")) {
|
||||||
ri = router_get_by_hexdigest(question+
|
ri = router_get_by_hexdigest(question+
|
||||||
strlen("desc-annotations/id/"));
|
strlen("desc-annotations/id/"));
|
||||||
@ -2034,6 +2050,8 @@ static const getinfo_item_t getinfo_items[] = {
|
|||||||
ITEM("desc/all-recent", dir,
|
ITEM("desc/all-recent", dir,
|
||||||
"All non-expired, non-superseded router descriptors."),
|
"All non-expired, non-superseded router descriptors."),
|
||||||
ITEM("desc/all-recent-extrainfo-hack", dir, NULL), /* Hack. */
|
ITEM("desc/all-recent-extrainfo-hack", dir, NULL), /* Hack. */
|
||||||
|
PREFIX("md/id/", dir, "Microdescriptors by ID"),
|
||||||
|
PREFIX("md/name/", dir, "Microdescriptors by name"),
|
||||||
PREFIX("extra-info/digest/", dir, "Extra-info documents by digest."),
|
PREFIX("extra-info/digest/", dir, "Extra-info documents by digest."),
|
||||||
PREFIX("net/listeners/", listeners, "Bound addresses by type"),
|
PREFIX("net/listeners/", listeners, "Bound addresses by type"),
|
||||||
ITEM("ns/all", networkstatus,
|
ITEM("ns/all", networkstatus,
|
||||||
|
Loading…
Reference in New Issue
Block a user