Commit graph

12537 commits

Author SHA1 Message Date
Cory Fields
991955ee81 net: add a flag to indicate when a node's send buffer is full
Similar to the recv flag, but this one indicates whether or not the net's send
buffer is full.

The socket handler checks the send queue when a new message is added and pauses
if necessary, and possibly unpauses after each message is drained from its buffer.
2017-01-12 23:05:59 -05:00
Cory Fields
c6e8a9bcff net: add a flag to indicate when a node's process queue is full
Messages are dumped very quickly from the socket handler to the processor, so
it's the depth of the processing queue that's interesting.

The socket handler checks the process queue's size during the brief message
hand-off and pauses if necessary, and the processor possibly unpauses each time
a message is popped off of its queue.
2017-01-12 23:05:47 -05:00
Cory Fields
4d712e366c net: add a new message queue for the message processor
This separates the storage of messages from the net and queued messages for
processing, allowing the locks to be split.
2017-01-12 23:05:25 -05:00
Cory Fields
c5a8b1b946 net: rework the way that the messagehandler sleeps
In order to sleep accurately, the message handler needs to know if _any_ node
has more processing that it should do before the entire thread sleeps.

Rather than returning a value that represents whether ProcessMessages
encountered a message that should trigger a disconnnect, interpret the return
value as whether or not that node has more work to do.

Also, use a global fProcessWake value that can be set by other threads,
which takes precedence (for one cycle) over the messagehandler's decision.

Note that the previous behavior was to only process one message per loop
(except in the case of a bad checksum or invalid header). That was changed in
PR #3180.

The only change here in that regard is that the current node now falls to the
back of the processing queue for the bad checksum/invalid header cases.
2017-01-12 23:05:24 -05:00
Cory Fields
c72cc88ed3 net: remove useless comments 2017-01-12 23:05:09 -05:00
Cory Fields
ef7b5ecbb7 net: Add a simple function for waking the message handler
This may be used publicly in the future
2017-01-12 23:05:09 -05:00
Cory Fields
f5c36d19b6 net: record bytes written before notifying the message processor 2017-01-12 23:05:09 -05:00
Cory Fields
60befa3997 net: handle message accounting in ReceiveMsgBytes
This allows locking to be pushed down to only where it's needed

Also reuse the current time rather than checking multiple times.
2017-01-12 23:05:09 -05:00
Cory Fields
56212e20ac net: set message deserialization version when it's actually time to deserialize
We'll soon no longer have access to vRecvMsg, and this is more intuitive anyway.
2017-01-04 10:10:35 -05:00
Cory Fields
0e973d970a net: remove redundant max sendbuffer size check
This is left-over from before there was proper accounting. Hitting 2x the
sendbuffer size should not be possible.
2017-01-04 10:10:35 -05:00
Cory Fields
60425870d7 net: wait until the node is destroyed to delete its recv buffer
when vRecvMsg becomes a private buffer, it won't make sense to allow other
threads to mess with it anymore.
2017-01-04 09:29:14 -05:00
Cory Fields
f6315e07f9 net: only disconnect if fDisconnect has been set
These conditions are problematic to check without locking, and we shouldn't be
relying on the refcount to disconnect.
2017-01-04 09:29:14 -05:00
Cory Fields
5b4a8ac6d6 net: make GetReceiveFloodSize public
This will be needed so that the message processor can cork incoming messages
2017-01-04 09:29:14 -05:00
Cory Fields
e5bcd9c84f net: make vRecvMsg a list so that we can use splice() 2017-01-04 09:29:14 -05:00
Cory Fields
53ad9a133a net: fix typo causing the wrong receive buffer size
Surprisingly this hasn't been causing me any issues while testing, probably
because it requires lots of large blocks to be flying around.

Send/Recv corks need tests!
2017-01-04 09:29:14 -05:00
MarcoFalke
5bc3b6cede
Merge #9467: [Trivial] [Doc] Install Protobuf v3 on OS X
35ee63c [Doc] Install Protobuf v3 on OS X (fanquake)
2017-01-04 13:45:38 +01:00
MarcoFalke
c2ea1e6561
Merge #9401: Make rpcauth help message clearer, add example in example .conf
0513c70 Make rpcauth help message clearer, add example in example .conf (Gregory Sanders)
2017-01-04 13:00:12 +01:00
Wladimir J. van der Laan
d65a13b773
Merge #9396: Updated listsinceblock rpc documentation
3f67972 updated listsinceblock rpc docs (accraze)
2017-01-04 12:47:56 +01:00
Wladimir J. van der Laan
1ce7ede2a9
Merge #9288: Fix a bug if the min fee is 0 for FeeFilterRounder
f8d43b8 Avoid rollingMinimumFeeRate never being able to decay below half (Alex Morcos)
eab8e1b fix a bug if the min fee is 0 for FeeFilterRounder (Alex Morcos)
2017-01-04 12:33:56 +01:00
Wladimir J. van der Laan
869781c51c
Merge #9283: A few more CTransactionRef optimizations
91335ba Remove unused MakeTransactionRef overloads (Pieter Wuille)
6713f0f Make FillBlock consume txn_available to avoid shared_ptr copies (Pieter Wuille)
62607d7 Convert COrphanTx to keep a CTransactionRef (Pieter Wuille)
c44e4c4 Make AcceptToMemoryPool take CTransactionRef (Pieter Wuille)
2017-01-04 12:23:10 +01:00
Wladimir J. van der Laan
d9ae1cefa0
Merge #9289: net: drop boost::thread_group
67ee4ec net: misc header cleanups (Cory Fields)
8b3159e net: make proxy receives interruptible (Cory Fields)
5cb0fce net: remove thread_interrupted catch (Cory Fields)
d3d7056 net: make net processing interruptible (Cory Fields)
0985052 net: make net interruptible (Cory Fields)
799df91 net: add CThreadInterrupt and InterruptibleSleep (Cory Fields)
7325b15 net: a few small cleanups before replacing boost threads (Cory Fields)
2017-01-04 12:21:53 +01:00
Wladimir J. van der Laan
c0ddd32bf6
Merge #9450: Increment MIT licence copyright header year on files modified in 2016
27765b6 Increment MIT Licence copyright header year on files modified in 2016 (isle2983)
2017-01-04 12:09:05 +01:00
fanquake
35ee63c565
[Doc] Install Protobuf v3 on OS X 2017-01-04 17:08:04 +08:00
Wladimir J. van der Laan
649cf5fe89
Merge #9462: [qt] Do not translate tilde character
fab6c5f [qt] Do not translate `~` (MarcoFalke)
2017-01-04 08:21:04 +01:00
Cory Fields
67ee4ec901 net: misc header cleanups 2017-01-03 17:56:21 -05:00
Cory Fields
8b3159ef0a net: make proxy receives interruptible 2017-01-03 17:56:21 -05:00
Cory Fields
5cb0fcee81 net: remove thread_interrupted catch
This is now a std::thread, so there's no hope of catching a boost interruption
point.
2017-01-03 17:56:21 -05:00
Cory Fields
d3d7056d2a net: make net processing interruptible 2017-01-03 17:56:20 -05:00
Cory Fields
0985052319 net: make net interruptible
Also now that net threads are interruptible, switch them to use std
threads/binds/mutexes/condvars.
2017-01-03 17:53:09 -05:00
Cory Fields
799df9115f net: add CThreadInterrupt and InterruptibleSleep 2017-01-03 17:53:09 -05:00
Cory Fields
7325b15566 net: a few small cleanups before replacing boost threads
- Drop the interruption point directly after the pnode allocation. This would
    be leaky if hit.
- Rearrange thread creation so that the socket handler comes first
2017-01-03 17:53:09 -05:00
Pieter Wuille
2a524b8e8f
Merge #8776: Wallet refactoring leading up to multiwallet
5394b39 Wallet: Split main logic from InitLoadWallet into CreateWalletFromFile (Luke Dashjr)
fb0c934 Wallet: Let the interval-flushing thread figure out the filename (Luke Dashjr)
2017-01-03 14:11:11 -08:00
Pieter Wuille
ce5c1f4aca
Merge #9252: Release cs_main before calling ProcessNewBlock, or processing headers (cmpctblock handling)
bd02bdd Release cs_main before processing cmpctblock as header (Suhas Daftuar)
680b0c0 Release cs_main before calling ProcessNewBlock (cmpctblock handling) (Suhas Daftuar)
2017-01-03 13:52:16 -08:00
MarcoFalke
fab6c5f46b [qt] Do not translate ~ 2017-01-03 17:51:12 +01:00
Jonas Schnelli
6dc4c43d32
Merge #8877: Qt RPC console: history sensitive-data filter, and saving input line when browsing history
8562792 GUI/RPCConsole: Include importmulti in history sensitive-command filter (Luke Dashjr)
ff77faf Qt/RPCConsole: Use RPCParseCommandLine to perform command filtering (Luke Dashjr)
a79598d Qt/Test: Make sure filtering sensitive data works correctly in nested commands (Luke Dashjr)
629cd42 Qt/RPCConsole: Teach RPCParseCommandLine how to filter out arguments to sensitive commands (Luke Dashjr)
e2d9213 Qt/RPCConsole: Make it possible to parse a command without executing it (Luke Dashjr)
1755c04 Qt/RPCConsole: Truncate filtered commands to just the command name, rather than skip it entirely in history (Luke Dashjr)
d80a006 Qt/RPCConsole: Add signmessagewithprivkey to list of commands filtered from history (Luke Dashjr)
afde12f Qt/RPCConsole: Refactor command_may_contain_sensitive_data function out of RPCConsole::on_lineEdit_returnPressed (Luke Dashjr)
de8980d Bugfix: Do not add sensitive information to history for real (Luke Dashjr)
9044908 Qt/RPCConsole: Don't store commands with potentially sensitive information in the history (Jonas Schnelli)
fc95daa Qt/RPCConsole: Save current command entry when browsing history (Jonas Schnelli)
2017-01-03 16:57:21 +01:00
Wladimir J. van der Laan
e0dc3d70c6
Merge #9460: Fix a few typos in translated strings
d45b21e qt: Fill in English numerusforms (Wladimir J. van der Laan)
a9d6151 qt,wallet: Fix a few typos in messages (Wladimir J. van der Laan)
2017-01-03 15:44:09 +01:00
Wladimir J. van der Laan
d45b21e2b3 qt: Fill in English numerusforms
minute/minutes block/blocks and so forth.
2017-01-03 15:03:37 +01:00
Wladimir J. van der Laan
a9d6151802 qt,wallet: Fix a few typos in messages
As reported by [yahoe.001](https://www.transifex.com/user/profile/yahoe.001/).
2017-01-03 15:01:46 +01:00
Wladimir J. van der Laan
03e1d6ce34
doc: Add historical release notes for 0.13.2 2017-01-03 11:52:31 +01:00
Jonas Schnelli
510c0d9c79
Merge #9446: SetMerkleBranch: remove unused code, remove cs_main lock requirement
9e351c9 SetMerkleBranch: remove unused code, remove cs_main lock requirement (Jonas Schnelli)
2017-01-03 09:31:57 +01:00
Jonas Schnelli
53442af0aa
Merge #9412: build: Fix 'make deploy' for OSX
2fb98f6 Fix bug in dmg builder so that it actually reads in the configuration file (Don Patterson)
b01667c Mention RSVG dependency when creating the disk image on OSX (Jonas Schnelli)
09aefb5 build: Fix 'make deploy' for OSX (Cory Fields)
2017-01-02 09:43:15 +01:00
Wladimir J. van der Laan
1d2d67692c
qt: Set transifex slug to 0.14
Also perform update of source translations.
2017-01-02 09:36:03 +01:00
MarcoFalke
caa2f106d7
Merge #9433: Update the Windows build notes
b705a04 Update the Windows build notes (Douglas Roark)
2017-01-01 12:59:00 +01:00
isle2983
27765b6403 Increment MIT Licence copyright header year on files modified in 2016
Edited via:

$ contrib/devtools/copyright_header.py update .
2016-12-31 11:01:21 -07:00
Don Patterson
2fb98f6661
Fix bug in dmg builder so that it actually reads in the configuration file 2016-12-30 10:44:58 +01:00
Jonas Schnelli
9e351c9586
SetMerkleBranch: remove unused code, remove cs_main lock requirement 2016-12-30 10:37:13 +01:00
Douglas Roark
b705a04b91 Update the Windows build notes
- Clarify the Windows Subsystem For Linux section.
- Clarify the build requirements.
2016-12-29 23:54:14 -08:00
Jonas Schnelli
bebe3697fd
Merge #9420: Fix linker error when configured with --enable-lcov
e2b5c98 Fix linker error when configured with --enable-lcov (Douglas Roark)
2016-12-30 08:43:31 +01:00
Luke Dashjr
8562792095 GUI/RPCConsole: Include importmulti in history sensitive-command filter 2016-12-29 11:47:58 +00:00
Luke Dashjr
ff77faf480 Qt/RPCConsole: Use RPCParseCommandLine to perform command filtering 2016-12-29 11:47:58 +00:00