Commit 98323b4
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 a new last_bound_addresses field on
ConnectionManager, preserved across restarts so the node rebinds the
same ports.
Node::listening_addresses() returns the last bound addresses when
available, falling back to configured addresses. The gossip broadcast
task and announcement_addresses() never expose 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 98323b4
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