Opened 12 years ago

Last modified 8 years ago

#754 closed defect (Implemented)

RendNodes configuration option is ignored

Reported by: chrisw Owned by:
Priority: Low Milestone:
Component: Core Tor/Tor Version:
Severity: Keywords:
Cc: chrisw, karsten, nickm Actual Points:
Parent ID: Points:
Reviewer: Sponsor:


The RendNodes configuration option should enable users to specify a list of relays that are preferred as rendezvous
node when establishing a connection to a hidden service. It was added with revision 1433 in version 0.0.6pre1.

But the configuration option is currently ignored, because it is used in the choose_good_exit_server()
function in circuitbuild.c only. Since cannibalization was introduced in version, this method isn't used
for establishing rendezvous and introduction circuits anymore. Now the circuits are selected in the
circuit_find_to_cannibalize() function in circuitlist.c, where pre-built 3-hop circuits are either extended to a known
introduction point or just declared as rendezvous circuit with the third hop automatically being the rendezvous point.

Therefore enabling the the configuration option has no effect on the chosen rendezvous point.

[Automatically added by flyspray2trac: Operating System: All]

Child Tickets

Attachments (1)

rendnodes_bugfix.diff (10.7 KB) - added by chrisw 12 years ago.
Bugfix on Task #754

Download all attachments as: .zip

Change History (7)

comment:1 Changed 12 years ago by chrisw

The same problem exists for the RendExcludeNodes configuration option to exclude certain relays from being selected as
rendezvous nodes. It is also used in the choose_good_exit_server() function in circuitbuild.c and has no effect because
due to cannibalization this function is bypassed and a previously built circuit is used as rendezvous circuit.

Although a similar construct is used on hidden service side to prefer certain relays as introduction point for the
hidden service or exclude others from being selected with the HiddenServiceNodes and HiddenServiceExcludeNodes
configuration options, this seems to work. This is because the hidden service selects the relays to act as introduction
points right after bootstrapping, when pre-built circuits are not yet available.

comment:2 Changed 12 years ago by karsten

The problem also applies to HiddenServiceNodes and HiddenServiceExcludeNodes when cannibalization is used. This
does not occur at startup, but as soon as an introduction point goes down, Tor utilizes cannibalization to
replace it. Therefore, HiddenService(Exclude)Nodes should also be marked as obsolete.

comment:3 Changed 12 years ago by chrisw

Roger, Stephen, Karsten, and I had a discussion on #tor-dev. The conclusion was that it makes more sense to mark the
configuration options as obsolete instead of make them work, risking to introduce new bugs. This is, because the options
are obviously not used by anyone, because they don't work. So it seems that no one would miss them.

Jul 07 15:53:10 <chrisw> obviously I also need to take care that the chosen rendnode is not already part of the circuit
to be extended.
Jul 07 15:53:22 <arma2> what's the goal of this? i assume it's so you can do your stats in a more constrained way? or is
it just so you can *see* the rendnodes while running your experiments?
Jul 07 15:55:00 <arma2> or are you expecting normal users to use this too/
Jul 07 15:55:19 <chrisw> it's fixing a configuration option that doesn't do what it promises. for my measurements I had
to hack a little to make it work.
Jul 07 15:56:05 <chrisw> actually I cannot see any need for regular users to select a specific rendnode.
Jul 07 15:56:09 <arma2> ah. if it's just to fix it, perhaps we should take it out. :)
Jul 07 15:56:30 <karsten> part of our discussion was that fixing this bug involves many special cases (like the
*ExcludeNodes options, unavailable nodes or descriptors).
Jul 07 15:56:39 <karsten> we can cover some of them, but not all.
Jul 07 15:56:44 <arma2> good point
Jul 07 15:56:51 <arma2> can we just take it out?
Jul 07 15:56:59 <karsten> but if someone wants to use this for measurements she's likely to patch the code anyway.
Jul 07 15:57:16 <karsten> taking it out might be the best patch...
Jul 07 15:57:16 <chrisw> I did.
Jul 07 15:57:28 <karsten> or marking it as not working exactly as specified.
Jul 07 15:58:20 <chrisw> i guess this would be an euphemism.
Jul 07 15:58:58 <karsten> true for RendNodes, but i also meant HiddenServiceNodes.
Jul 07 15:59:02 <arma2> yep. i think RendNodes was added before we added the 'reuse existing circuits' feature.
Jul 07 15:59:08 <sjmurdoch> Maybe send an email asking if anyone uses this feature, and say that it's going away?
Jul 07 15:59:15 <sjmurdoch> If nobody whines, get rid of it
Jul 07 15:59:17 <arma2> nobody uses the feature. how could they?

A mail was sent to the or-talk mailing list on July 8, if anyone wants to raise an objection against marking the options
as obsolete:

There were no answers on this mail until July 21.

I sent a patch to the tor-assistants mailing list on July 20. The patch is also attached to this task for the sake of

Changed 12 years ago by chrisw

Attachment: rendnodes_bugfix.diff added

Bugfix on Task #754

comment:4 Changed 12 years ago by nickm

Patch applied; thanks!

comment:5 Changed 12 years ago by nickm

flyspray2trac: bug closed.

comment:6 Changed 8 years ago by nickm

Component: Tor ClientTor
Note: See TracTickets for help on using tickets.