commit 95e7d37b7e9b3db10bd7c1ae5aa4e55ccdd27a6a Author: Nick Mathewson nickm@torproject.org Date: Tue Jan 15 16:34:45 2013 -0500
Better specify that circID and streamID cannot be 0 for any actual circuit or stream --- tor-spec.txt | 28 +++++++++++++++------------- 1 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/tor-spec.txt b/tor-spec.txt index 1099e3d..f107da5 100644 --- a/tor-spec.txt +++ b/tor-spec.txt @@ -685,12 +685,13 @@ see tor-design.pdf. DH data (g^y) [DH_LEN bytes] Derivative key data (KH) [HASH_LEN bytes] <see 5.2 below>
- The CircID for a CREATE cell is an arbitrarily chosen 2-byte integer, - selected by the node (OP or OR) that sends the CREATE cell. To prevent - CircID collisions, when one node sends a CREATE cell to another, it chooses - from only one half of the possible values based on the ORs' public - identity keys: if the sending node has a lower key, it chooses a CircID with - an MSB of 0; otherwise, it chooses a CircID with an MSB of 1. + The CircID for a CREATE cell is an arbitrarily chosen nonzero 2-byte + integer, selected by the node (OP or OR) that sends the CREATE cell. + To prevent CircID collisions, when one node sends a CREATE cell to + another, it chooses from only one half of the possible values based + on the ORs' public identity keys: if the sending node has a lower + key, it chooses a CircID with an MSB of 0; otherwise, it chooses a + CircID with an MSB of 1.
(An OP with no public key MAY choose any CircID it wishes, since an OP never needs to process a CREATE cell.) @@ -1014,13 +1015,14 @@ see tor-design.pdf. digest does not match, the running digest at that node should not be updated, and the cell should be forwarded on.)
- All RELAY cells pertaining to the same tunneled stream have the - same stream ID. StreamIDs are chosen arbitrarily by the OP. RELAY - cells that affect the entire circuit rather than a particular - stream use a StreamID of zero -- they are marked in the table above - as "[control]" style cells. (Sendme cells are marked as "sometimes - control" because they can take include a StreamID or not depending - on their purpose -- see Section 7.) + All RELAY cells pertaining to the same tunneled stream have the same + stream ID. StreamIDs are chosen arbitrarily by the OP. No stream + may have a StreamID of zero. Rather, RELAY cells that affect the + entire circuit rather than a particular stream use a StreamID of zero + -- they are marked in the table above as "[control]" style + cells. (Sendme cells are marked as "sometimes control" because they + can take include a StreamID or not depending on their purpose -- see + Section 7.)
The 'Length' field of a relay cell contains the number of bytes in the relay payload which contain real payload data. The remainder of