@@ -82,12 +82,57 @@ how wallets can use that policy most effectively._
8282meeting, highlighting some of the important questions and answers. Click on a
8383question below to see a summary of the answer from the meeting.*
8484
85- FIXME: LarryRuane
85+ [ Allow inbound whitebind connections to more aggressively evict peers when slots are full] [ review club 27600 ]
86+ is a PR by Matthew Zipkin (pinheadmz) that improves a node operator's
87+ ability in certain cases to configure desired peers for the node.
88+ Specifically, if the node operator has whitelisted a potential inbound
89+ peer (for example, a light client controlled by the node operator), then
90+ without this PR, and depending on the node's peer state, it's possible
91+ that the node will deny this light client's connection attempt.
92+
93+ This PR makes it much more likely that the desired peer will be able to
94+ connect to our node. It does this by evicting an existing inbound peer
95+ that, without this PR, would have been ineligible for eviction.
8696
8797{% include functions/details-list.md
88- q0="FIXME"
89- a0="FIXME"
90- a0link="https://bitcoincore.reviews/27501#l-FIXME "
98+ q0="Why does this PR only apply to inbound peer requests?"
99+ a0="Our node _ initiates_ outbound connections; this PR modifies how
100+ the node _ reacts_ to an incoming connection request.
101+ Outbound nodes can be evicted, but that's done with an entirely
102+ separate algorithm."
103+ a0link="https://bitcoincore.reviews/27600#l-33 "
104+
105+ q1="What is the impact of the ` force ` parameter of ` SelectNodeToEvict() `
106+ on the return value?"
107+ a1="Specifying ` force ` as ` true ` ensures that a non-` noban ` inbound peer
108+ is returned, if one exists, even if it would otherwise be protected
109+ from eviction.
110+ Without the PR, it would not return a peer if they all are excluded
111+ (protected) from eviction."
112+ a1link="https://bitcoincore.reviews/27600#l-70 "
113+
114+ q2="How is the function signature of ` EraseLastKElements() ` changed in this PR?"
115+ a2="It changed from being a ` void ` return function to returning the last
116+ entry that was _ removed_ from the eviction candidates list. (This
117+ \" protected\" node might be evicted if necessary.)
118+ However, as a result of discussion during the review club meeting,
119+ the PR was later simplified such that this function is no longer modified."
120+ a2link="https://bitcoincore.reviews/27600#l-126 "
121+
122+ q3="` EraseLastKElements ` used to be a templated function, but this PR removes
123+ the two template arguments. Why? Are there any downsides to this change?"
124+ a3="This function was and (with this PR) is being called with unique template
125+ arguments, so there is no need for the function to be templated.
126+ The PR's changes to this function were reverted, so it's still templated,
127+ because changing this would be beyond the scope of the PR."
128+ a3link="https://bitcoincore.reviews/27600#l-126 "
129+
130+ q4="Suppose we pass a vector of 40 eviction candidates to ` SelectNodeToEvict() ` .
131+ Before and after this PR, what’s the theoretical maximum of Tor nodes
132+ that can be protected from eviction?"
133+ a4="Both with and without the PR, the number would be 34 out of 40, assuming
134+ they're not ` noban ` and inbound."
135+ a4link="https://bitcoincore.reviews/27600#l-156 "
91136%}
92137
93138## Releases and release candidates
@@ -140,3 +185,4 @@ Proposals (BIPs)][bips repo], [Lightning BOLTs][bolts repo], and
140185[ bs sp ] : https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-June/021750.html
141186[ jager annex4 ] : https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-June/021737.html
142187[ Core Lightning 23.05.1 ] : https://github.com/ElementsProject/lightning/releases/tag/v23.05.1
188+ [ review club 27600 ] : https://bitcoincore.reviews/27600
0 commit comments