Commit 419e1ae
committed
fix(quic): close the QuicChannel when a dial is cancelled
NetworkImpl.connect() races dials across addresses and cancels the losing
dial futures. QUIC dial() returns the dependent thenApply future; cancelling
it does not propagate upstream to the QUIC connect, so when the handshake
later completes the thenApply body is skipped. The established QuicChannel
was therefore never registered, handed to the caller, nor closed, leaking it
(and its underlying datagram channel) until the idle timeout.
Mirror the TCP transport: register the channel as soon as the connection is
established (before thenApply) so it is tracked and closeable, and close it
explicitly when the returned future is cancelled, cascading to the ephemeral
datagram channel via the existing close listener.1 parent e0ed7ff commit 419e1ae
2 files changed
Lines changed: 66 additions & 2 deletions
File tree
- libp2p/src
- main/kotlin/io/libp2p/transport/quic
- test/java/io/libp2p/transport/quic
Lines changed: 18 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
255 | 260 | | |
256 | 261 | | |
257 | 262 | | |
258 | 263 | | |
259 | 264 | | |
260 | | - | |
| 265 | + | |
261 | 266 | | |
262 | | - | |
263 | 267 | | |
264 | 268 | | |
265 | 269 | | |
| |||
306 | 310 | | |
307 | 311 | | |
308 | 312 | | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
309 | 325 | | |
310 | 326 | | |
311 | 327 | | |
| |||
Lines changed: 48 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
789 | 789 | | |
790 | 790 | | |
791 | 791 | | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
792 | 840 | | |
0 commit comments