Commit ba72299
committed
Allow binding to port 0 for OS-assigned ports
Add support for configuring listening addresses with port 0, letting
the OS pick a free port. After binding, the actual port is resolved
via local_addr() and stored in ConnectionManager:
- active_listening_addresses: set on start(), cleared on stop()
- last_bound_addresses: set on start(), preserved across restarts
so the node rebinds the same ports (important for peer reconnection
with persisted addresses)
The listening_addresses() getter returns the bound addresses when
available, falling back to configured addresses. The gossip broadcast
task never announces port-0 or OS-assigned addresses, since those are
ephemeral and change on restart.
This eliminates the need for the deterministic port picker in tests,
which was fragile due to potential port collisions. Tests now use
127.0.0.1:0 and query the actual port after start().
AI tools were used in preparing this commit.1 parent 3aef2b3 commit ba72299
File tree
5 files changed
+90
-34
lines changed- src
- tests
- common
5 files changed
+90
-34
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
331 | 331 | | |
332 | 332 | | |
333 | 333 | | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
334 | 344 | | |
335 | 345 | | |
336 | 346 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| |||
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
| 44 | + | |
43 | 45 | | |
44 | | - | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
45 | 62 | | |
46 | 63 | | |
47 | 64 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
130 | 130 | | |
131 | 131 | | |
132 | 132 | | |
133 | | - | |
134 | | - | |
| 133 | + | |
| 134 | + | |
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
| |||
356 | 356 | | |
357 | 357 | | |
358 | 358 | | |
359 | | - | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
360 | 365 | | |
361 | 366 | | |
362 | 367 | | |
| |||
378 | 383 | | |
379 | 384 | | |
380 | 385 | | |
381 | | - | |
| 386 | + | |
382 | 387 | | |
| 388 | + | |
383 | 389 | | |
384 | | - | |
385 | 390 | | |
386 | 391 | | |
387 | 392 | | |
388 | | - | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
389 | 411 | | |
390 | 412 | | |
391 | 413 | | |
| |||
400 | 422 | | |
401 | 423 | | |
402 | 424 | | |
403 | | - | |
| 425 | + | |
404 | 426 | | |
405 | 427 | | |
| 428 | + | |
| 429 | + | |
406 | 430 | | |
407 | 431 | | |
408 | 432 | | |
| |||
526 | 550 | | |
527 | 551 | | |
528 | 552 | | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
529 | 558 | | |
530 | 559 | | |
531 | 560 | | |
| |||
842 | 871 | | |
843 | 872 | | |
844 | 873 | | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
845 | 878 | | |
846 | | - | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
847 | 882 | | |
848 | 883 | | |
849 | 884 | | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
850 | 889 | | |
851 | | - | |
852 | | - | |
853 | | - | |
854 | | - | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
855 | 893 | | |
856 | 894 | | |
857 | 895 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | 17 | | |
19 | 18 | | |
20 | 19 | | |
| |||
269 | 268 | | |
270 | 269 | | |
271 | 270 | | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | | - | |
280 | | - | |
281 | | - | |
282 | 271 | | |
283 | 272 | | |
284 | 273 | | |
| |||
302 | 291 | | |
303 | 292 | | |
304 | 293 | | |
305 | | - | |
| 294 | + | |
306 | 295 | | |
307 | 296 | | |
308 | 297 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
| |||
1431 | 1432 | | |
1432 | 1433 | | |
1433 | 1434 | | |
1434 | | - | |
| 1435 | + | |
| 1436 | + | |
| 1437 | + | |
| 1438 | + | |
1435 | 1439 | | |
1436 | | - | |
1437 | 1440 | | |
1438 | 1441 | | |
1439 | 1442 | | |
| |||
1443 | 1446 | | |
1444 | 1447 | | |
1445 | 1448 | | |
1446 | | - | |
1447 | 1449 | | |
1448 | | - | |
1449 | 1450 | | |
1450 | 1451 | | |
1451 | 1452 | | |
| |||
1505 | 1506 | | |
1506 | 1507 | | |
1507 | 1508 | | |
| 1509 | + | |
1508 | 1510 | | |
1509 | 1511 | | |
1510 | 1512 | | |
| |||
0 commit comments