Commit Graph

1282 Commits

Author SHA1 Message Date
TomZ 890ebf2650 Remove obsolete method GetTransaction
It was a bad attempt of correctness and with Indexer it is ready to be
retired.

The RPC methods now just look in the mempool.
2019-04-10 16:16:05 +02:00
TomZ aea9c25c15 Make indexer-cli have more suitable output 2019-04-10 15:38:37 +02:00
TomZ 6cc433c589 Make usage of NetworkConnection::accept() clear
I added some docs to bind() that handlers there should call
accept().
Also made sure that when nobody accepts a connection it actually
gets disconnected instead of just being ignored.
2019-04-10 14:28:33 +02:00
TomZ 20694d4f33 Make indexer be a server too 2019-04-09 19:34:55 +02:00
TomZ ccd66a49b2 Document and refactor NetworkService
The main goal of this is to make sure that network services
implementations don't reuse one bufferpool for all their remotes as that
can cause threading issues.
One bufferpool per remote is now made easy.
2019-04-09 17:24:38 +02:00
TomZ 4f0726119c Give nodes which handed us bad blocks a punishment
This means that when a node following a different chain hands us
a known bad block (likely due to a checkpoint) we end up banning
them.
2019-04-08 16:22:37 +02:00
TomZ 2f9d9520d4 Add support for logging std::list 2019-04-06 15:15:36 +02:00
TomZ 0c97e3261f Cleanup close/disconnect in NWM
Specifically avoid clearing the messages queue when the other side
disconnects.
2019-04-06 12:28:41 +02:00
TomZ ef5dafe6e0 Add private header warnings 2019-04-06 12:28:34 +02:00
TomZ cec1950650 Make connection wait on destructor
Make sure that a NetworkConnection object (which owns the callbacks)
doesn't return from its destructor until the already scheduled callbacks
in another thread have been completed.

This avoids shutdown scenarios where we execute in a deleted
object.
2019-04-06 11:59:49 +02:00
TomZ 9846b467e3 Move code and avoid work.
Move the creation of the ping message to the constructor (from the
connection-established method) so we are certain it gets done exactly
once.

Also avoid putting default (invalid) values in the hashmap.
2019-04-04 22:46:39 +02:00
TomZ 69ab1133f6 Remove obsolete addressingtype 2019-04-04 22:46:39 +02:00
TomZ 0447d3c9f6 Correctly detect and print finishing of indexer 2019-04-03 16:16:44 +02:00
TomZ 747d038585 Make nodes that send us a double spend not get banned
Better keep those nodes close.
2019-04-03 14:48:52 +02:00
TomZ 3cb04abf86 Merge branch '2019.02' 2019-04-03 14:33:59 +02:00
TomZ 6db08ef9f8 Also prune the first file 2019-04-03 14:33:56 +02:00
TomZ 1abe8a137a Move the sse4 part to always compile 2019-04-03 14:33:20 +02:00
TomZ 307c485321 Merge branch '2019.01' into 2019.02 2019-04-02 21:11:10 +02:00
TomZ ece2ac4a01 [CMake] fix misdetection of CPU features
Upgrade the code to check not just if the compiler supports, but
try the actual system too.

Also add a new cmake option 'reproductable_builds' which, when set
to true, will not include any optimized hashing algorithms.
2019-04-02 21:10:28 +02:00
TomZ 8808fa9bb4 [CMake] fix misdetection of CPU features
Upgrade the code to check not just if the compiler supports, but
try the actual system too.

Also add a new cmake option 'reproductable_builds' which, when set
to true, will not include any optimized hashing algorithms.
2019-04-02 21:02:41 +02:00
TomZ 9e2114b5c8 Make current chain tip() be an atomic
This allows better lock-free access and avoids crashes.
2019-04-02 19:56:36 +02:00
TomZ 40b1df6f50 make compile when wallet is compiled in 2019-04-02 19:12:13 +02:00
TomZ 67d2019434 Have a special exception for UTXO internal errors
This avoids an internal error from failing one block due
to a perceived missing input while the block may be fine
but other issues need looking at (for instance disk errors).
2019-04-02 18:40:56 +02:00
TomZ 3e46c3e7b4 Rename some old code to use the product name 'Hub' 2019-04-02 17:51:07 +02:00
TomZ d722bf4290 Move hash helper to more logical place 2019-04-01 15:34:13 +02:00
TomZ 519cd1b6fc Work on stability of the NetworkManager
In extreme cases we might end up going over the bounds of the internal
buffers, as such myConnection.send() may now throw.

I also cleaned up the ping design and made it a bit more strict.
Last I increased the amount of incoming data I can receive in one go,
this will make throughput higher.
2019-04-01 10:57:42 +02:00
TomZ b8757c1da2 Merge branch '2019.02' 2019-04-01 10:57:32 +02:00
TomZ a1a14d644e Cleanup after oneself 2019-04-01 10:57:04 +02:00
TomZ e2c735d6b8 Fix includes 2019-04-01 10:57:04 +02:00
TomZ 3e3c4859fe minor bugfix
Make sure we count changes correctly (off-by-one)
2019-03-31 19:53:53 +02:00
TomZ c655c02a4c minor bugfixes in the new GetBlock API call 2019-03-31 19:53:53 +02:00
TomZ d56b09fd5f Minor bugfixes
Better debug printing. Print hex array instead of 'text'
Fix possible deleted memory being accessed.
2019-03-31 19:51:26 +02:00
TomZ b8d329ef9f Further moves; NetworkEnums and netbase.{cpp|h}
NetworkEnums.h moves from utils to interfaces.
netbase moves from server to utils/
2019-03-29 21:39:08 +01:00
TomZ 5939de8ef0 Move API protocol definition to interfaces dir.
It makes no sense to include the API "library" just to use
the header file.
2019-03-29 21:07:28 +01:00
TomZ 2f5c02538c remove unfinished parts of TransactionBuilder 2019-03-28 20:23:51 +01:00
TomZ 6524acbb96 Final TODOs for the APIProtocol review done 2019-03-28 20:23:41 +01:00
TomZ 57542dda91 Fix regression in NWM (after RingBuffers intro) 2019-03-28 10:23:32 +01:00
TomZ 6475d6060a Fix connecting to named hosts (as opposed to IPs) 2019-03-28 10:23:28 +01:00
TomZ 209e955a11 fix some naming TODOs 2019-03-28 10:23:06 +01:00
TomZ 6647cd0fc9 Move default log level to ignore Info but print Warning 2019-03-27 21:24:19 +01:00
TomZ e2ad40b719 Rename some API items for consistency 2019-03-27 20:25:07 +01:00
TomZ cd31c199ee Add some more asserts to NWM 2019-03-27 20:25:07 +01:00
TomZ a628db675a Cleanup and work on the API tags.
Make things more foolproof by having similar items in different namespaces
use the same number.
Remove APIs for the wallet as that is not a shipped component of the Hub
2019-03-27 20:24:31 +01:00
TomZ c8108f387c Drop API login requirement and api-cookie argument 2019-03-27 18:55:13 +01:00
TomZ 5d0fb95fda Fixlet; move assert
The boost APIs may callback outside of the strand in case of an error.
2019-03-25 12:50:27 +01:00
TomZ 503adb2484 Fix hash as returned by the API
when we get a hash from the JSON wrapped RPC interface it is a string
and it is in reverse order.
This makes sure that the generate() will create the same
hash as other parts of the API.
2019-03-25 12:50:27 +01:00
TomZ 0264e56551 Second part of 'file full' utxo detection
Do checks during insertAll for those really large blocks.
2019-03-25 12:50:27 +01:00
TomZ cb004d3336 Upgrade default to 128 2019-03-25 12:50:27 +01:00
TomZ 7e8ce613bb Fix regression, failure on shutdown 2019-03-24 21:39:41 +01:00
TomZ f78ff55e8d Parameter interaction; blocksize -> mempool
Can't make a big block if we limit the mempool size.
Experience shows we need 4 X the mempool size vs blocksize.
2019-03-24 21:21:32 +01:00