Commit Graph

1889 Commits

Author SHA1 Message Date
02a07e5119
Asyncore update
- default to true (original attempt didn't work correctly)
2017-05-29 03:16:14 +02:00
73c41bff9d
typo
-BMConfigParser. instead of BMConfigParser().
2017-05-29 02:30:18 +02:00
65bb6648e7
Asyncore updates
- fix crash in inv thread
- more prints changed into logger
- minor fixes
2017-05-29 00:47:41 +02:00
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
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
21f6d38ec2
Asyncore fixes
- TCP fixes
2017-05-27 21:52:56 +02:00
99e714c432
UDP socket bugfixes 2017-05-27 20:43:27 +02:00
fa9ad537a5
Add task_done to asyncore-related queues 2017-05-27 19:39:19 +02:00
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
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
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
7b9b7504ad
Don't clean right on startup 2017-05-27 19:01:14 +02:00
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
b37a05fd0a
Allow encoding 3 in broadcast API 2017-05-27 07:48:29 +02:00
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
51e52401fe
Windows plaform check pythonic
- moved to .startswith instead of 'in'
- thanks @Lvl4sword
2017-05-25 15:00:10 +02:00
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
edcba9982b
Asyncore getdata processing performance improvement
- no need to query DB for existence of each entry
2017-05-24 21:35:50 +02:00
fa56ab3e6f
Asyncore update
- better error handling
- bug fixes
- remove some debug output
2017-05-24 21:15:36 +02:00
bafdd6a93a
Allow making outbound connections in asyncore 2017-05-24 16:54:33 +02:00
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
d498f1c0ae
Configparser update
- add default values for maxdownload/uploadrate, asyncore
- rework error handler slightly
2017-05-24 16:49:16 +02:00
198470f734
Revert parser/renderer max message size
- it's now dealt with during decoding
2017-05-15 12:25:30 +02:00
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
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
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
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
d9d3515905
Node class, WIP
- for new network subsystem
2017-05-07 20:16:49 +02:00
23b9555929
Add TLS version debug info 2017-05-07 20:15:57 +02:00
1c55bf7d4b
Add umsgpack as fallback
- if a "big" msgpack module isn't available, use bundled umsgpack
2017-05-07 20:15:16 +02:00
bf76c7f6ec
Allow extended encoding in API 2017-04-30 10:39:48 +02:00
96d58f3c11
Asyncore update (WIP) 2017-04-16 18:27:15 +02:00
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
51aeb284ca
Async network IO updates
- WIP
2017-04-04 10:46:01 +02:00
fe93473fc5
getpubkey length handling
- don't try to process getpubkey that is too long
2017-04-04 10:44:53 +02:00
c1bdcc2aba
ACKdata handling changes
- any type of object can now serve as ACKdata
2017-04-04 10:43:29 +02:00
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
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
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
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
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
a1d1114cb2
New network subsystem updates
- auto-select select/poll/epoll/kqueue depending on what's available
2017-03-10 23:56:38 +01:00
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
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
ee7e630694
Show a dialog with QR-code for selected bm-address 2017-03-06 18:00:23 +02:00
9836206402
Missed translations: namecoin and welcom message 2017-03-05 23:07:18 +02:00
bea675f9a6
Remove unnecessary "print" from previous commit 2017-03-02 15:09:01 +01:00
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
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
b304872b68
Version bump for 0.6.2 2017-03-01 13:12:31 +01:00
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
9263f53d86
OpenCL PoW fix
- previous commit created some problems, now it should work
2017-02-28 23:52:27 +01:00
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
171bc83ec0
HTML parser fix
- URLs followed with space were broken
2017-02-28 22:47:56 +01:00
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
34084bbc80
Total setup.py cleanup and simple script installation 2017-02-28 15:51:49 +02:00
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
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
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
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
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
af8957ed72
Typo in the second most recent commit 2017-02-27 23:37:15 +01:00
d9d2deee25
Typo in last commit 2017-02-27 23:35:48 +01:00
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
5d068ec84a
Unnecessary locking
- there was a sleep inside a lock
2017-02-27 23:30:31 +01:00
741ac5ca05
UPnP recommendation notification fixes
- notify also if no connections and no change
2017-02-27 16:18:22 +01:00
ff786725ed
Typo
- UPnP / connectivity recommendation was active when on proxy rather
  than without
2017-02-27 16:12:19 +01:00
e15d9e3e03
Save UPnP externa port after creating mapping 2017-02-27 15:55:59 +01:00
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
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
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
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
d8301ff512
Less verbose connection error reporting
- don't print tracebacks on normal (timeout/reset) errors
2017-02-26 20:29:07 +01:00
cff1af1b4f
Subscription wrong tab
- when subscribing from addressbook, it switched to blacklist tab
  instead of subscriptions
2017-02-26 20:03:47 +01:00
88658b074e
Socks proxy hostname resolving error handling
- if resolving fails, it wasn't handled
2017-02-26 20:03:14 +01:00
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
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
191650f5a4
Typos
- previous commit contained typos
2017-02-26 12:52:28 +01:00
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
74c85b4a9e
Retransmit timing changes
- makes it behave more like in the description
- partial for #847
2017-02-25 23:40:37 +01:00
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
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
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
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
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
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
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
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
c8429365e3
Typo
- typo in last commit
2017-02-21 10:25:59 +01:00
fef6126a74
Error handling improvement in sendDataThread
- don't uncecessarily report EPIPE as a big error, just close the
  connection
2017-02-21 09:58:28 +01:00
ea9f10a8bb
Simplify and fix list of addresses to send
- it didn't always send the maximum possible amount
- it probably was slow
2017-02-20 22:32:49 +01:00
579ba49f38
Deamon mode without PyQt4
- daemon mode shouldn't require PyQt4
2017-02-20 20:53:50 +01:00
9c4366ffa6
Don't report direct network errors as proxy errors
- last commit reported network errors that happened when proxy was off
  as network errors
2017-02-20 12:34:55 +01:00
ea448c4496
SOCKS error handler winsock compatibility
- now it can detect WSA errors as well, allowing more accurate error
  feedback
2017-02-20 12:15:51 +01:00
46a2c361de
Building and msgpack fixes
- Makefile typo
- pyinstaller rewritten and fixed including and initialisation of
  messagetypes
- msgpack decoding new message display fix
2017-02-19 19:48:45 +01:00
67c8966a21
Windows compatibility fixes
- spec file for pyinstaller detects architecture (32 or 64bit)
- spec file uses os.path.join
- spec file creates and adds the list of messagetypes
- added MinGW/MSyS support in Makefile
- separate Makefile.msvc for MCVC
- bitmsghash.cpp minor adjustments to build also on MSVC/MinGW
- if frozen mode, messagetypes loads the list of files from a text file
  generated during archive building rather than from a directory
2017-02-19 14:48:53 +01:00
a95f4aa255
LibreSSL compatibility
- code distinguishes between OpenSSL 1.1.x and LibreSSL and works with
  both
2017-02-18 17:22:17 +01:00
75f715bfe4
BSD compatibility
- separate Makefile for BSD make
- auto-compile will detect BSD and pass the correct parameters to make
- C PoW builds on OpenBSD and detects number of cores
2017-02-18 17:20:09 +01:00
6c907e2046
Windows socket typo 2017-02-17 21:14:39 +01:00
f499a3b1d8
Typo 2017-02-14 13:57:20 +01:00
f94b2d2d4b
Windows compatibility fixes
- there is no errno.WSAEAGAIN, only errno.WSAEWOULDBLOCK
2017-02-14 01:38:58 +01:00
a4b1a781ce
Minor UI fixes
- "new" folder consistently appears in chans and "All accounts"
- "Sent" message list sorting fix
- When editing a label, keys.dat is saved and the lineEdit completer
  is updated
- addressbook is updated when adding/deleting a new chan
2017-02-14 01:35:32 +01:00
965f3548ac
Depends checking updates
- checks for msgpack
- can distinguish OS and make a recommendation with respect to the
  relevant package manager
2017-02-14 01:33:16 +01:00
d8ae44f9ee
Obsolete imports, missing exception type 2017-02-09 21:04:07 +01:00
c778b81427
knownNodes refactoring and shutdown fixes
- saveKnownNodes replaced the repeated pickle.dump
- with knownNodesLock instead of acquire/release
- outgoingSynSender had an unnecessary loop during shutdown causing
  excessive CPU usage / GUI freezing
2017-02-09 11:53:33 +01:00
e664746f04
More knownNodes init
- also init children if they are missing
2017-02-08 20:52:18 +01:00
b0539f5cb4
SSL handshake fewer errors
- don't unnecessarily raise exceptions if SSL handshake fails
2017-02-08 20:49:14 +01:00
35a712d11d
KnownNodes missing init
- init knownnodes when connecting to a stream
2017-02-08 20:48:22 +01:00
157881bc63
Cyclic import fix
- networkDefaultProofOfWorkNonceTrialsPerByte and
  networkDefaultPayloadLengthExtraBytes cyclic import fix
- PyBitmessage should launch now when there's no keys.dat
2017-02-08 20:37:42 +01:00
2cc4435cfc
Imports, typos, syntax errors
- remove obsolete imports
- add missing imports
- fix typos
- fix syntax errors
- thanks to landscape.io for report
2017-02-08 14:19:02 +01:00
59f3a2fbe7
Reduce cyclic dependencies
- rearranged code to reduce cyclic dependencies
- doCleanShutdown is separated in shutdown.py
- shared queues are separated in queues.py
- some default values were moved to defaults.py
- knownnodes partially moved to knownnodes.py
2017-02-08 13:41:56 +01:00
7da36eccbd
Signal sender threads to close on shutdown
- when shutdown is running, add a shutdown command to the queues of all
  sender threads
2017-02-07 20:47:28 +01:00
a381f75b4b
Git head information in version
- About dialog now shows the git head
- git head check has been improved to point to the head rather than the
  previous commit
2017-02-07 20:46:30 +01:00
2c72b337c1
Typos and formatting 2017-02-07 20:09:11 +01:00
07722fb606
Node negotiation error handling
- complete the version and SSL handshake first, and only then feed
  errors into the stream and close connection
- this allows more accurate error handling on both sides
- also the timeOffset error trigger is now more accurate, but requires
  more nodes to upgrade
2017-02-07 19:38:52 +01:00
8515f9a9fc
Set SSL socket to blocking
- otherwise the error handling gets too complicated
2017-02-07 16:42:02 +01:00
6b65dfeeec
MarkAllUnread sqlite argument limit
- shouldn't crash anymore if there are too many messages to mark read
2017-02-07 16:38:02 +01:00
413419c858
Timeout handling and ping
- timeouts after the connection is established will trigger a ping
- previously they were handled as unrecoverable errors
2017-02-07 16:06:24 +01:00
15c620dcc2
SSL socket blocking error handling 2017-02-07 13:00:24 +01:00
ddc0ca5ede
Retry for certain non-blocking operations
- sometimes on read, EWOULDBLOCK is returned. It should retry. A timeout
  is handled separately
2017-02-06 19:41:25 +01:00
61770ba89a
Typo 2017-02-06 19:34:38 +01:00
f6bdad18a3
Improved stream handling
- version command sends list of all participating streams
- biginv sends lists of hosts for all streams the peer wants (plus
  immediate children)
- objects will spread to all peers that advertise the associated stream
- please note these are just network subsystem adjustments, streams
  aren't actually usable yet
2017-02-06 17:47:05 +01:00
79b566a907
Fix bitflags in version packet 2017-02-06 17:39:42 +01:00
e434825bb2
Pending download counter fix
- handles expired objects better
- counts objects that failed download more accurately
2017-02-06 11:02:03 +01:00
23fcf2cdec
SSL handshake python version compatibility
- error handling should now work with < 2.7.9
2017-02-03 10:05:35 +01:00
c979481564
Unhandled missing peer 2017-02-03 09:43:47 +01:00
ba130e03e5
Network subsystem freezing fixes
- queues were too short
- some error handling was missing
- remove nonblocking repeats in receive data thread
- singleCleaner shouldn't wait unnecessarily
2017-02-02 15:52:32 +01:00
4f70eaa01f
Fix curses mode 2017-02-02 15:48:56 +01:00
f3849eeb48
Unused imports, problematic variable names 2017-01-19 20:04:45 +01:00
01a9124b7d
Less verbose SSL handshake reporting
- if SSL handshake fails, we don't need to stack trace because we know
  where it's happening. Only report the error string.
2017-01-19 19:52:54 +01:00
5828021903
Fix false error about wrong stream
- sendinv and sendaddress are sometimes being sent to connections that
  haven't been established yet, resulting in complaints about stream
  mismatch. The error should only be displayed once the connection has
  been established and the remote node provides its stream number
2017-01-19 19:50:40 +01:00
5ae1327edc
Download/upload shutdown fixes
- Missing renamed to PendingDownload
- PendingDownload now only retries 3 times rather than 6 to dowload an
  object
- Added PendingUpload, replacing invQueueSize
- PendingUpload has both the "len" method (number of objects not
  uploaded) as well as "progress" method, which is a float from 0
  (nothing done) to 1 (all uploaded) which considers not only objects
  but also how many nodes they are uploaded to
- PendingUpload tracks when the object is successfully uploaded to the
  remote node instead of just adding an arbitrary time after they have
  been send the corresponding "inv"
- Network status tab's "Objects to be synced" shows the sum of
  PendingUpload and PendingDownload sizes
2017-01-19 19:48:12 +01:00
5708a38be0
Fix sending messages crashing 2017-01-17 01:07:39 +01:00
9197c425d2
Object requesting fix 2017-01-17 00:32:05 +01:00
9ed59dd825
Shutdown procedure cleanup 2017-01-16 23:38:18 +01:00
ca8550a206
Don't send requests for 0 objects 2017-01-16 23:37:25 +01:00
749bb628c0
Typo 2017-01-16 23:37:03 +01:00
4f920fe641
Fix infinite loop 2017-01-16 23:17:56 +01:00
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
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
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
8dfa0faca9
More objects to be downloaded fixes 2017-01-15 23:10:44 +01:00
12205ee7ba
More fixes in objects to be downloaded 2017-01-15 23:07:11 +01:00
bd1aead46e
More fixes for objects to be downloaded 2017-01-15 22:41:12 +01:00
d04c0e78e4
Better handling of pending downloading objects 2017-01-15 22:36:12 +01:00
b750e67bfb
Handle exception in iterator 2017-01-15 22:25:09 +01:00
805f72e098
Make objects to be send stoppable if not empty 2017-01-15 22:21:19 +01:00
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
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
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
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
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
c3fef7bc4e
Syntax fix 2017-01-15 12:41:19 +01:00
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
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
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
689d697a40
Refactor bandwidth limit and speed calculator
- also fixes potential deadlocks
2017-01-14 23:21:00 +01:00
ad75552b5c
Move shutdown from shared.py to state.py 2017-01-14 23:20:15 +01:00
bcc7692e14
Add safeGetInt to BMConfigParser 2017-01-14 23:18:06 +01:00
02a7c59de8
OpenSSL 1.1.0 compatibility fixes
- part 2, continued from previous commit
2017-01-14 17:50:49 +01:00
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
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
cc4c07025b
Sending thread fix 2017-01-14 12:35:08 +01:00
8d278182a7
Indentation 2017-01-13 15:53:47 +01:00
93bdc3c800
Remove extra print 2017-01-13 12:32:26 +01:00
d0b1cbfe1f
Add current git HEAD info to support request 2017-01-13 12:29:14 +01:00
5ae676f2ad
Minor support fix 2017-01-13 12:05:39 +01:00
6778d6046f
Add OpenSSL 1.1.0 compatibility
- thanks to Wolfgang Frisch <wfr@roembden.net>
2017-01-13 12:02:34 +01:00
59cf33c9a1
Remove obsolete import 2017-01-13 12:01:38 +01:00
65701e5997
neededPubkeys fix
- was still using shared.neededPubkeys
2017-01-13 09:30:23 +01:00
ff8deebf60
Keep track of network protocol status 2017-01-12 19:18:56 +01:00
810e50a040
Fix minor issues
- landscape.io complained
- obsolete imports
- ciphers -> self.ciphers
2017-01-12 07:26:04 +01:00
2cf2188bc3
Object sending fix
- forgot to move broadcastToSendDataQueues in class_singleWorker.py
2017-01-12 07:22:34 +01:00
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
e7470a4757
Remove leftover from debugging 2017-01-12 06:57:17 +01:00
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
c738d93056
Assorted fixes
- landscape.io was complaining, this fixes most easily fixable errors
2017-01-11 18:13:00 +01:00
cdcdf11d59
Missing import fix 2017-01-11 17:46:33 +01:00
fa0a3135e7
Fixes pointed out by landscape.io
- missing/wrong/obsolete imports
- logger formatting
2017-01-11 17:26:25 +01:00
ac348e4e6b
Fixes and refactoring
- fixes errors introduced in the earlier refactoring
- more variables moved to state.py
- path finding functions moved to paths.py
- remembers IPv6 network unreachable (in the future can be used to skip
  IPv6 for a while)
2017-01-11 17:00:00 +01:00
5d2bebae28
Add IPv4 multicast range to ignored addresses 2017-01-11 14:46:10 +01:00
8bcfe80ad0
Refactoring of config parser and shared.py
- got rid of shared config parser and made it into a singleton
- refactored safeConfigGetBoolean as a method of the config singleton
- refactored safeConfigGet as a method of the config singleton
- moved softwareVersion from shared.py into version.py
- moved some global variables from shared.py into state.py
- moved some protocol-specific functions from shared.py into protocol.py
2017-01-11 14:27:19 +01:00
085e335969
Proxy update (for the new network subsystem) 2017-01-10 21:22:22 +01:00
75090abaaf
Advanced dispatcher class
- generic class the new asyncore-based network subsystem that handles
  buffered data transfer
2017-01-10 21:20:49 +01:00
b4703ec6ce
Make objectHashHolder into a list
- was a dict
2017-01-10 21:19:57 +01:00
9c214b4a24
Inventory refactoring #2
- forgot to add api.py
2017-01-10 21:17:25 +01:00
e84b19613e
Inventory refactoring
- minor refactoring, made it into singleton instead of a shared global
  variable. This makes it a little bit cleaner and moves the class into
a separate file
- removed duplicate inventory locking
- renamed singleton.py to singleinstance.py (this is the code that
  ensures only one instance of PyBitmessage runs at the same time)
2017-01-10 21:15:35 +01:00
4f543e14c1
TLS handshake fix
- TLS handshake in python is apparently always asynchronous, so it needs
  proper handling of SSLWantReadError and SSLWantWriteError
- also adds a timeout and a proper shutdown if handshake fails
2017-01-07 23:42:07 +01:00
PyBitmessage Translations
541979a159
Auto-updated language fr from transifex 2017-01-05 19:24:45 +01:00
PyBitmessage Translations
9a26ce5be1
Auto-updated language ja from transifex 2016-12-16 10:18:29 +01:00
PyBitmessage Translations
e92161650b
Auto-updated language pl from transifex 2016-12-15 19:57:09 +01:00
PyBitmessage Translations
a87bfb8a82
Auto-updated language eo from transifex 2016-12-15 19:53:55 +01:00
PyBitmessage Translations
77d7dcbd2d
Auto-updated language sk from transifex 2016-12-15 16:33:21 +01:00
PyBitmessage Translations
3b896e69e7
Auto-updated language de from transifex 2016-12-15 16:26:50 +01:00
fefb959338
Notify if C PoW missing
- Linux users often don't know that the C PoW is available and complain
  it's slow. This will try to build it, and adds availability
  notification in the status bar
- also, the updateStatusBar signal now allows emphasised notifications,
  which will remain visible for a longer period of time and also
  reappear if a status change happened in the meantime
2016-12-15 16:11:29 +01:00
PyBitmessage Translations
9d9052dda2
Auto-updated language zh_cn from transifex 2016-12-13 17:52:23 +01:00
PyBitmessage Translations
49832231ca
Auto-updated language de from transifex 2016-12-13 17:39:49 +01:00
025950c05e
Fix locale init
- date/time wasn't localised correctly on startup
2016-12-13 11:54:01 +01:00
PyBitmessage Translations
dd777d6e43
Auto-updated language de from transifex 2016-12-12 00:44:09 +01:00
PyBitmessage Translations
d8b8e0e9dd
Auto-updated language fr from transifex 2016-12-10 20:12:30 +01:00
114563ed2f
Default logger output UTF-8
- fixes errors when using locales other than EN
2016-12-06 16:15:37 +01:00
0dde976dec
Fix timeformat in configparser
- allow both raw (new) and non-raw (old) style timeformat for backwards
  compatibility
2016-12-06 13:04:52 +01:00
df18f7b042
Switch configparser to raw mode 2016-12-06 11:01:17 +01:00
e647d70bbc
New config parser class
- workaround for % in labels
- can be extended in the future
2016-12-06 10:47:39 +01:00
PyBitmessage Translations
9f89191742
Auto-updated language ja from transifex 2016-12-05 12:09:41 +01:00
9509552663
New network backend (WIP, not integrated)
- current snapshot of the new network backend code
- not working yet, just base classes and no integration
2016-12-01 16:48:04 +01:00
7ca6576dfc
Connection indicator for hidden service
- the number of connections as well as connection indicator was broken
  when running as a hidden service. This is a workaround
2016-11-16 19:36:50 +01:00
5cea1e04d1
SSL disconnect fix
- sometimes SSL connections unnecessarily disconnected on non-fatal
  errors. This should fix that. This is however a short term solution
  because of migrating to asyncore which has its own error handling
2016-11-16 15:18:09 +01:00
PyBitmessage Translations
1d3757ddc8
Auto-updated language pl from transifex 2016-11-15 22:07:40 +01:00
PyBitmessage Translations
3bafd597af
Auto-updated language eo from transifex 2016-11-15 21:36:16 +01:00
3f3774ff1f
Translation source update
- add extended encoding translation sources
2016-11-15 17:11:36 +01:00
7cc0f8fab0
Add extended encoding message validation
- validates variables of the "message" type
2016-11-15 17:10:33 +01:00
e76b10a6ed
Logging fix 2016-11-15 17:10:14 +01:00
bae7351849
Formating and standalone fix
- when running as a standalone program, helper_msgcoding logger import
  was missing
2016-11-15 17:09:08 +01:00
c6d45dd394
Encoding when sending to self
- when sending to self, it always used encoding 2 when saving into the
  inbox. Now uses the one that's currently selected
2016-11-15 17:07:53 +01:00
fbc9886eda
OpenCL settings saving fix 2016-11-15 17:06:56 +01:00
612333a267
Enable support for extended encoding
- receiving extended encoding now works
- sending works from the GUI by pressing "Shift" while clicking on
  "Send"
- requires https://pypi.python.org/pypi/msgpack-python
2016-11-14 20:23:58 +01:00
966b4382d8
Add handler for unknown encoding 2016-11-14 20:22:10 +01:00
5a438ccddd
OpenCL initialisation fix 2016-11-14 20:21:46 +01:00
b9748c55aa
Don't connect to self fix
- the hidden service don't connect to yourself fix was broken, this
  fixes the fix
2016-11-14 20:20:41 +01:00
54e3465575
HTML parser queue flush fix
- the queue wasn't correctly flushed
2016-11-14 20:19:26 +01:00
d35062b49c
Half-open connection limit warning fix
- it only should complain if on Windows and can't determine the Windows
  version
2016-11-13 08:50:09 +01:00
2fc2c78299
Extended encoding update
- modified to support both encoding and decoding
- fixes
- added test for all encodings
2016-11-12 17:20:45 +01:00
4af788e963
Placeholder proxy text
- based on what tor you're probably using (9150 for OSX and Windows,
  9050 for others)
2016-11-12 15:41:58 +01:00
PyBitmessage Translations
a6ac128e9e
Auto-updated language eo from transifex 2016-11-10 21:56:09 +01:00
PyBitmessage Translations
7033527c41
Auto-updated language pl from transifex 2016-11-10 21:55:24 +01:00
PyBitmessage Translations
0a948d382a
Auto-updated language de from transifex 2016-11-10 21:54:24 +01:00
PyBitmessage Translations
87f607688f
Auto-updated language sk from transifex 2016-11-10 21:52:21 +01:00
e9a3ef465c
OpenCL vendor selector
- when you have multiple OpenCL drivers at the same time, e.g. intel and
  nvidia, they won't mix leading to crashes. This patch makes it
  possible to select which driver to use by listing the available
  vendors
2016-11-10 21:43:10 +01:00
756f85c9f0
Don't connect to yourself when hidden service 2016-11-08 08:49:43 +01:00
a7f3afe5a6
Typo 2016-11-05 00:46:07 +01:00
8ce72d8d2d
Extended encoding updates
- more flexible and developer friendly. Still not active code
2016-11-03 22:41:36 +01:00
020a78b776
Exception prevention in hashCount
- I got a report that an exception can occur, and while I can't
reproduce it, this should avoid it
2016-11-01 14:44:39 +01:00
PyBitmessage Translations
c94492f17e
Auto-updated language pl from transifex 2016-10-30 03:18:00 +01:00
PyBitmessage Translations
976b11a307
Auto-updated language sk from transifex 2016-10-30 03:15:25 +01:00
ecbb985cb3
Newchandialog translation definition
- the ui file wasn't included in the source list
2016-10-28 22:31:50 +02:00
3d4869851e
Many changes on chan create/join dialog
- refactored to use the .ui file
- input logic change, address is always optional
- interactive input validation
- runs asynchronously to the main window
- address generator thread can now validate chans in addition to just
adding them
2016-10-28 22:07:16 +02:00
5c9bfe09a2
Parser queue flushing
- the parser queue wasn't flushed when there's an exception resulting in
  the wrong message being displayed selected
2016-10-27 23:09:31 +02:00
PyBitmessage Translations
22eb4d62bf
Auto-updated language de from transifex 2016-10-26 22:32:18 +02:00
PyBitmessage Translations
419affa3b3
Auto-updated language sk from transifex 2016-10-26 22:21:58 +02:00
PyBitmessage Translations
5299d025a8
Auto-updated language de from transifex 2016-10-26 05:05:51 +02:00
PyBitmessage Translations
04f0b6335d
Auto-updated language sk from transifex 2016-10-26 04:56:43 +02:00
781ea8a8a6
Typo 2016-10-26 02:19:26 +02:00
30d9de008f
Label change fix
- when changing an addressbook label using UTF-8, the correspnding
  messagelist label was garbled
2016-10-25 07:54:52 +02:00
a3584bb141
"From" combobox empty fix
- if label of your address is empty, the "From" combo box showed an
  empty entry (just the identicon). Now it shows the address instead
- fixes #898
2016-10-25 02:51:09 +02:00
b0d1ed8304
Make clear that address error message refer to the recipient
- a user report indicated there is confusion about address error
messages. He/she thought it refers to the sender address, however it
refers to the recipient address. This makes it more clear
2016-10-24 22:33:13 +02:00
ad0d2c375a
Recipient address error message status bar unicode fix
- when reporting an error about recipient address in the status bar, it
didn't correctly handle unicode
2016-10-24 22:31:54 +02:00
2c972fbe41
"Fetch Namecoin ID" button font size fixed 2016-10-24 22:29:14 +02:00
671f321ead
HTML parser fix
- the UTF-8-ifying of tags had missing brackets
2016-10-23 18:35:20 +02:00
40090a9a12
Notify in UI if time offset wrong
- if your time is off by more than an hour, you won't be able to
  establish a connection to the network. This patch adds a UI
  notification so that the user can understand why he can't connect.
2016-10-23 10:12:49 +02:00
c335ef7d10
HTML parser fix
- sometimes, a tag attribute name is UTF-8, sometimes it isn't. This
  change makes it handle both
2016-10-23 09:02:27 +02:00
32f1e0447a
Multiprocessing PoW fixes and improvements
- the multiprocessing PoW should now work correctly
- it also should be interruptible correctly and the GUI will ask about
  it during exit
2016-10-22 05:00:35 +02:00
9dd09a44fc
Message list loading performance improvement
- by disabling UI updates (which are not necessary as it freezes
  anyway), the message list loading is faster
2016-10-22 01:47:29 +02:00
47e2df86b9
Freezing message parser fix #2
- this has been tested on Windows as well, and has been cleaned up.
  There is now a permanent parser thread, and it restarts when the
  parsing takes more than 1 second
- Fixes #900
2016-10-22 01:45:32 +02:00
8f194296e7
Long message parsing fix
- while 448ceaa74c fixed slow rendering on
  windows, there was still a bug where overly long messages caused
  freezeing of the hyperlink regexp parser, which appears to happen on
  all platforms. Maybe it's a freeze, maybe it just takes too long. This
  patch aborts the regexp parser after 1 second and simply displays the
  message without hyperlinks being clickable. This doesn't affect HTML
  mode because there the links are kept as they are
- Fixes #900
2016-10-21 15:54:02 +02:00
2067040ff1
MessageView localisation fix 2016-10-20 20:38:21 +02:00
448ceaa74c
Line wrap performance workaround
- some messages (e.g. some long messages on Windows, or binary data)
  cause an excessive amount of time in rendering the body. This
  change is base on a workaround I found at
  http://www.qtcentre.org/threads/8188-bug-setLineWrapMode
2016-10-20 20:26:53 +02:00
96212693b2
Message does not need plurals 2016-10-20 16:54:25 +02:00
3a1d581c9e
Multiple UI status updates
- most status messages are transient, so they are now only displayed for
  10 seconds
- when trying to quit while disconnected or not fully synced, a
  three-choice message box now appears: Yes for waiting, No for
  closing anyway, and Cancel for aborting the shutdown procedure
2016-10-20 16:06:46 +02:00
e1dd29bfd1
Copyright UTF8 character fix
- this copyright character has been plaguing pylupdate4 parser and
  multiple unsuccessful attempts have been made and then reverted.
  Replaced with a HTML entity, hopefully this will finally fix it.
2016-10-20 02:50:00 +02:00
4436c5f3d1
More proxy fixes
- proxy connection should be able to handle IPv6 correctly
- UI status bar notification typo fix
2016-10-20 02:49:07 +02:00
ab79ee2a04
Proxy error handling
- UI will now display notifications in the status bar if the connection
  to the proxy itself is broken. This should give better feedback to
  people who are unfamiliar with tor and misconfigured it
- The proxy error handling in the background was slightly improved as
  well
2016-10-20 01:49:40 +02:00
Marius Ghita
7aecb4aad1 Hide connection notifications configuration option
New option on the User Interface settings tab, to hide connection
notification messages.
2016-10-11 19:14:06 +02:00
9590f83820
Typo
- see
  e6ce73f4bd (commitcomment-19344095)
2016-10-08 10:01:34 +02:00
679e554c7d
Translation source update 2016-10-05 20:50:07 +02:00
1b03b535cf
Translation source fix 2016-10-05 20:49:32 +02:00
73ec6a9174
Translation source fix 2016-10-05 20:30:05 +02:00
739d46004c
Translation source fix 2016-10-05 20:29:42 +02:00
e6ce73f4bd
Multiple PoW updates
- fixes "fast python" (multiprocessing) PoW
- python PoW (both slow and fast) interruptible on *NIX
- signal handler should handle multiple processes and threads correctly
(only tested on Linux)
- popul window asking whether to interrupt PoW when quitting QT GUI
- PoW status in "sent" folder fixes and now also displays broadcast
status which didn't exist before
- Fixes #894
2016-10-05 20:06:47 +02:00
029b0525de
Fix invalid variables 2016-08-31 16:33:25 +08:00
cc90747da1
Improve namecoin init error handling
- partially addresses #896
2016-08-31 16:24:28 +08:00
59dba6a7c7
Namecoin error logging changes
- namecoin connection errors have now severity "info" instead of
  "error", because it just confuses peopel who don't have namecoin
  configured
- partially addresses #893
2016-08-29 12:13:08 +08:00
61a08299b8
Less confusing message when logger config missing
- if the logger config is missing, don't print unnecessary stack trace
- partially addresses #893
2016-08-29 11:56:21 +08:00
2616a9d4c1
Fix PyGI warnings
- Partially addresses #893
2016-08-27 21:47:40 +08:00
d1a90085b7
Version bump for 0.6.1 2016-08-21 11:56:25 +02:00