Allow binding to port 0 for OS-assigned ports#860
Allow binding to port 0 for OS-assigned ports#860joostjager wants to merge 1 commit intolightningdevkit:mainfrom
Conversation
|
👋 I see @tnull was un-assigned. |
526375e to
37defe0
Compare
tnull
left a comment
There was a problem hiding this comment.
While I know about the flakiness issue, I can't say I'm loving all this additional complexity for very little actual (read: production) gain. Do we really need this?
src/lib.rs
Outdated
| payment_store: Arc<PaymentStore>, | ||
| lnurl_auth: Arc<LnurlAuth>, | ||
| /// Addresses the node is actively listening on. Set on `start()`, cleared on `stop()`. | ||
| active_listening_addresses: Arc<RwLock<Option<Vec<SocketAddress>>>>, |
There was a problem hiding this comment.
If we add all of that extra logic, etc, could we move these fields and the logic to ConnectionManager or at least connection.rs? Seems it would be the appropriate place?
There was a problem hiding this comment.
Moved to ConnectionManager, but it doesn't seem completely logical.
We've discussed various options offline. Another one is to do a loop around node creation in tests only. |
ba72299 to
98323b4
Compare
98323b4 to
4c67ea3
Compare
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(). The announcement propagation test is updated to use explicit announcement addresses for node B, since listening addresses with port 0 are (correctly) not announced. AI tools were used in preparing this commit.
4c67ea3 to
223a918
Compare
Test port collision fix.