* chore: add more Debug derives
* fix: do not unconditionally use path 0 in APIs
* fix(quinn): reexport PathId
* fixup: debug for controllermetrics
* cleanup and remove `network_path_changed` api
* fix: do not use Instant::now in proto tests
Proto tests using the Pair driver should not use Instant::now() for
API calls. The Pair keeps track of time itself, and advances time
faster than real time. So time can be ahead of real time. API calls
that need a "now" should take the time from the Pair::time field.
* remove unused import
* Also fixup the non-multipath tests
* fix(proto): send path acks only in 1RTT space
Closes https://github.com/n0-computer/iroh/issues/3727
* check for multipath frames being on incoming
* fixup format
* fixup: undo filters
* expand frame checks
* expand check to also restrict QAD frames
* fix: run MTU discovery on all paths
This ensures that MTU discovery is run on all open, validated paths
and not-abandoned paths.
Fixes#3526.
* spelling
* describe the conditions in text
* clearly differentiate client and server states
This makes reasoning much easier since only the required fields are
present in the corresponding side state. It also reduces state size, now
it's 112 bytes, before it was 160 bytes
* apply clippy fixes
* fmt
* fix: disable GSO on windows if failures happen
Unfortunately this is not feature gated, so had the risk of tanking
performance on windows. Though it should not normally happen.
* make this state exist
* love running compiler on ci
* params
* imports
* param
* and slowly doing everything arqu did...
* adjust the test
- **rename PunchMe to ReachOut**
- **use new codes for transport parameter and frames**
- **update frame fields**
- **add the beginnings of nat traversal state**
- **init state when the extension is negotiated**
- **move the client side api away to deal with the error just once**
- **handle removed and added frames**
- **make some types public**
- **move iroh_hp out of connection**
- **thread adding addresses**
- **thread removing addresses**
- **include adding and removing frames in retransmission data**
- **Send ADD_ADDRESS and REMOVE_ADDRESS frames**
- **Add how to query the local nat traversal addresses.**
- **Thread server updates about addresses**
- **Boilerplate threading the nat traversal round call**
- **Remove the path_id from the ReachOut frame**
- **add retransmission fields for reach out frames**
- **Send the reach out frames, probe server addresses**
- **fix docs**
- **Send the reach out frames**
- **add fields to queue pending server-side challenges**
- **Return the remotely advertised nat traversal addresses instead**
- **modify the meaning of the transport parameter**
- **Hook up id tryfrom**
- **Queue server challenges**
- **send rand data instead of path challenges**
- **track sent reach outs in stats and sent frames**
- **track sent add and remove address in stats and sent frames**
- **Change APIs to set addresses**
- **logging conventions**
- **write 8 bytes, not 0**
- **Update `RttEstimator` from path challenge responses**