Commit Graph

2327 Commits

Author SHA1 Message Date
Peter Šurda 0f3a69adf4
Asyncore update: remove references to deleted files 2017-07-08 06:53:20 +02:00
Peter Šurda 5ae1b6d865
Asyncore update: remove obsolete files 2017-07-08 06:52:17 +02:00
PyBitmessage Translations 1aa45d6eac
Auto-updated language eo from transifex 2017-07-07 16:32:25 +02:00
PyBitmessage Translations 6eb9e93575
Auto-updated language ja from transifex 2017-07-07 16:31:14 +02:00
PyBitmessage Translations 4f969088cf
Auto-updated language pl from transifex 2017-07-07 07:56:19 +02:00
Peter Šurda a98b8690d3
Asyncore fixes
- fix broken loops
- optimise I/O tests
2017-07-07 07:55:29 +02:00
Peter Šurda de22e547c5
Remove buggy log message if prctl is missing
- it's not that important that you need to be informed of it, and
importing logging may cause cyclic dependencies/other problems
2017-07-06 20:06:43 +02:00
Peter Šurda ba4162d7fe
Asyncore update
- get rid of per-connection writeQueue/receiveQueue, and instead use
strings and locking
- minor code cleanup
- all state handlers now should set expectBytes
- almost all data processing happens in ReceiveDataThread, and
AsyncoreThread is almost only I/O (plus TLS). AsyncoreThread simply
puts the connection object into the queue when it has some data for
processing
- allow poll, epoll and kqueue handlers. kqueue is untested and
unoptimised, poll and epoll seem to work ok (linux)
- stack depth threshold handler  in decode_payload_content, this is
recursive and I think was causing occasional RuntimeErrors. Fixes #964
- longer asyncore loops, as now data is handled in ReceiveDataThread
- randomise node order when deciding what to download. Should prevent
retries being stuck to the same node
- socks cleanup (socks5 works ok, socks4a untested but should work too)
2017-07-06 19:45:36 +02:00
Peter Šurda a2b8867c1a
Tooltips for network status columns 2017-07-06 19:36:04 +02:00
Peter Šurda 4536e44b8c
Thread names propagate to system
- the thread names should now show up in the monitoring tools of
operating systems (tested on linux)
2017-07-06 19:35:40 +02:00
PyBitmessage Translations 00a4558971
Auto-updated language eo from transifex 2017-07-06 04:53:29 +02:00
PyBitmessage Translations 83e60d231a
Auto-updated language pl from transifex 2017-07-06 04:52:26 +02:00
PyBitmessage Translations 1dbf98d7f7
Auto-updated language ja from transifex 2017-07-06 00:06:05 +02:00
PyBitmessage Translations 27f9fb0237
Auto-updated language ru from transifex 2017-07-05 17:09:30 +02:00
Peter Šurda fe0664640e
Migrate antiIntersectionDelay to asyncore
- implemented by ignoring getdata during the delay rather than sleeping
as it was in the threaded model
- it can happen that a valid getdata request is received during the
delay. A node should be implemented in a way that retries to download,
that may not be the case with older PyBitmessage versions or other
implementations
2017-07-05 09:27:52 +02:00
Peter Šurda fc19e4119a
Download thread updates
- now tracks downloads globally too, so it doesn't request the same
object from multiple peers at the same time
- retries at the earliest every minute
- stops trying to download an object after an hour
- minor fixes in retrying downloading invalid objects
2017-07-05 09:25:49 +02:00
Peter Šurda 846fced0a2
Remove obsolete inactive code 2017-07-05 09:19:56 +02:00
Peter Šurda d086781ce8
AddrQueue fix
- forgot to commit import
2017-07-05 09:19:18 +02:00
Peter Šurda a0bbd21efc
Add ratings to peers
- outbound peers now have a rating
- it's also shown in the network status tab
- currently it's between -1 to +1, changes by 0.1 steps and uses a
hyperbolic function 0.05/(1.0 - rating) to convert rating to
probability with which we should connect to that node when randomly
chosen
- it increases when we successfully establish a full outbound connection
to a node, and decreases when we fail to do that
- onion nodes have priority when using SOCKS
2017-07-05 09:17:01 +02:00
Peter Šurda 9d09f9f3ce
Reduce severity of socks connectivity errors
- Fixes #1024
- Fixes #1019
2017-07-05 09:07:00 +02:00
Peter Šurda 773d91bbe2
Unknown object log entry less severe
- unnecessarily classified as critical
- fixes #1023
2017-07-05 09:01:40 +02:00
Peter Šurda e00a02206b
AddrThread
- this thread is for spreading new/updated addresses in active
connections, analogous to the InvThread
- it doesn't do anything yet, this is just a dummy queue at the moment
2017-07-05 08:57:44 +02:00
Peter Šurda 27f5de0f9c
Unified random number provider
- not used yet, just an inactive helper function
- I received feedback that OpenSSL.rand isn't more secure than
os.urandom. I read several debates/analyses about it and concur
2017-07-05 08:52:16 +02:00
PyBitmessage Translations 70c5929e92
Auto-updated language ru from transifex 2017-07-04 17:51:58 +02:00
Peter Šurda cc3cf77759
New class multiqueue
- to be used for invthread and addthread
- updated invthread for multiqueue
2017-06-27 13:25:12 +02:00
Peter Šurda f5a143d0b8
Config validator
- config options can have validators
- limit maxoutboundconnections to max 8
2017-06-27 13:19:12 +02:00
Peter Šurda 20e01860cf
Network status peer list shouldn't be editable 2017-06-27 13:16:41 +02:00
PyBitmessage Translations 8a3577aed7
Auto-updated language eo from transifex 2017-06-25 19:26:14 +02:00
PyBitmessage Translations 30b65aaefc
Auto-updated language pl from transifex 2017-06-25 19:25:47 +02:00
PyBitmessage Translations ccfe58c2c0
Auto-updated language ja from transifex 2017-06-25 16:49:31 +02:00
Peter Šurda aa203b23ee
Fix typo introduced by code quality patch 2017-06-24 23:09:08 +02:00
Peter Šurda 189578cba3
Asyncore proxy fixes
- SOCKS5 now seems to work, SOCKS4a untested
2017-06-24 12:23:56 +02:00
Peter Šurda 916b85c862
Connection pool cleanup
- minor code quality improvement
2017-06-24 12:23:16 +02:00
Peter Šurda 0dc0b22974
Expired / Stream mismatch / duplicate object error handling
- cleanup of the code
2017-06-24 12:22:41 +02:00
Peter Šurda 0a79490e2c
Known nodes maximum configurable part 2 2017-06-24 12:21:42 +02:00
Peter Šurda d57b0c55ee
Object validator trigger moved
- from bmproto to bmobject
2017-06-24 12:21:06 +02:00
Peter Šurda dc5a91f326
Remove stack depth warnings
- I was never able to trigger them
2017-06-24 12:19:19 +02:00
Peter Šurda e9edf70d3a
TLS updates
- save TLS version
- minor TLS error handling updates
2017-06-24 12:18:15 +02:00
Peter Šurda b9d60f8b41
Max known nodes configurable 2017-06-24 12:17:01 +02:00
Peter Šurda 26eb54a82e
Network status updates
- now lists each node with its info instead of a per-stream summary
2017-06-24 12:16:12 +02:00
Peter Šurda bfbdd7e140
Chan address validator button feedback
- During validation, the button not only turns gray but also changes
label
2017-06-24 12:14:23 +02:00
Peter Šurda 2685fe29b1
Code quality improvements 2017-06-24 12:13:35 +02:00
Peter Šurda 243025a1aa
Leave __delitem__ unimplemented in filesystem storage
- rename the cleaning method
2017-06-21 12:17:40 +02:00
Peter Šurda 618f3865c1
Main thread end
- instead of sleeping, it just ends
2017-06-21 12:16:56 +02:00
Peter Šurda 0cc8589b27
Asyncore updates
- should prevent the same object being re-requested indefinitely
- locking for object tracking
- move SSL-specific error handling to TLSDispatcher
- observe maximum connection limit when accepting a new connection
- stack depth test (for debugging purposes)
- separate download thread
- connection pool init moved to main thread
2017-06-21 12:16:33 +02:00
Dmitri Bogomolov 76fed78211
Made it possible to use installed umsgpack 2017-06-12 13:54:44 +03:00
Dmitri Bogomolov 06fed6f9c2
setup.py: second exception in list can be treated as variable 2017-06-12 12:58:16 +03:00
Dmitri Bogomolov b7f9e74eea
setup.py: added new packages appeared after 36b5e2c 2017-06-12 12:52:24 +03:00
Peter Šurda a3a55e53c4
UDP Socket dict address fix
- fixes #1008
2017-06-11 14:11:39 +02:00
Peter Šurda cba749088a
Asyncore updates
- mainly work on proxy support, but it's still not fully working
- minor bugfixes
2017-06-10 10:13:49 +02:00