@@ -290,7 +290,7 @@ flow, and the types of packets for each bone are:
290 - bone 14, acks of naxplanations to `~worwel-sipnum`,
290 - bone 14, acks of naxplanations to `~worwel-sipnum`,
291 - bone 15, naxplanations to `~bacbel-tagfeg`.
291 - bone 15, naxplanations to `~bacbel-tagfeg`.
293−Each bone is handled separately by congestion control, and this is the reason
293+Each bone is handled separately by congestion control, and this is one reason
294for their segregation. For example, say a two-packet `%plea` is sent on bone 12,
294for their segregation. For example, say a two-packet `%plea` is sent on bone 12,
295with `~bacbel-tagfeg` requesting to join a group on `~worwel-sipnum`.
295with `~bacbel-tagfeg` requesting to join a group on `~worwel-sipnum`.
296Then `~worwel-sipnum` can ack the first packet on bone 13, and then send a nack
296Then `~worwel-sipnum` can ack the first packet on bone 13, and then send a nack
@@ -299,6 +299,14 @@ happened. Then `~worwel-sipnum` can also send a naxplanation on bone 15 saying
299to `~bacbel-tagfeg` that they cannot join the group, to which an ack is received
299to `~bacbel-tagfeg` that they cannot join the group, to which an ack is received
300on bone 14.
300on bone 14.
302+Another reason to separate bones is to avoid race conditions. If
303+`~worwel-sipnum` and `~bacbel-tagfeg` attempt to start a flow with each other at
304+the same time we do not wish there to be a conflict when they receive each
305+others' packets. Flipping the last bit of the bone based on whether a packet is
306+an ack or a message fragment allows for `~worwel-sipnum` to create flow 8 with
307+`~bacbel-tagfeg` without coming into conflict with the flow 8 `~bacbel-tagfeg`
308+created for `~worwel-sipnum`.
302`%plea`s and `%boon`s are handled on separate bones so that e.g. sending a large
310`%plea`s and `%boon`s are handled on separate bones so that e.g. sending a large
303`%boon` doesn't stop an additional `%plea` from being received. It is also
311`%boon` doesn't stop an additional `%plea` from being received. It is also
304simply cleaner to make each bone one-way. Acks and nacks are very small packets
312simply cleaner to make each bone one-way. Acks and nacks are very small packets