Commit Graph

6078 Commits

Author SHA1 Message Date
Felix Lange
995fab2ebc p2p: fix yet another disconnect hang
Peer.readLoop will only terminate if the connection is closed. Fix the
hang by closing the connection before waiting for readLoop to terminate.

This also removes the british disconnect procedure where we're waiting
for the remote end to close the connection. I have confirmed with
@subtly that cpp-ethereum doesn't adhere to it either.
2015-04-13 17:34:08 +02:00
obscuren
97d2954e22 eth: added downloader for syncing up the chain 2015-04-13 17:22:32 +02:00
Felix Lange
79a6782c1c p2p: fix goroutine leak when handshake read fails
This regression was introduced in b3c058a9e4.
2015-04-13 17:06:19 +02:00
Jeffrey Wilcke
ad4891a09a Merge pull request #689 from Gustav-Simonsson/add_transaction_tests
Add transaction tests
2015-04-13 16:55:21 +02:00
obscuren
a8a2b2a488 downloader: added missing blocks catchup functionality
When a parent is missing in the block list an attempt should be made to
fetch the missing parent and grandparents.
2015-04-13 16:38:32 +02:00
Péter Szilágyi
cb707ba50c whisper: push work in progress for bug report 2015-04-13 16:19:34 +03:00
zelig
3d57e377a4 blockpool stability fixes:
- follow up locks and fix them
- chainManager: call SetQueued for parentErr future blocks, uncomment TD checks, unskip test
- make ErrIncorrectTD non-fatal to be forgiving to genuine mistaken nodes (temp) but demote them to guard against stuck best peers.
- add purging to bounded nodeCache (config nodeCacheSize)
- use nodeCache when creating blockpool entries and let non-best peers add blocks (performance boost)
- minor error in addError
- reduce idleBestPeerTimeout to 1 minute
- correct status counts and unskip status passing status test
- glogified logging
2015-04-13 13:13:55 +01:00
Felix Lange
faa2747809 Merge pull request #690 from karalabe/whisper-cleanup
Whisper cleanup, part 1
2015-04-13 13:39:59 +02:00
Péter Szilágyi
89358d25a4 whisper: start adding integration tests 2015-04-13 13:15:01 +03:00
Péter Szilágyi
9a53390f49 whisper: clean up and integrate topics 2015-04-13 12:16:51 +03:00
Péter Szilágyi
7b501906db whisper: separate out magic number from the code 2015-04-13 11:31:51 +03:00
Bas van Kervel
49a513bdeb Added blockchain DB versioning support, closes #650 2015-04-13 10:13:52 +02:00
obscuren
7dcb9825c3 downloader: return an error for peer.fetch and return chunk to queue
If a peer was somehow already fetching and somehow managed to end up in
the `available` pool it should return it's work.
2015-04-12 13:36:01 +02:00
Péter Szilágyi
5467e7b312 whisper: fix comment entity capitalizations 2015-04-12 14:34:53 +03:00
obscuren
6efa8db888 downloader: renamed chunks to queue 2015-04-12 13:24:38 +02:00
obscuren
acf8452c33 downloader: implemented new downloader 2015-04-12 12:38:25 +02:00
Jeffrey Wilcke
61db7a71dd Merge pull request #695 from ethersphere/frontier/blockpool
bugfixes for headsection deadlocks
2015-04-11 10:46:34 +02:00
zelig
406feee570 bugfixes for headsection deadlocks
- switchC initialised as closed
- move select in setChainInfoFromBlock out of peer lock
2015-04-11 04:58:53 +01:00
obscuren
f047699afb Updated glog 2015-04-10 19:59:07 +02:00
obscuren
3aa5437a10 Set input to nil for create 2015-04-10 19:59:01 +02:00
obscuren
36fe11378c Bump 2015-04-10 18:21:27 +02:00
obscuren
eb75a77151 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 18:21:09 +02:00
Jeffrey Wilcke
6107b53de0 Merge pull request #692 from ethersphere/frontier/blockpool
td update from node + bugfix
2015-04-10 18:20:23 +02:00
obscuren
5d4f69f483 Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 17:59:38 +02:00
Jeffrey Wilcke
92fbb61625 Merge pull request #691 from fjl/discovery-fixes
p2p: a bunch of fixes
2015-04-10 17:59:32 +02:00
obscuren
3d29805322 Added pprof 2015-04-10 17:38:06 +02:00
zelig
da7332a731 td update from node
- reorg and simplify AddBlock
- introduce nodeCache
- TestPeerPromotionByTdOnBlock unskipped and passes
- move switchC/idleC channel creation around: solves deadlock (now respects the contract with section process: either can activate or complete at any one time)
2015-04-10 16:36:40 +01:00
Felix Lange
c5332537f5 p2p: limit number of lingering inbound pre-handshake connections
This is supposed to apply some back pressure so Server is not accepting
more connections than it can actually handle. The current limit is 50.
This doesn't really need to be configurable, but we'll see how it
behaves in our test nodes and adjust accordingly.
2015-04-10 17:24:41 +02:00
Felix Lange
56977c225e p2p: use RLock instead of Lock for pre-dial checks 2015-04-10 17:23:09 +02:00
Felix Lange
b3c058a9e4 p2p: improve disconnect signaling at handshake time
As of this commit, p2p will disconnect nodes directly after the
encryption handshake if too many peer connections are active.
Errors in the protocol handshake packet are now handled more politely
by sending a disconnect packet before closing the connection.
2015-04-10 16:57:56 +02:00
Péter Szilágyi
f8a4cd7ec1 xeth/whisper, ui/qt/qwhisper: fix API update breaks. 2015-04-10 17:03:08 +03:00
Péter Szilágyi
0e4f21fc37 whisper: polish the Envelope a bit, prep for tests. 2015-04-10 16:52:01 +03:00
Péter Szilágyi
7d8ce53eca whisper: polish the messages, fix some bugs, tests
Bugs fixed:
  - Use randomly generated flags as the spec required.
  - During envelope opening check the first bit only for signature.
2015-04-10 15:53:21 +03:00
Felix Lange
99a1db2d40 p2p: don't mess with the socket deadline in Peer.readLoop
netWrapper already sets a read deadline in ReadMsg.
2015-04-10 13:26:28 +02:00
Felix Lange
145330fdf2 p2p: properly decrement peer wait group counter for setup errors 2015-04-10 13:26:27 +02:00
Felix Lange
f1d710af00 p2p: fix Peer shutdown deadlocks
There were multiple synchronization issues in the disconnect handling,
all caused by the odd special-casing of Peer.readLoop errors. Remove the
special handling of read errors and make readLoop part of the Peer
WaitGroup.

Thanks to @Gustav-Simonsson for pointing at arrows in a diagram
and playing rubber-duck.
2015-04-10 13:26:27 +02:00
Felix Lange
22d1f0faf1 p2p: improve peer selection logic
This commit introduces a new (temporary) peer selection
strategy based on random lookups.

While we're here, also implement the TODOs in dialLoop.
2015-04-10 13:26:27 +02:00
Felix Lange
7be05b4b9d p2p/discover: don't log packet content 2015-04-10 13:26:27 +02:00
Felix Lange
9cd8c96157 p2p/discover: make packet processing less concurrent 2015-04-10 13:26:27 +02:00
Péter Szilágyi
7e54a9c07f whisper: rename test file according to Go style 2015-04-10 13:46:08 +03:00
Péter Szilágyi
a4c8e947b0 whisper: make the test app runnable & do something inside 2015-04-10 13:42:49 +03:00
Gustav Simonsson
6d20d634ca Enable more tx tests by expecting most common encoding of values 2015-04-10 12:34:55 +02:00
Gustav Simonsson
6dc2146ed7 Remove unneeded map assignments for working tx RLP tests 2015-04-10 12:03:46 +02:00
Gustav Simonsson
9ac5671c18 Add TransactionTests wrapped as Go tests
* Add initial go wrapping for TransactionTests with some tests
  disabled in lieu of consistent HEX encodings and a few other
  pending bugfixes
* TODO: Consider better way of perhaps modelling each test in
  the JSON files as a single Go test, instead of one Go test per
  JSON file
2015-04-10 11:55:31 +02:00
Gustav Simonsson
1e18f4544b Update JSON test files 2015-04-10 11:52:31 +02:00
obscuren
fc1d1f9afd Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop 2015-04-10 11:03:46 +02:00
obscuren
3755cfccb3 Skipped td test 2015-04-10 11:03:36 +02:00
Jeffrey Wilcke
20fd60902b Merge pull request #687 from karalabe/develop
xeth: fix #640, panic converting nil recipient to hex.
2015-04-10 11:02:25 +02:00
Péter Szilágyi
d1729acd2b cmd/mist: fix another nil recipient address panic. 2015-04-10 11:43:08 +03:00
Péter Szilágyi
b2b1241dd7 cmd/mist: fix #640, panic converting nil recipient to hex.
Fetching the recipient address from a transaction was changed to return nil
instead of a zero-address, but this code path was not updated, so whenever
a contract was created, a nil panic occured.
2015-04-10 11:20:04 +03:00