torproject / stem

Python controller library for Tor
https://stem.torproject.org/
GNU Lesser General Public License v3.0
279 stars 76 forks source link

Missing SENDME support on circuits #95

Open dgoulet-tor opened 3 years ago

dgoulet-tor commented 3 years ago

It appears that it is not possible to download a consensus over the ORPort of a relay due to Stem not sending SENDMEs (flow control cell) which means that after 500 cells on the stream (roughly 25k), the transfer will stop and a consensus or all descriptors are bigger than that.

Furthermore, Tor design complicates things because Stem would need to use SENDMEs on a stream and circuit as well which both have different windows.

On a stream, the starting window on a connection is 500 and on a circuit starting window is 1000. Then, tor-spec.txt specifies when/how to send a SENDME at the stream and circuit level.

atagar commented 3 years ago

Interesting! Great catch David, I'd be delighted to merge a patch to address this.