I was doing some experiments for a project on a Tor test network. I used Chutney to set up a small network and Stem to control one of the client nodes in the network. Because I made some changes on a relay node, I wanted to set up a circuit containing that node and run some quick experiments. My changes made the relay node run much slower, so I also need to change some default timeout settings.
I used the following code to set up a new circuit:
circuit_id = controller.new_circuit(path=["test009r", "test008r"], purpose='general', await_build=True)
The new circuit contains two relay nodes. I made some changes on the
Circuit building failed at runtime because:
Circuit failed to be created: CHANNEL_CLOSED
I believe it was because of some timeout, so I configured the client node:
controller.set_conf("MaxCircuitDirtiness", "60000") controller.set_conf("LearnCircuitBuildTimeout", "0") controller.set_conf("CircuitBuildTimeout", "60000") controller.set_conf("CircuitStreamTimeout", "60000")
I tried to set large timeout windows, but it seemed like Tor just ignored them, because I still got the same error. I also tried:
set_conf to "refresh" the configuration of the client node.
controller.get_conf_map, I was able to confirm that those configurations did change.
This part of the info.log might be relevant:
Jul 16 22:29:55.295 [info] circuit_build_times_set_timeout(): Set buildtimeout to low value 485.535223ms. Setting to 1500ms Jul 16 22:29:55.417 [info] circuit_build_times_set_timeout(): Based on 164 circuit times, it looks like we don't need to wait so long for circuits to finish. We will now assume a circuit is too slow to use after waiting 2 seconds. Jul 16 22:29:55.428 [info] circuit_build_times_set_timeout(): Circuit timeout data: 1500.000000ms, 60000.000000ms, Xm: 75, a: 0.861692, r: 0.170732 Jul 16 22:29:55.522 [info] circuit_build_times_filter_timeouts(): We had 28 timeouts out of 164 build times, and filtered 0 above the max of 60000
But I am not sure how to parse them. For example, from Tor's documentation, 60000 should be in seconds, but not ms?