refactor: replace CConnman pointers by references in net_processing.cpp#19174
pulltheStack
wants to merge
1
commits into
bitcoin:master
from
theStack:20200602-refactor-use-cconnman-references-within-net_processing
changing
2
files
+64−64
theStack
commented at 11:29 AM on June 5, 2020:
member
This is a follow-up to the recently merged PR #19053, replacing two more types of one more type of pointer (CConnman) by references to increase the code quality -- pointers should either check for nullptr or be replaced by references, and the latter strategy seems to be more reasonable.
Again, to keep the review burden managable, the changes are kept simple,
only tackling CConnman*and BanMan* pointers
only within the net_processing module, i.e. no changes that would need adaption in other modules
keeping the names of the variables as they are
fanquake added the label Refactoring on Jun 5, 2020
MarcoFalke
commented at 11:36 AM on June 5, 2020:
member
Concept ACK, but this conflicts with some ongoing work, so let's get those in first.
DrahtBot
commented at 1:26 PM on June 5, 2020:
member
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--174a7506f384e20aa4161008e828411d-->
Conflicts
Reviewers, this pull request conflicts with the following ones:
#19503 (Add parameter feature to serialization and use it for CAddress by sipa)
#19184 (Overhaul transaction request logic by sipa)
#18991 (Cache responses to GETADDR to prevent topology leaks by naumenkogs)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
promag
commented at 12:24 AM on June 6, 2020:
member
Concept ACK, no rush though.
DrahtBot added the label Needs rebase on Jun 6, 2020
theStack force-pushed on Jun 10, 2020
theStack
commented at 1:41 PM on June 10, 2020:
member
Rebased.
DrahtBot removed the label Needs rebase on Jun 10, 2020
DrahtBot added the label Needs rebase on Jun 19, 2020
jnewbery
commented at 2:59 PM on July 13, 2020:
member
concept ACK. Needs rebase
theStack force-pushed on Jul 13, 2020
theStack force-pushed on Jul 13, 2020
DrahtBot removed the label Needs rebase on Jul 13, 2020
theStack
commented at 5:15 PM on July 13, 2020:
member
Rebased.
jnewbery
commented at 8:58 PM on July 13, 2020:
member
I'm modifying my concept ACK to a partial concept ACK. @theuni has pointed out to me that for maximum flexibility, we should potentially be able to run the software with different components disabled, eg it should be possible to run with connman or banman disabled. It's not possible to run net_processing without a connman, but it should be possible to run without a banman, and that possibility was part of banman's Original Vision. Therefore, I think this PR should be modified to:
change connman pointers to references within net_processing
wrap all banman derefernces in net_processing inside if (banman) conditionals
add comments inside the PeerValidationLogic definition in net_processing.h explaining that.
theStack
commented at 11:53 AM on July 14, 2020:
member
@jnewbery: I see your PR #19514 already covers points 2 and 3 of your list. Will remove the BanMan pointer by references replacements and rebase on master as soon as #19514 is merged.
DrahtBot added the label Needs rebase on Jul 14, 2020
jnewbery
commented at 1:53 PM on July 14, 2020:
member
#19514 is merged. I'll review this as soon as it's rebased.
refactor: replace CConnman pointers by references in net_processing.cpp0c8461a88e
theStack force-pushed on Jul 14, 2020
theStack renamed this: refactor: replace CConnman/BanMan pointers by references in net_processing.cpp refactor: replace CConnman pointers by references in net_processing.cpp on Jul 14, 2020
theStack
commented at 2:11 PM on July 14, 2020:
member
Removed BanMan pointer by reference replacements (only leaving CConnman replacements), rebased on master, adapted PR title and PR description accordingly.
DrahtBot removed the label Needs rebase on Jul 14, 2020
theuni
commented at 8:51 PM on July 14, 2020:
member
Concept NACK. CConnman is a pointer here because it's intended to be (eventually) optional, as a way to run bitcoind without p2p (for only local rpc, wallet, etc.)
Making it a reference is a step backwards, imo.
MarcoFalke
commented at 6:59 AM on July 15, 2020:
member
This is only changing stuff inside the call path of PeerLogicValidation::ProcessMessages, a function which is impossible to call when connman is nullptr. I don't see how this makes it harder to run without p2p.
jnewbery
commented at 8:30 AM on July 15, 2020:
member
I tend to agree with @MarcoFalke here. I think if we ran bitcoind without p2p, then both ConnMan and PeerLogicValidation would be disabled. PeerLogicValidation can't do anything without a ConnMan. Contrast that with BanMan, which PeerLogicValidation can very easily run without.
The fact that connman is dereferenced everywhere without being checked first shows that there's an expectation that net_processing always has a ConnMan. The alternative of adding nullptr checks to all of those dereferences seems like it'd make the code much less readable. @theuni - am I missing something important?
utACK0c8461a88ed66a1f70559fc96646708949b17e4b
MarcoFalke
commented at 6:07 AM on July 16, 2020:
member
ACK0c8461a88ed66a1f70559fc96646708949b17e4b 🕧
<details><summary>Show signature and timestamp</summary>
JeremyRubin
commented at 4:21 PM on July 16, 2020:
contributor
Process wise I don't think that this should have been merged over @theuni's concept nack, especially not without a reasonable amount of time to follow up.
fanquake
commented at 6:27 AM on July 17, 2020:
member
I agree. I would be good to have at-least heard @theuni's thoughts here.
laanwj
commented at 9:50 AM on July 17, 2020:
member
I'm going to revert this. I don't think there was enough agreement to make this change. See #19542.
laanwj referenced this in commit 1aff21b364 on Jul 17, 2020
theuni
commented at 8:32 PM on July 17, 2020:
member
For posterity, concept NACK withdrawn. Agree with @MarcoFalke and @jnewbery above.
ACK0c8461a88ed66a1f70559fc96646708949b17e4b.
sidhujag referenced this in commit 647a40216e on Jul 18, 2020
jasonbcox referenced this in commit 7ce32e64a0 on Nov 21, 2020
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-05-02 15:14 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me