Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking: Backport upstream network encapsulation #1374

Closed
21 tasks done
Fuzzbawls opened this issue Mar 4, 2020 · 0 comments
Closed
21 tasks done

Tracking: Backport upstream network encapsulation #1374

Fuzzbawls opened this issue Mar 4, 2020 · 0 comments
Assignees
Labels
Milestone

Comments

@Fuzzbawls
Copy link
Collaborator

Fuzzbawls commented Mar 4, 2020

This is to track the backporting of various upstream PRs leading up to the goal of the P2P network encapsulation:

@Fuzzbawls Fuzzbawls added this to the 4.1.0 milestone Mar 4, 2020
@Fuzzbawls Fuzzbawls self-assigned this Mar 4, 2020
@furszy furszy modified the milestones: 4.1.0, Future Apr 7, 2020
@random-zebra random-zebra modified the milestones: Future, 5.0.0 Apr 24, 2020
furszy added a commit that referenced this issue May 8, 2020
…eeds

df48b12 chainparams: use SeedSpec6's rather than CAddress's for fixed seeds (Cory Fields)

Pull request description:

  Part of #1374's goal of updating our network code

  > This negates the need for CAddress here at all

ACKs for top commit:
  random-zebra:
    utACK df48b12
  furszy:
    utACK df48b12

Tree-SHA512: 86c2fb22118ab8d2a0b00bf44e76ac2230ece9395153ddc64203ca4a9585cfad0e9077dcaf5d69ca86c356a0f390a83c2f11cec8a0683c53aaf69f4cadc81dfe
random-zebra added a commit that referenced this issue May 13, 2020
a48639f Introduce REQUIRED_SERVICES constant (Pieter Wuille)
d1391e3 Introduce enum ServiceFlags for service flags (Pieter Wuille)
b6a0455 Don't require services in -addnode (Pieter Wuille)
6dba254 Only store and connect to NODE_NETWORK nodes (Pieter Wuille)
1905a6a Verify that outbound connections have expected services (Pieter Wuille)
0c23c01 Keep addrman's nService bits consistent with outbound observations (Pieter Wuille)

Pull request description:

  Backport of bitcoin#7749. This is next in line for #1374.

  Original description:

  > At this point, we do not:
  >
  > * check that relayed/stored addr messages have the NODE_NETWORK bit set.
  > * check that nodes selected for outbound connection have NODE_NETWORK advertized.
  > * check that the nServices flag in the "version" message by a node corresponds to what we expected when deciding to connect to it.
  > * store the updated nServices flag from the "version" message in addrman.
  >
  > Fix this.

ACKs for top commit:
  furszy:
    one-one with 7749 with the only exception of the tier two area, looks good, utACK a48639f
  random-zebra:
    All good. ACK a48639f and merging...

Tree-SHA512: 82f99df4244504cfe6fbc490126485da40d912b9b06390cb91a924426bded550bb939d352a17ba2c5142b4dae4099699b8e5777b7cb49f316342ebea4f9ec71d
furszy added a commit that referenced this issue May 14, 2020
…ults

9107379 Do not set extra flags for unfiltered DNS seed results (Pieter Wuille)

Pull request description:

  Backport of bitcoin#8208 based on top of #1616 (Only the last commit is important here). Part of #1374.

  Original Description:

  > Any flag set in nRelevantServices would propagate to all CAddress results retrieved from the DNS seed, even if that DNS seed does not support filtering.
  >
  > Fix this by making the name adaptation function also update the passed in flags.
  >
  > Furthermore, move that from from DNSSeedData to net. Structs in chainparams should be data only.

ACKs for top commit:
  random-zebra:
    utACK 9107379
  furszy:
    utACK 9107379

Tree-SHA512: a4c75fcdabac7afbd5df4b33f0bd02a438dffa75b8b63bc49fe63998579c8a15d6067cc357a72efd0b8123c9708853b9e2d04eada7ae85c088b0952bcf0baa90
random-zebra added a commit that referenced this issue May 26, 2020
5e79989 Randomize name lookup result in ConnectSocketByName (Pieter Wuille)
cdc1d9f Rework addnode behaviour (Pieter Wuille)

Pull request description:

  Partial backport of bitcoin#8113 as part of #1374.

  Original Description:

  > * Maintains consistency between ThreadOpenAddedNodeConnections and getaddednodeinfo, without any DNS resolving from RPC.
  > * Deals with the use case of added names whose IP mapping changes over time (switching over to the new IP only when the connection to the old one closes, though).
  > * Gets rid of the fDns argument to getaddednodeinfo (turning it into a dummy)
  > * Simplifies the code significantly by introducing a shared GetAddedNodeInfo in net.cpp.
  > * The existing addnode logic that tries all resolved addresses for a name is pushed down into ConnectSocketByName (picking at random).
  > * ~The existing addnode logic to prevent multiple connections to the same IP is pushed down into ConnectNode (by storing colliding names into the CNode's addrName field).~

  I omitted the last point (commit f9f5cfc) as it conflicts with how our current regtest tests function.

ACKs for top commit:
  furszy:
    tested ACK 5e79989
  random-zebra:
    ACK 5e79989 and merging

Tree-SHA512: 855b471c6eabc08d92ac218d426c915eba45ed640a77bfdb11a02a45efcee21bea45b2c68bbe03b87d63b5f84fd97c1baaee8c18b87f768ee526510838d2cf7e
random-zebra added a commit that referenced this issue Jun 15, 2020
b36f743 Fix masternode service lookup (furszy)
65feb7f fixup styling (Fuzzbawls)
059ca2c net: fixup nits (Cory Fields)
5a51a5f net: Have LookupNumeric return a CService directly (Cory Fields)
acd22b7 net: narrow include scope after moving to netaddress (Cory Fields)
e5bea4b net: move CNetAddr/CService/CSubNet out of netbase (Cory Fields)
840d826 net: Add direct tests for new CSubNet constructors (Cory Fields)
63c46c6 net: Split resolving out of CSubNet (Fuzzbawls)
a801a9e net: layer 2 CService abstraction (Fuzzbawls)
94732d2 Simplify checking of masternode.conf (Fuzzbawls)
d6f81b5 RPC: Remove masternodeconnect command (Fuzzbawls)
c4fe27e net: Split resolving out of CService (Cory Fields)
502343a net: Split resolving out of CNetAddr (Cory Fields)

Pull request description:

  Backport of bitcoin#8128 as part of #1374. Based on top of #1640

  Original Description:

  > CNetAddr/CService/CSubNet lose their string constructors, they must now have lookup operations performed externally. This means that functions/classes that depend on them are no longer dependent on any particular lookup mechanism.
  >
  > From a high level: New resolvers/parsers may now be used for net operations. libbtcnet will replace what remains of netbase with async versions.

  Additional work has been done in the following commits:
  * fcef585 - Removes a useless RPC command
  * 235c33e - Refactors the masternode.conf parsing with regards to valid ports
  * 3ddd35e - Adds additional sanity checks during client init for MN port numbers and listen options.

ACKs for top commit:
  furszy:
    tested ACK b36f743
  random-zebra:
    ACK b36f743 and merging...

Tree-SHA512: 1663dc0591e3a4eeb50c1d3265ae125451bd9185e1e44e0cf36d0675fe93daf21d873ba0baa48f0e0e50b20f9313de2da5ee257eeb75c779cd07cebca61a3f99
@Fuzzbawls Fuzzbawls modified the milestones: 4.2.0, 5.0.0 Jul 1, 2020
random-zebra added a commit that referenced this issue Aug 27, 2020
e733939 [Cleanup] Remove CConnman::Copy(Release)NodeVector, now unused (random-zebra)
b09da57 [Refactor] Proper CConnman encapsulation of mnsync (random-zebra)
219061e [Refactor] Decouple SyncWithNode from CMasternodeSync::Process() (random-zebra)
e1f3620 [Refactor] Proper CConnman encapsulation of proposals / votes sync (random-zebra)
f38c9f9 miner: don't try to access connman if it doesn't exist (Fuzzbawls)
92ab619 Address feedback (Fuzzbawls)
9d5346a Do not set an addr time penalty when a peer advertises itself. (Gregory Maxwell)
fe12ff9 net: No longer send local address in addrMe (Wladimir J. van der Laan)
14d6917 net: misc header cleanups (Cory Fields)
34ba0de net: make proxy receives interruptible (Cory Fields)
1bd97ef net: make net processing interruptable (Fuzzbawls)
e24b4cc net: make net interruptible (Cory Fields)
814d0de net: add CThreadInterrupt and InterruptibleSleep (Cory Fields)
1443f2a net: a few small cleanups before replacing boost threads (Cory Fields)
58eabe4 net: move MAX_FEELER_CONNECTIONS into connman (Cory Fields)
874baba Convert ForEachNode* functions to take a templated function argument rather than a std::function to eliminate std::function overhead (Jeremy Rubin)
9485ab0 Made the ForEachNode* functions in src/net.cpp more pragmatic and self documenting (Jeremy Rubin)
c1e59ad minor net cleanups (Fuzzbawls)
07ae004 net: move vNodesDisconnected into CConnman (Cory Fields)
276c946 net: add nSendBufferMaxSize/nReceiveFloodSize to CConnection::Options (Cory Fields)
22a9aff net: Introduce CConnection::Options to avoid passing so many params (Cory Fields)
e4891bf net: Drop StartNode/StopNode and use CConnman directly (Cory Fields)
431575c net: pass CClientUIInterface into CConnman (Cory Fields)
48de47e net: Pass best block known height into CConnman (Cory Fields)
15eed91 net: move max/max-outbound to CConnman (Cory Fields)
2bf0921 net: move semOutbound to CConnman (Cory Fields)
481929f net: move nLocalServices/nRelevantServices to CConnman (Cory Fields)
bcee6ae net: move SendBufferSize/ReceiveFloodSize to CConnman (Cory Fields)
6865469 net: move send/recv statistics to CConnman (Cory Fields)
1cec418 net: SocketSendData returns written size (Cory Fields)
2bb9dfa net: move messageHandlerCondition to CConnman (Cory Fields)
9c5a0df net: move nLocalHostNonce to CConnman (Cory Fields)
a1394ef net: move nLastNodeId to CConnman (Cory Fields)
3804c29 net: move whitelist functions into CConnman (Cory Fields)
dbde9be net: create generic functor accessors and move vNodes to CConnman (Cory Fields)
2e02467 net: Add most functions needed for vNodes to CConnman (Cory Fields)
5667e61 net: move added node functions to CConnman (Cory Fields)
37487ed net: Add oneshot functions to CConnman (Cory Fields)
facf878 net: move ban and addrman functions into CConnman (Cory Fields)
091aaf2 net: handle nodesignals in CConnman (Cory Fields)
1e9fa0f net: move OpenNetworkConnection into CConnman (Cory Fields)
573200f net: Move socket binding into CConnman (Cory Fields)
7762b97 net: Pass CConnection to wallet rather than using the global (Fuzzbawls)
00591b8 net: Pass CConnman around as needed (Cory Fields)
2cd3d39 net: Add rpc error for missing/disabled p2p functionality (Cory Fields)
f08e316 net: Create CConnman to encapsulate p2p connections (Cory Fields)
66337dc net: move CBanDB and CAddrDB out of net.h/cpp (Fuzzbawls)
10969f6 gui: add NodeID to the peer table (Cory Fields)
58044ac Fix some locks (Pieter Wuille)
f9f8926 Do not shadow variables in networking code (Pavel Janík)

Pull request description:

  This is the finalization of the upstream PRs being tracked in #1374 to update much of our networking code to more closely follow upstream improvements. The following PRs are included here:

  - bitcoin#8466
    Do not shadow variables in networking code
  - bitcoin#8606
    Fix some locks
  - bitcoin#8085
    Begin encapsulation
  - bitcoin#9289
    drop boost::thread_group
  - bitcoin#8740
    No longer send local address in addrMe
  - bitcoin#8661
    Do not set an addr time penalty when a peer advertises itself

  Additionally, during conflict resolution and backporting of 8085, the following additional upstream PR was included:
  - bitcoin#8715
    only delete CConnman if it's been created

  Still TODO in future PRs:
  - bitcoin#9037
  - bitcoin#9441
  - bitcoin#9609
  - bitcoin#9626
  - bitcoin#9708
  - bitcoin#12381
  - bitcoin#18584

ACKs for top commit:
  furszy:
    same here, code ACK e733939. Nice work ☕ .
  furszy:
    ACK e733939 .
  random-zebra:
    ACK e733939 and merging...

Tree-SHA512: 0fc3cca76d9ddc13f75fc9d48c48d215e6c0e0381377c0318436176a0e0ead73b511e0061a4b63f7052874730b6da8b0ffc2c94cba034bcc39aad4212b69ee22
@furszy furszy closed this as completed Oct 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants