summaryrefslogtreecommitdiff
path: root/src/or/control.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-04-22 19:44:27 -0400
committerNick Mathewson <nickm@torproject.org>2018-04-22 19:44:27 -0400
commit6773102c92e7bd9d949251da75bcc0762e754ab2 (patch)
tree310631258357320bbee56d488b6397d5facbb554 /src/or/control.c
parentd8ac7d557c0af199d21639a52a8c8c9dd201f555 (diff)
parent0941c8bfe6f34024153ae3ed67e4b1a05f9a6bfe (diff)
downloadtor-6773102c92e7bd9d949251da75bcc0762e754ab2.tar.gz
tor-6773102c92e7bd9d949251da75bcc0762e754ab2.zip
Merge branch 'bug25691_033_again_squashed'
Diffstat (limited to 'src/or/control.c')
-rw-r--r--src/or/control.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/or/control.c b/src/or/control.c
index 0539ddaca3..050509eccf 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -3487,17 +3487,19 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len,
smartlist_free(args);
nodes = smartlist_new();
+ int first_node = zero_circ;
SMARTLIST_FOREACH_BEGIN(router_nicknames, const char *, n) {
const node_t *node = node_get_by_nickname(n, 0);
if (!node) {
connection_printf_to_buf(conn, "552 No such router \"%s\"\r\n", n);
goto done;
}
- if (!node_has_descriptor(node)) {
+ if (!node_has_preferred_descriptor(node, first_node)) {
connection_printf_to_buf(conn, "552 No descriptor for \"%s\"\r\n", n);
goto done;
}
smartlist_add(nodes, (void*)node);
+ first_node = 0;
} SMARTLIST_FOREACH_END(n);
if (!smartlist_len(nodes)) {
connection_write_str_to_buf("512 No router names provided\r\n", conn);
@@ -3510,14 +3512,15 @@ handle_control_extendcircuit(control_connection_t *conn, uint32_t len,
}
/* now circ refers to something that is ready to be extended */
- int first_node = zero_circ;
+ first_node = zero_circ;
SMARTLIST_FOREACH(nodes, const node_t *, node,
{
extend_info_t *info = extend_info_from_node(node, first_node);
if (!info) {
tor_assert_nonfatal(first_node);
log_warn(LD_CONTROL,
- "controller tried to connect to a node that doesn't have any "
+ "controller tried to connect to a node that lacks a suitable "
+ "descriptor, or which doesn't have any "
"addresses that are allowed by the firewall configuration; "
"circuit marked for closing.");
circuit_mark_for_close(TO_CIRCUIT(circ), -END_CIRC_REASON_CONNECTFAILED);