You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(iroh-net): allow the underlying UdpSockets to be rebound (#2946)
## Description
In order to handle supsension and exits on mobile. we need to rebind our
UDP sockets when they break.
This PR adds the ability to rebind the socket on errors, and does so
automatically on known suspension errors for iOS.
When reviewing this, please specifically look at the duration of lock
holding, as this is the most sensitive part in this code.
Some references for these errors
- libevent/libevent#1031
- #2939
### TODOs
- [x] code cleanup
- [x] testing on actual ios apps, to see if this actually fixes the
issues
- [ ] potentially handle port still being in use? this needs some more
thoughts
Closes#2939
## Breaking Changes
The overall API for `netmon::UdpSocket` has changed entirely, everything
else is the same.
## Notes & open questions
- I have tried putting this logic higher in the stack, but unfortunately
that did not work out.
- We might not want to infinitely rebind a socket if the same error
happens over and over again, unclear how to handle this.
## Change checklist
- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
---------
Co-authored-by: Philipp Krüger <[email protected]>
0 commit comments