In case of bidirectional sending, if at the moment side A is sending, we have:
A.rcvstate = IDLE
A.sndstate = RUNNING
and
B.rcvstate = RUNNING
B.sndstate = IDLE
At the moment when the B side starts sending it finds all links IDLE and tries to activate the "best" link. For that case it should first try to find a link that is currently active in the opposite direction, if any such link is found. Currently there's no such check performed and it might, but need not, activate the same link in the opposite direction.
There are however doubts about this method, or whether this should be the only criteria, if so found. For example, when we have a situation that the link is good in upload, but weak in download, stubborn activation of this link on side B just because of the fact of having it activated on side A might result in often link breaking. Likely this should be connected with some more long-term link measurement, and with the same priority possibly prefer link with higher quality score.
In case of bidirectional sending, if at the moment side A is sending, we have:
A.rcvstate = IDLE
A.sndstate = RUNNING
and
B.rcvstate = RUNNING
B.sndstate = IDLE
At the moment when the B side starts sending it finds all links IDLE and tries to activate the "best" link. For that case it should first try to find a link that is currently active in the opposite direction, if any such link is found. Currently there's no such check performed and it might, but need not, activate the same link in the opposite direction.
There are however doubts about this method, or whether this should be the only criteria, if so found. For example, when we have a situation that the link is good in upload, but weak in download, stubborn activation of this link on side B just because of the fact of having it activated on side A might result in often link breaking. Likely this should be connected with some more long-term link measurement, and with the same priority possibly prefer link with higher quality score.