Peter Šurda
5708a38be0
Fix sending messages crashing
2017-01-17 01:07:39 +01:00
Peter Šurda
9197c425d2
Object requesting fix
2017-01-17 00:32:05 +01:00
Peter Šurda
9ed59dd825
Shutdown procedure cleanup
2017-01-16 23:38:18 +01:00
Peter Šurda
ca8550a206
Don't send requests for 0 objects
2017-01-16 23:37:25 +01:00
Peter Šurda
749bb628c0
Typo
2017-01-16 23:37:03 +01:00
Peter Šurda
4f920fe641
Fix infinite loop
2017-01-16 23:17:56 +01:00
Peter Šurda
d652dc864d
Downloading fixes
...
- able to request more objects with one command
- fixes to logic and error handling
2017-01-16 19:36:58 +01:00
Peter Šurda
9f89df6d1c
Expire objects that we're unable to receive
...
- sometimes a node would send an "inv" about an object but then not
provide it when requested. This could be that it expired in the
meantime or it was an attack or a bug. This patch will forget that the
object exists if was requested too many times and not received.
2017-01-16 17:08:47 +01:00
Peter Šurda
ca6bc9981c
Better tracking in downloading objects
...
- remember what was requested from which node
- remember if it was received
- re-request object if we haven't received any new object for more than
a minute
2017-01-16 15:17:23 +01:00
Peter Šurda
8dfa0faca9
More objects to be downloaded fixes
2017-01-15 23:10:44 +01:00
Peter Šurda
12205ee7ba
More fixes in objects to be downloaded
2017-01-15 23:07:11 +01:00
Peter Šurda
bd1aead46e
More fixes for objects to be downloaded
2017-01-15 22:41:12 +01:00
Peter Šurda
d04c0e78e4
Better handling of pending downloading objects
2017-01-15 22:36:12 +01:00
Peter Šurda
b750e67bfb
Handle exception in iterator
2017-01-15 22:25:09 +01:00
Peter Šurda
805f72e098
Make objects to be send stoppable if not empty
2017-01-15 22:21:19 +01:00
Peter Šurda
94f0bdc731
Objects to be downloaded optimising
...
- treat requested but never arrived objects as expired. This is how it
worked before the refactoring. Without this, the list won't go to
zero.
2017-01-15 22:01:10 +01:00
Peter Šurda
79893fdc23
Performance tuning objects to be downloaded
...
- rely on dict quasi-random order instead of an additional shuffle
- request an object once per minute
- stop check after count objects have been found
2017-01-15 20:47:33 +01:00
Peter Šurda
dbe15d0b99
Objects to be downloaded fixes
...
- tries to avoid calling senddata it it would block receiveDataThread,
allowing fore more asynchronous operation
- request objects in chunks of 100 (CPU performance optimisation)
2017-01-15 19:50:28 +01:00
Peter Šurda
f079ff5b99
Refactor objects to be downloaded
...
- moved logic into a Missing singleton
- shouldn't try to download duplicates anymore, only requests a hash
once every 5 minutes and not from the same host
- removed obsoleted variables
- the "Objects to be synced" in the Network tab should now be correct
- removed some checks which aren't necessary anymore in my opinion
- fix missing self in Throttle (thanks landscape.io)
2017-01-15 19:21:24 +01:00
Peter Šurda
6d2a75bfc9
Transfer speed improvements
...
- send buffer to send multiple commands in one TCP packet
- recv/send operation size now based on bandwith limit
- send queue limited to 100 entries
- buffer getdata commands to fill send queue, instead of waiting for the
data packet to arrive first (i.e. allow getdata to work asynchronously)
2017-01-15 15:08:03 +01:00
Peter Šurda
c3fef7bc4e
Syntax fix
2017-01-15 12:41:19 +01:00
Peter Šurda
869417f506
Missing import
2017-01-15 11:42:20 +01:00
Peter Šurda
9bf17b34d1
Remove obsolete imports and code
...
- landscape.io pointed out obsolete imports
- there is also an obsolete variable and lock in throttle.py
- add Exception type to BMConfigParser().save
2017-01-15 11:40:31 +01:00
Peter Šurda
8cb0953401
Moved writeKeysFile into configparser
...
- shared.writeKeysFile -> BMConfigParser().save
- makes it easier to get rid of circular imports
2017-01-15 10:50:02 +01:00
Peter Šurda
5ca8a52662
Typos, extra imports and similar
...
- pointed out by landscape.io
- also updated dev/ssltest.py to work the same way as the main program
2017-01-15 10:48:29 +01:00
Peter Šurda
689d697a40
Refactor bandwidth limit and speed calculator
...
- also fixes potential deadlocks
2017-01-14 23:21:00 +01:00
Peter Šurda
ad75552b5c
Move shutdown from shared.py to state.py
2017-01-14 23:20:15 +01:00
Peter Šurda
bcc7692e14
Add safeGetInt to BMConfigParser
2017-01-14 23:18:06 +01:00
Peter Šurda
02a7c59de8
OpenSSL 1.1.0 compatibility fixes
...
- part 2, continued from previous commit
2017-01-14 17:50:49 +01:00
Peter Šurda
59b5ac3a61
OpenSSL 1.1.0 compatibility fixes
...
- function check missed 1.1.0 release
- TLS didn't work with anonymous ciphers
2017-01-14 17:47:57 +01:00
Peter Šurda
6247e1d3ea
Add more debug info and error handling to ssltest
2017-01-14 13:55:57 +01:00
Peter Šurda
ff593273bf
Add ssltest.py for developers/debugging
2017-01-14 13:51:44 +01:00
Peter Šurda
fa2f87743e
SSL handshake fix
...
- SSL handshake would often fail, because verack packet was being sent
at the same time as the do_handshake was executed in a different
thread. This makes it so that do_handshake waits until verack is done
sending.
- also minor modifications in SSLContext initialisation
2017-01-14 13:22:46 +01:00
Peter Šurda
cc4c07025b
Sending thread fix
2017-01-14 12:35:08 +01:00
Peter Šurda
8d278182a7
Indentation
2017-01-13 15:53:47 +01:00
Peter Šurda
93bdc3c800
Remove extra print
2017-01-13 12:32:26 +01:00
Peter Šurda
d0b1cbfe1f
Add current git HEAD info to support request
2017-01-13 12:29:14 +01:00
Peter Šurda
5ae676f2ad
Minor support fix
2017-01-13 12:05:39 +01:00
Peter Šurda
6778d6046f
Add OpenSSL 1.1.0 compatibility
...
- thanks to Wolfgang Frisch <wfr@roembden.net>
2017-01-13 12:02:34 +01:00
Peter Šurda
59cf33c9a1
Remove obsolete import
2017-01-13 12:01:38 +01:00
Peter Šurda
65701e5997
neededPubkeys fix
...
- was still using shared.neededPubkeys
2017-01-13 09:30:23 +01:00
Peter Šurda
ff8deebf60
Keep track of network protocol status
2017-01-12 19:18:56 +01:00
Peter Šurda
810e50a040
Fix minor issues
...
- landscape.io complained
- obsolete imports
- ciphers -> self.ciphers
2017-01-12 07:26:04 +01:00
Peter Šurda
2cf2188bc3
Object sending fix
...
- forgot to move broadcastToSendDataQueues in class_singleWorker.py
2017-01-12 07:22:34 +01:00
Peter Šurda
bd520a340f
Trustedpeer fix and more refactoring
...
- fixed trustedPeer (thanks to anonymous bug reporter)
- moved trustedPeer and Peer into state.py
2017-01-12 06:58:35 +01:00
Peter Šurda
e7470a4757
Remove leftover from debugging
2017-01-12 06:57:17 +01:00
Peter Šurda
5ceb920bd6
TLS tuning
...
- allow TLS > 1.0 with python >= 2.7.9
- tune ssl_context with python >= 2.7.9
2017-01-11 20:47:27 +01:00
Peter Šurda
c738d93056
Assorted fixes
...
- landscape.io was complaining, this fixes most easily fixable errors
2017-01-11 18:13:00 +01:00
Peter Šurda
cdcdf11d59
Missing import fix
2017-01-11 17:46:33 +01:00
Peter Šurda
fa0a3135e7
Fixes pointed out by landscape.io
...
- missing/wrong/obsolete imports
- logger formatting
2017-01-11 17:26:25 +01:00