-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix the open_ack bug #601
Fix the open_ack bug #601
Conversation
…RE sending the open_ack
NOTE: I will review the multicast transport for the same bug, but there is no Establish procedure there, so it seems that the multicast is not affected by this |
The problem of sending an
|
Yes, now I see that |
Anyway, I wanna make a design that sends open_ack BEFORE making a new link available for levels above the transport |
Why do you think that is needed? As of today, if the level above the transport returns an error during initialization the |
Because otherwise we have a bug that causes intermittent tests randomly fail. The problem in initial code is that if we call |
I'm gonna refactor some things here to also avoid the problems you described |
I think there is an error on the above explanation. The upper layer is notified in the finalize_transport and not in the |
|
The problem is that during I hence believe we should have an intermediate state where we store transport parameters for already initialised transports. In this way, during link establishment, we can check the actual parameters and return an error if necessary. |
Yes, you are correct, but the problem is somewhat deeper in the detail.
So, speaking rustwise: "transport must consume the link object, ensuring that nobody will ever write a logic that intend to send/receieve something through the link object after it was passed to the transport" - I will say that we will get a good and safe |
It sounds reasonable. What do you propose as next steps? |
My proposition is: modify the transport trait in such a way that it would consume the link object in I'm already in progress on it. |
#585 has been merged, I think you can now rebase the changes on master. |
A wider fix is being proposed in #610 |
We need to do init_transport_unicast with a new link only after sending open_ack on the link, otherwise some data may be scheduled through the transport before the open_ack, which causes Establish procedure to fail!