Commit Graph

4119 Commits

Author SHA1 Message Date
Floris Bruynooghe 5ca6498ffe clippy 2025-06-27 13:07:22 +02:00
Floris Bruynooghe a25872eab8 Tidy up frame stats for issued/retired CIDs 2025-06-27 12:54:52 +02:00
Divma d801c3e400 Fix bugs in the process of opening a new path (#100) 2025-06-26 15:32:45 -05:00
Divma 0cecb412be improve reporting of frames on open path errors (#99) 2025-06-26 10:34:40 -05:00
Floris Bruynooghe 1fdfb930ce Assert we get PATH_ACK stats (#98) 2025-06-25 11:35:40 +02:00
Floris Bruynooghe cc9ae7a12b Assert we get PATH_ACK stats 2025-06-25 10:51:55 +02:00
Floris Bruynooghe 6b4bd5eaa6 Refuse to close a path if it is the last path available. (#97) 2025-06-25 10:46:56 +02:00
Floris Bruynooghe f06e8c5a48 clippy 2025-06-25 10:42:58 +02:00
Floris Bruynooghe aa795366a3 Refuse to close a path if it is the last path available. 2025-06-25 10:23:34 +02:00
Floris Bruynooghe b5b69bfdbf Per-path idle timeout and keepalive (#96)
- [x] Basic idle timeout scaffolding.
- [x] Handle `PathIdle` timer expiry.
- [x] Basic keep alive scaffolding.
- [x] Handle `PathKeepAlive` timer expiry.
- [x] quinn-proto API for setting path idle and keepalive.
- [x] quinn API for setting path idle and keepalive.
- [x] Allow setting path idle & keepalive defaults in `TransportConfig`.

The following might perhaps better flow over to another PR
- [ ] Abandon the path correctly.
- [ ] Close the connection if there is no remaining path.
2025-06-23 13:47:02 +02:00
Floris Bruynooghe df38dfa022 more docs fixes 2025-06-18 18:10:27 +02:00
Floris Bruynooghe 21b51d52d9 use correct location for docs 2025-06-18 18:02:15 +02:00
Floris Bruynooghe 43f6d41955 fix some docs 2025-06-18 17:59:20 +02:00
Floris Bruynooghe ec8a488120 Add quinn api for this 2025-06-18 17:56:06 +02:00
Floris Bruynooghe b2030a5d4e Allow configuring the per-path idle-timeout and keep-alive 2025-06-18 17:50:32 +02:00
Floris Bruynooghe 978eb340b5 Do keep alives 2025-06-18 17:07:04 +02:00
Floris Bruynooghe 8be492ee9f Handle PathIdle timer expiry 2025-06-18 13:02:23 +02:00
Floris Bruynooghe f4db04c6a8 Scaffolding for per-path idle timer 2025-06-17 15:27:54 +02:00
Floris Bruynooghe a6cea3ac32 Do PTO calculations correct (#95)
- PTO is computed for the right path
- crypto keys update uses 3 * max PTO of all paths
- draining state uses 3 * max PTO of all paths
2025-06-16 18:46:42 +02:00
Floris Bruynooghe 8a6d69546e Add frame stats to for path status frames (#94) 2025-06-16 18:36:36 +02:00
Floris Bruynooghe 07cc577fad Do PTO calculations correct
- PTO is computed for the right path
- crypto keys update uses 3 * max PTO of all paths
- draining state uses 3 * max PTO of all paths
2025-06-16 18:34:37 +02:00
Floris Bruynooghe f7682ba270 Add frame stats to for path status frames 2025-06-13 18:35:34 +02:00
Floris Bruynooghe afb6bd2be1 send and receive PATH_AVAILABLE/PATH_BACKUP (#92)
This always accepts the status set by the peer, the draft says it is
only a suggestion.
2025-06-13 18:14:21 +02:00
Floris Bruynooghe 8aca2447f9 clippy 2025-06-13 16:48:29 +02:00
Floris Bruynooghe 0a16cd1af1 Fix remote path status state 2025-06-13 16:46:19 +02:00
Floris Bruynooghe a5246db56f Keep track of remote state separately 2025-06-13 16:46:18 +02:00
Floris Bruynooghe 2499a2fff6 Improve logging a little bit 2025-06-13 16:46:17 +02:00
Floris Bruynooghe 8984c4d366 Fix can_send for path status frames 2025-06-13 16:46:16 +02:00
Floris Bruynooghe 9b8d7a79f0 test setting it back 2025-06-13 16:46:15 +02:00
Floris Bruynooghe 8c102970e0 Split the frame type 2025-06-13 16:46:14 +02:00
Floris Bruynooghe 9c6e27d843 Start sending path_available/path_backup 2025-06-13 16:46:11 +02:00
Floris Bruynooghe cee5b2046b Start sending path abandon (#90)
This changes the open_path function to no longer return the PATH_ABANDON
frame, but instead put it on the pending data. And adds functionality to
send it in poll_transmit.
2025-06-13 16:43:13 +02:00
Floris Bruynooghe e93b039ebc Start sending path abandon
This changes the open_path function to no longer return the
PATH_ABANDON frame, but instead put it on the pending data.  And adds
functionality to send it in poll_transmit.
2025-06-13 16:34:18 +02:00
Floris Bruynooghe 52432e2a3b PATH_ACK frames are not ack-eliciting (#93) 2025-06-13 15:18:55 +02:00
Floris Bruynooghe c151810c5d PATH_ACK frames are not ack-eliciting 2025-06-13 14:07:48 +02:00
Divma 7e227bfb09 rename frame's write and read methods to the more used encode and decode (#91) 2025-06-12 11:31:49 -05:00
Floris Bruynooghe 07f848e2ba Move last-received packet number to the per-path data (#88)
Somehow that managed to escape so far.

Also, look at me embracing unwrap!
2025-06-12 11:50:49 +02:00
Divma 1467f47fcc add a paths to open queue and start creating some errors (#89)
* add a paths to open queue and start creating some errors

* wip

* improve error cases when queueing a path open

* queue two frames for opening a path or failing to do so

* queue open path

* fix future polling

* ugly return types are declared ugly

* fix doc link
2025-06-11 13:45:10 -05:00
Floris Bruynooghe 39251050b9 Move last-received packet number to the per-path data
Somehow that managed to escape so far.

Also, look at me embracing unwrap!
2025-06-11 16:04:41 +02:00
Floris Bruynooghe aa16392a53 Flub/acks again (#87) 2025-06-11 15:03:34 +02:00
Floris Bruynooghe f0f2bb5081 clippy 2025-06-11 14:30:59 +02:00
Floris Bruynooghe 25cf0af9a0 Remove my logging 2025-06-11 14:16:31 +02:00
Floris Bruynooghe 52008d8e39 make it work, with collect(), yolo 2025-06-11 14:12:20 +02:00
Floris Bruynooghe b03a66151d this is done by the caller now 2025-06-10 21:35:19 +02:00
Floris Bruynooghe 59b532e28c wip 2025-06-10 19:30:24 +02:00
Floris Bruynooghe 768363095e Ensure that a non-zero len CID is used with multipath (#86)
With a test!  Check me out!
2025-06-06 10:53:49 +02:00
Floris Bruynooghe 6e24f40d27 Ensure that a non-zero len CID is used with multipath 2025-06-05 18:17:32 +02:00
Floris Bruynooghe c3ccd889a3 Improve the cid_issued test (#84) 2025-06-03 14:05:06 +02:00
Floris Bruynooghe 3dab78dc7d Improve the cid_issued test 2025-06-03 13:47:50 +02:00
Floris Bruynooghe f94689025b This adds a frame stat for PATH_NEW_CONNECTION_ID (#83)
As part of this a few minor fixes, in recording and logging the
PATH_NEW_CONNECTION_ID frames.

Also a few fixes for logging frames that were mistakenly not logged.
2025-06-03 09:48:45 +02:00