connman is in charge of pushing messages
commit3e32cd09f643bf7d4344d3bb2e1136f186f3d109
authorCory Fields <cory-nospam-@coryfields.com>
Tue, 13 Sep 2016 00:00:33 +0000 (12 20:00 -0400)
committerPieter Wuille <pieter.wuille@gmail.com>
Thu, 3 Nov 2016 20:32:09 +0000 (3 13:32 -0700)
tree315c62f9fa5df102dce6f211083bfa682c3794be
parentb98c14c4e362a8e59d7a3b021651a19ea61b29dd
connman is in charge of pushing messages

The changes here are dense and subtle, but hopefully all is more explicit
than before.

- CConnman is now in charge of sending data rather than the nodes themselves.
  This is necessary because many decisions need to be made with all nodes in
  mind, and a model that requires the nodes calling up to their manager quickly
  turns to spaghetti.

- The per-node-serializer (ssSend) has been replaced with a (quasi-)const
  send-version. Since the send version for serialization can only change once
  per connection, we now explicitly tag messages with INIT_PROTO_VERSION if
  they are sent before the handshake. With this done, there's no need to lock
  for access to nSendVersion.

  Also, a new stream is used for each message, so there's no need to lock
  during the serialization process.

- This takes care of accounting for optimistic sends, so the
  nOptimisticBytesWritten hack can be removed.

- -dropmessagestest and -fuzzmessagestest have not been preserved, as I suspect
  they haven't been used in years.
src/main.cpp
src/net.cpp
src/net.h
src/test/DoS_tests.cpp