Commit Graph

1876 Commits

Author SHA1 Message Date
Peter Šurda 853c8561ec
Per connection node id part 2
- forgot to include this in the previous commit
2017-07-10 07:12:52 +02:00
Peter Šurda 3941b39136
Randomise node id
- in order to detect if it's connected to to itself, PyBitmessage now
uses a per-connection id rather than a global one
2017-07-10 07:10:05 +02:00
Peter Šurda bdf61489ae
Allow multiple ReceiveQueue threads
- defaults to 3
2017-07-10 07:08:10 +02:00
Peter Šurda f088e0ae21
Change thread names
- not needed to have "Thread" in the name of a thread
2017-07-10 07:05:50 +02:00
Peter Šurda 4fce01e34a
Less data transferred in invThread and addrThread 2017-07-08 18:02:47 +02:00
Peter Šurda 2df9598774
Asyncore update: Fix incoming connections
- dereferencing wasn't done correctly for incoming connections
2017-07-08 07:33:29 +02:00
Peter Šurda 2d7d9c2f92
Asyncore update
- request downloads in bigger chunks
- don't put whole objects into the receiveDataQueue
2017-07-08 06:54:25 +02:00
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
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
Peter Šurda 7deb7c3d4f
Typo 2017-06-10 10:11:50 +02:00
Peter Šurda 8d41d5fcf6
default known nodes update 2017-06-10 10:11:21 +02:00
Peter Šurda 7f06cb7c27
Inventory flush fix in GUI
- Fixes #1011
2017-06-10 10:10:59 +02:00
Peter Šurda 7e8ee51322
Fallback umsgpack import fix 2017-06-10 10:09:44 +02:00
Peter Šurda f366447e94
Fix identicon imports 2017-06-10 10:09:14 +02:00
Peter Šurda d34fdbb3f4
Fix network status in api 2017-06-10 10:08:40 +02:00
Peter Šurda ae97f7abd8
Typo 2017-06-10 10:07:47 +02:00
Peter Šurda 009a215224
Fix api connected hosts lists 2017-06-09 10:07:51 +02:00
Peter Šurda 7bde4e9445
Missing module name in bmproto 2017-06-04 10:25:16 +02:00
Peter Šurda e8d9a7f183
Asyncore connect handling
- minor improvements in handling of connect events so that it's not
processed twice
2017-06-03 16:30:05 +02:00
Peter Šurda a9c0000c17
Treat some invalid objects as received
- update to 6044df5adf
- objects that are expired or in wrong stream are not re-requested
anymore, even if they aren't stored in the inventory
- the previous option "acceptmismatch" now only affects whether such
objects are stored in the inventory
2017-06-03 16:29:21 +02:00
Scott f78f1a718b
Change api.py 2017-06-02 18:53:13 -06:00
Peter Šurda 6044df5adf
Optional storing of expired and off-stream objects
- a new config file option, network/acceptmismatch, allows the inventory
to store objects that expired or are from a stream we're not
interested in. Having this on will prevent re-requesting objects that
other nodes incorrectly advertise. It defaults to false
2017-06-02 15:43:35 +02:00
Peter Šurda d75d920a68
Asyncore updates
- clean object tracking dictionaries in the cleaner thread
- clean up close / handle_close
- add locking to tracking dictionaries
2017-06-02 07:09:35 +02:00
Peter Šurda 4c17a18006
Don't send invs to unestablished connections 2017-05-31 23:34:06 +02:00
Peter Šurda 18988ae2e6
Asyncore updates
- performance optimisation, reduce number of loops when waiting
for protocol headers / commands
2017-05-31 10:17:36 +02:00
Peter Šurda 2555f692eb
Network status update part 2
- only update processed items every 2 seconds
2017-05-31 10:16:30 +02:00
Peter Šurda e522f015a8
Network status updates
- only update processed numbers once every 2 seconds
- moved inventory lookups to the main inventory so now all
storage modules work with it
2017-05-31 10:15:47 +02:00
Peter Šurda d9e3349eeb
Fix own IP detection
- minor bug in the previous commit
2017-05-31 00:22:07 +02:00
Peter Šurda f23c169eec
Don't connect to myself
- track local IP+port of incoming connections and don't connect
to them in the future
2017-05-31 00:04:21 +02:00
Peter Šurda fa9811f426
Asyncore update
- duplicate checking implemented
- connection pool vs. socket closing cleanup
2017-05-30 23:53:43 +02:00
Peter Šurda abaa2c72e5
typo 2017-05-29 15:04:22 +02:00
Peter Šurda 11d02b1e41
typo 2017-05-29 14:59:42 +02:00
Peter Šurda 3a543efd83
Typo 2017-05-29 14:54:13 +02:00
Peter Šurda 7f381c0c25
Asyncore update
- incoming object handling fix
2017-05-29 14:52:31 +02:00
Peter Šurda 1ccfd41c3f
Asyncore updates
- fix connected to myself check
2017-05-29 14:41:02 +02:00
Peter Šurda 0aa5dbd958
Asyncore update
- shutdown fix
2017-05-29 14:35:08 +02:00
Peter Šurda bdaa939e2c
ENOTSOCK fix 2017-05-29 13:39:26 +02:00
Peter Šurda 97c44b97f4
Asyncore update
- handle WSAENOTSOCK
2017-05-29 13:14:25 +02:00
Peter Šurda a5c1b0c529
Asyncore fixes
- better handling of WSA* checks on non-windows systems
- handle EBADF on Windows/select
- better timeouts / loop lengths in main asyncore loop and
spawning new connections
- remove InvThread prints
2017-05-29 12:56:59 +02:00
Peter Šurda 74f1a74a8c
Make SO_REUSEPORT optional
- apparently not available on Windows
2017-05-29 11:30:56 +02:00
Peter Šurda e7525d47be
Disable memory usage logging
- it looks like it's Unix specific and doesn't work on windows
2017-05-29 11:26:56 +02:00
Peter Šurda 02a07e5119
Asyncore update
- default to true (original attempt didn't work correctly)
2017-05-29 03:16:14 +02:00
Peter Šurda 73c41bff9d
typo
-BMConfigParser. instead of BMConfigParser().
2017-05-29 02:30:18 +02:00
Peter Šurda 65bb6648e7
Asyncore updates
- fix crash in inv thread
- more prints changed into logger
- minor fixes
2017-05-29 00:47:41 +02:00
Peter Šurda c85d52b8e8
Asyncore updates
- asyncore is now on by default
- inv announcements implemented
- bandwidth limit implemented / fixed
- stats on download / upload speed now work
- make prints into logger
- limit knownNodes to 20k as it was before
- green light fixed
- other minor fixes
2017-05-29 00:24:07 +02:00
Peter Šurda 5d4e1e2007
asyncore fixes
- bm headers and commands are only read up to expected length.
On a very fast connection (e.g. local VM), reading verack
also read a part of the TLS handshake
- some debugging info moved from print to logger.debug
- tls handshake cleanup
2017-05-27 22:30:30 +02:00
Peter Šurda 21f6d38ec2
Asyncore fixes
- TCP fixes
2017-05-27 21:52:56 +02:00
Peter Šurda 99e714c432
UDP socket bugfixes 2017-05-27 20:43:27 +02:00
Peter Šurda fa9ad537a5
Add task_done to asyncore-related queues 2017-05-27 19:39:19 +02:00
Peter Šurda f8b4b427fc
Asyncore update
- bugfixes
- UDP socket for local peer discovery
- new function assembleAddr to unify creating address command
- open port checker functionality (inactive)
- sendBigInv is done in a thread separate from the network IO
thread
2017-05-27 19:09:21 +02:00
Peter Šurda 36b5e2c04f
Inventory storage abstraction
- can have multiple storage types for inventory
- sqlite is the old one, filesystem is a new available
2017-05-27 19:03:27 +02:00
Peter Šurda 1d87c63504
Traceback on Ctrl-C
- Ctrl-C will print a traceback of all threads instead of
complaining
2017-05-27 19:02:05 +02:00
Peter Šurda 7b9b7504ad
Don't clean right on startup 2017-05-27 19:01:14 +02:00
Peter Šurda d699a28e49
Add variables to errno and socket
- to make sure they work cross platform without having to do
complicated tests
2017-05-27 19:00:19 +02:00
Peter Šurda b37a05fd0a
Allow encoding 3 in broadcast API 2017-05-27 07:48:29 +02:00
Peter Šurda e309a1edb3
Asyncore update
- separate queue for processing blocking stuff on reception
- rewrote write buffer as a queue
- some addr handling
- number of half open connections correct
2017-05-25 23:04:33 +02:00
Peter Šurda 51e52401fe
Windows plaform check pythonic
- moved to .startswith instead of 'in'
- thanks @Lvl4sword
2017-05-25 15:00:10 +02:00
Peter Šurda 9683c879bc
Asyncore update
- Network status UI works but current speed isn't implemented yet
- Track per connection and global transferred bytes
- Add locking to write queue so that other threads can put stuff
there
- send ping on timeout (instead of closing the connection)
- implement open port checker (untested, never triggered yet)
- error handling on IO
2017-05-25 14:59:18 +02:00
Peter Šurda edcba9982b
Asyncore getdata processing performance improvement
- no need to query DB for existence of each entry
2017-05-24 21:35:50 +02:00
Peter Šurda fa56ab3e6f
Asyncore update
- better error handling
- bug fixes
- remove some debug output
2017-05-24 21:15:36 +02:00
Peter Šurda bafdd6a93a
Allow making outbound connections in asyncore 2017-05-24 16:54:33 +02:00
Peter Šurda d635e515b9
Big Asyncore update
- most of the stuff is done so it partially works
- disabled pollers other than select (debugging necessary)
- can switch in the settings, section network, option asyncore (defaults
to False)
2017-05-24 16:51:49 +02:00
Peter Šurda d498f1c0ae
Configparser update
- add default values for maxdownload/uploadrate, asyncore
- rework error handler slightly
2017-05-24 16:49:16 +02:00
Peter Šurda 198470f734
Revert parser/renderer max message size
- it's now dealt with during decoding
2017-05-15 12:25:30 +02:00
Peter Šurda 183f509f09
Decompression limit
- there is now a configurable decompression limit, default at
1MB. Oversize messages are trated as if they never arrived,
just a log entry
2017-05-15 12:23:16 +02:00
Peter Šurda 9f4a1fa0a4
Config file defaults and address unification
- bmconfigpaser.py now allows to put default values for a specific
option in the file
- addresses as sections are now detected by "BM-" rather than
just ignoring bitmessagesettings. There can now be other sections
with a cleaner config file
2017-05-15 12:18:07 +02:00
Peter Šurda 660997f8e7
Quick hack for excessively long messages
- only process the first MB of a message for GUI purposes
(parsing/rendering)
2017-05-14 15:40:35 +02:00
Peter Šurda fd2603247d
Fix onionbindip for some systems with IPv6
- in some cases when IPv6 stack is available and onionbindip is an IPv4
  address, socket.bind doesn't change the bound address, ending up
  listening on everything
2017-05-10 20:01:23 +02:00
Peter Šurda d9d3515905
Node class, WIP
- for new network subsystem
2017-05-07 20:16:49 +02:00
Peter Šurda 23b9555929
Add TLS version debug info 2017-05-07 20:15:57 +02:00
Peter Šurda 1c55bf7d4b
Add umsgpack as fallback
- if a "big" msgpack module isn't available, use bundled umsgpack
2017-05-07 20:15:16 +02:00
Peter Šurda bf76c7f6ec
Allow extended encoding in API 2017-04-30 10:39:48 +02:00
Peter Šurda 96d58f3c11
Asyncore update (WIP) 2017-04-16 18:27:15 +02:00
Dmitri Bogomolov e6f0b34f9b
Fixed some inconvenience on first run mainly in Ubuntu.
- immediately return from initCL() if numpy or pyopencl is unevailable
   (no ImportError because of resetPoW() call)
 - use glob to find C extension even if it named like
   `bitmsghash.x86_64-linux-gnu.so`

If user chooses to show the Settings dialog:

 - activate the "Network Settings" tab
 - remove option 'dontconnect' if settings have been saved
2017-04-05 14:25:02 +03:00
Peter Šurda 51aeb284ca
Async network IO updates
- WIP
2017-04-04 10:46:01 +02:00
Peter Šurda fe93473fc5
getpubkey length handling
- don't try to process getpubkey that is too long
2017-04-04 10:44:53 +02:00
Peter Šurda c1bdcc2aba
ACKdata handling changes
- any type of object can now serve as ACKdata
2017-04-04 10:43:29 +02:00
Peter Šurda 46c9ea9403
Async network updates (WIP)
- cleaner command handling
- separating into header and command handling
- incoming connection handler
- bugfixes and more debug information
2017-03-20 18:32:26 +01:00
Peter Šurda 913b401dd0
PendingDownloadQueue updates
- track pending hashId more accurately
- add timeout and a cleanup so that the download queues don't
get stuck and memory is freed
- randomise download order (only works for inv commands with
more than 1 entry)
2017-03-20 01:22:37 +01:00
Peter Šurda 1af49a0165
Download tracking refactoring
- replace PendingDownload singleton dict with a Queue
- total memory and CPU requirements should be reduced
- get rid of somObjectsOfWhichThisRemoteNodeIsAlearedyAware. It has very
little practicle effect and only uses memory
2017-03-19 22:08:00 +01:00
Peter Šurda 0529fe2313
Known node count updates
- if too many nodes, only delete oldest nodes in bootstrap provider
  mode, in normal mode ignore new nodes as it used to before
- in bootstrap provider mode, penalise nodes announced by others by 1
  day instead of 3 hours
2017-03-11 12:14:40 +01:00
Peter Šurda 49869d0b56
Networking subsystem updates
- version command struct for faster unpacking
- increase read buffer to 2MB to allow a full command to fit
- initial bitmessage protocol class (WIP)
- error handling
- remove duplicate method
2017-03-11 11:12:08 +01:00
Peter Šurda a1d1114cb2
New network subsystem updates
- auto-select select/poll/epoll/kqueue depending on what's available
2017-03-10 23:56:38 +01:00
Peter Šurda 998935be5f
New network subsystem, WIP
- finished proxy design
- socks4a and socks5 implemented
- authentication not tested
- resolver for both socks4a and socks5
- http client example using the proxy
2017-03-10 23:11:57 +01:00
Peter Šurda 3ac67e5da7
Connection error reporting changes
- fewer tracebacks
- more standardised reports including errno
2017-03-09 11:26:44 +01:00
PyBitmessage Translations 4014b80b7c
Auto-updated language ja from transifex 2017-03-08 17:25:19 +01:00
PyBitmessage Translations b28fe3a220
Auto-updated language fr from transifex 2017-03-07 18:38:10 +01:00
PyBitmessage Translations 964809bbd6
Auto-updated language ru from transifex 2017-03-07 10:23:54 +01:00
PyBitmessage Translations 5d545dbcab
Auto-updated language sk from transifex 2017-03-06 22:16:29 +01:00
PyBitmessage Translations 5c2af00306
Auto-updated language de from transifex 2017-03-06 22:06:42 +01:00
PyBitmessage Translations f4caf5f6a4 Auto-updated language fr from transifex 2017-03-06 21:58:59 +01:00
PyBitmessage Translations fd871fca85 Auto-updated language ru from transifex 2017-03-06 21:56:38 +01:00
PyBitmessage Translations 76ae62c1f0 Auto-updated language ja from transifex 2017-03-06 21:55:52 +01:00
PyBitmessage Translations fe6f446d07 Auto-updated language pl from transifex 2017-03-06 21:44:06 +01:00
PyBitmessage Translations bbf2264862
Auto-updated language eo from transifex 2017-03-06 20:54:39 +01:00
Dmitri Bogomolov ee7e630694
Show a dialog with QR-code for selected bm-address 2017-03-06 18:00:23 +02:00
Dmitri Bogomolov 9836206402
Missed translations: namecoin and welcom message 2017-03-05 23:07:18 +02:00
Peter Šurda bea675f9a6
Remove unnecessary "print" from previous commit 2017-03-02 15:09:01 +01:00
Peter Šurda 53657dba47
Phase 1 of SHA256 support
- new variable "digestalg" which defaults to "sha1", but allows "sha256"
  for those who want to sign using this
- Addresses #953
2017-03-02 15:03:08 +01:00
Peter Šurda 405a06c08a
Indentation 2017-03-02 15:02:51 +01:00
PyBitmessage Translations ab39541ef5
Auto-updated language ru from transifex 2017-03-01 17:06:12 +01:00
Peter Šurda b304872b68
Version bump for 0.6.2 2017-03-01 13:12:31 +01:00
Peter Šurda 15077c9388
More accurate PendingUpload tracking
- works correctly when starting offline
- stops tracking after after 60 seconds but only if at least 1
  successful upload
2017-03-01 10:05:08 +01:00
Peter Šurda 9263f53d86
OpenCL PoW fix
- previous commit created some problems, now it should work
2017-02-28 23:52:27 +01:00
Peter Šurda 8d829b587e
Reset OpenCL when settings change
- previously, changing the OpenCL vendor (or turning it on/off) required
  a restart and this wasn't clear
2017-02-28 22:59:44 +01:00
Peter Šurda 171bc83ec0
HTML parser fix
- URLs followed with space were broken
2017-02-28 22:47:56 +01:00
Peter Šurda eaafb9efa5
Listening port shouldn't be grey 2017-02-28 22:04:34 +01:00
PyBitmessage Translations 2906bff6b4 Auto-updated language de from transifex 2017-02-28 19:25:41 +01:00
PyBitmessage Translations e33c6023b3
Auto-updated language sk from transifex 2017-02-28 19:21:29 +01:00
PyBitmessage Translations a90f35fe6d Auto-updated language pl from transifex 2017-02-28 19:13:31 +01:00
PyBitmessage Translations 97f803ccde
Auto-updated language eo from transifex 2017-02-28 19:12:14 +01:00
PyBitmessage Translations e55407ff4b
Auto-updated language ja from transifex 2017-02-28 19:08:45 +01:00
Dmitri Bogomolov 34084bbc80
Total setup.py cleanup and simple script installation 2017-02-28 15:51:49 +02:00
Peter Šurda e7506b2ac0
Fix tracking of already attempted connections
- it didn't delete the entries correctly, resulting in outgoing syn
  sender deadlocking
2017-02-28 09:43:09 +01:00
Peter Šurda f5b430b567
Excessive random seeding
- outgoing thread was calling a seed reinit before each peer selection.
  This is not necessary, just init when the thread starts
2017-02-28 09:40:28 +01:00
Peter Šurda 42246f83ef
Reset connection list on UPnP
- reset the already attempted connection list after UPnP port mapping is
  established. This allows to resubmit externally reachable port
2017-02-28 01:15:49 +01:00
Peter Šurda 59e1739136
Revert duplicate IP treatment for bootstrap
- bootstrap provider mode shouldn't accept multiple connections from a
  single IP after all, it creates problems
2017-02-28 00:20:34 +01:00
Peter Šurda d0b0d15dc3
Fix potential deadlock
- alreadyAttemptedConnectionsListLock probably deadlocked
- removed locking where unnecessary and rewrote the important part with
  proper locking
2017-02-28 00:12:49 +01:00
Peter Šurda af8957ed72
Typo in the second most recent commit 2017-02-27 23:37:15 +01:00
Peter Šurda d9d2deee25
Typo in last commit 2017-02-27 23:35:48 +01:00
Peter Šurda 339e375958
Bootstrap provider mode and minor knownNodes changes
- if knownNodes grows to 20000, instead of ignoring new nodes, forget
  the 1000 oldest ones
- drop connection after sendaddr if too many connections, even if it's
  an outbound one
- if maximum total connections are lower than maximum outbound
  connections, active bootstrap provider mode
- in this mode, check all addresses received before announcing them
- so basically it only annouces those addresses it successfully
  connected to
2017-02-27 23:31:12 +01:00
Peter Šurda 5d068ec84a
Unnecessary locking
- there was a sleep inside a lock
2017-02-27 23:30:31 +01:00
Peter Šurda 741ac5ca05
UPnP recommendation notification fixes
- notify also if no connections and no change
2017-02-27 16:18:22 +01:00
Peter Šurda ff786725ed
Typo
- UPnP / connectivity recommendation was active when on proxy rather
  than without
2017-02-27 16:12:19 +01:00
Peter Šurda e15d9e3e03
Save UPnP externa port after creating mapping 2017-02-27 15:55:59 +01:00
Peter Šurda cd0972c0f3
Recommend enabling UPnP on network problems
- it looks like there aren't enough listening nodes
- if connection is dropped, notify non-proxy users about the UPnP option
2017-02-27 15:30:19 +01:00
Peter Šurda 124b321b8c
Less verbose error handling
- if socket sending results in EHOSTUNREACH or ETIMEDOUT, don't show
  backtrace
2017-02-27 15:27:46 +01:00
Peter Šurda 484d4abb3c
Frozen mode message type static
- I can't get the dynamic loading to work on OSX in frozen mode
- I think that if someone wants to build a frozen executable with custom
  messagetypes modules, he can edit the file
- so now it lists the existing types manually (for frozen mode only)
2017-02-26 20:50:06 +01:00
Peter Šurda 511b89ebbe
PoW Worker should wait for sql thread to init
- I think this was causing freezing queue on launch if not empty
- I can't reproduce the bug anymore
2017-02-26 20:44:56 +01:00
Peter Šurda d8301ff512
Less verbose connection error reporting
- don't print tracebacks on normal (timeout/reset) errors
2017-02-26 20:29:07 +01:00
Peter Šurda cff1af1b4f
Subscription wrong tab
- when subscribing from addressbook, it switched to blacklist tab
  instead of subscriptions
2017-02-26 20:03:47 +01:00
Peter Šurda 88658b074e
Socks proxy hostname resolving error handling
- if resolving fails, it wasn't handled
2017-02-26 20:03:14 +01:00
Peter Šurda 7ebe837eb0
Make some network parameters configurable
- maxtotalconnections = maximum number of total full connections
  (incoming + outgoing) the node will allow. Default 200 as it was.
- maxbootstrapconnections = number of additional (to total) connection
  that will act in bootstrap mode, closing after sending the list of
  addresses. Default 20 as it was.
- maxaddrperstreamsend = initial address list maximum size, per
  participating stream. Default 500. Child streams get half. The
  response is chunked into pieces of max. 1000 addresses as that's the
  protocol limit.
2017-02-26 17:46:02 +01:00
Peter Šurda 0fa0599cd4
IPv4 listen socket fix
- on OpenBSD, you can't have a socket that supports both IPv4 and IPv6.
  This allows handling for this error, and then it will try IPv4 only,
  just like for other similar errors.
2017-02-26 12:55:43 +01:00
Peter Šurda 191650f5a4
Typos
- previous commit contained typos
2017-02-26 12:52:28 +01:00
Peter Šurda b1b0c46555
Improve exception handling
- there were reports of errors in FreeBSD (I could only reproduce some)
  and Gentoo without IPv4 support (I don't have a VM for testing ready)
- adds an exception handler for double task_done in case sender thread
  has to close prematurely (I saw this triggered on FreeBSD 11)
- listening socket opening error handler was broken (triggered if you
  can't open a socket with both IPv4 and IPv6 support)
- error handler for socket.accept. Reported on FreeBSD 10.3
- fixes #854
2017-02-26 12:42:18 +01:00
Peter Šurda 74c85b4a9e
Retransmit timing changes
- makes it behave more like in the description
- partial for #847
2017-02-25 23:40:37 +01:00
Peter Šurda 7ef91bd607
Changed Makefile to use CXX instead of g++
- is more standardised
- closes #882
2017-02-25 22:33:31 +01:00
Justin Ramos b50198afb5
changes needed to get current code to run 2017-02-25 00:06:04 -06:00
PyBitmessage Translations 93c881172e
Auto-updated language ja from transifex 2017-02-23 15:11:17 +01:00
PyBitmessage Translations 30952f91cf
Auto-updated language ru from transifex 2017-02-22 17:11:30 +01:00
Peter Šurda a6dbb1e37e
Less timestamp penalty for inbound connections
- was over 2 days, but PyBM will only spread those with more recent than
  3 hours. So it's now set to 2 hours
2017-02-22 16:18:08 +01:00
Peter Šurda d7076626c2
TTL label is in red and warning when too low
- TTL to chans shouldn't be too low so the UI gives a feedback
- warning when sending wouldn either require a lot of refactoring or
  wouldn't have good usability
2017-02-22 16:07:39 +01:00
Peter Šurda e9899743ef
Typos, formatting, obsolete imports 2017-02-22 15:09:36 +01:00
PyBitmessage Translations 71ca2a761b
Auto-updated language pl from transifex 2017-02-22 12:53:17 +01:00
PyBitmessage Translations fa1fc2a031
Auto-updated language eo from transifex 2017-02-22 12:36:09 +01:00
Peter Šurda af1bed9034
MessageView Unicode HTML fix
- the HTML on/off click label should be unicode rather than str
2017-02-22 12:30:14 +01:00
Peter Šurda 57a3c35299
Context menu on messages to deleted accounts
- messages from deleted chans still stay in global inbox
- this crated problems with account detection
- created NoAccount class for such accounts
2017-02-22 12:15:52 +01:00
PyBitmessage Translations 72ed3e340f
Auto-updated language sk from transifex 2017-02-22 11:29:18 +01:00
PyBitmessage Translations bda5b02118
Auto-updated language de from transifex 2017-02-22 11:27:17 +01:00
PyBitmessage Translations 56384a353a
Auto-updated language ja from transifex 2017-02-22 11:18:16 +01:00
Peter Šurda 6062277d60
Rename configparser.py to bmconfigparser.py
- it was causing problems with py2app because the source of python's own
  CongigParser is also configparser.py
2017-02-22 09:34:54 +01:00
Peter Šurda 266d8eba1f
SafeHTMLParser unicode / subprocess
- don't do subprocess in SafeHTMLParser, it doesn't work in frozen mode
  and an attempt to fix it would take too much refactoring and I'm not
  even sure it would work
- instead, make it handle broken unicode correctly
- I think the previous reports of freezes were caused by trying to
  interpret data as unicode, causing a crash
- it does about 1MB/s on my machine, so a timeout is not a big problem
2017-02-22 09:05:05 +01:00
Justin Ramos fd95f8f519
allowing for max outbound connection configuration
Signed-off-by: Justin Ramos <justin.ramos@gmail.com>
2017-02-21 16:28:54 -06:00