44dd08a228
Remove obsolete code in cleaner thread
2017-11-22 21:13:35 +01:00
6ca3460090
Put garbage collection into the cleaner thread
...
- this maybe addresses #1079
2017-11-22 14:49:18 +01:00
e558b1fb72
Error handling
...
- proxy connections didn't init fullyEstablished
2017-11-19 13:48:43 +01:00
fdfbb77ed2
Close filehandles on connection reaping
...
- I thought this is done automatically through garbage collection, but I
think as the channel is still assigned in the asyncore map, it needs
to be done manually. Basically filehandle limit exceeded and it
crashed
2017-11-19 00:05:55 +01:00
5e042b76e7
Typo
...
- missing brackets
2017-11-18 10:05:41 +01:00
3aa6f386db
Dandelion fixes
...
- dandelion would always think there is a cycle and trigger fluff
- cycle fluff trigger didn't correctly re-download and re-announce the
object. Now it remembers between (d)inv and object commands that it's
in a fluff trigger phase.
2017-11-18 09:47:17 +01:00
4690dd6f00
Copy object contents from buffers on instantiation
...
- this may fix some memory issues
2017-11-17 23:53:46 +01:00
3c3d69e5de
Reap closed connection fix
2017-11-17 19:50:39 +01:00
1e02d2b48a
Download optimisation
...
- pending download tracking now per-connection instead of globally
2017-11-17 19:49:51 +01:00
5a787f41d2
Socket closing changes
...
- explicit close only through asyncore error handler
- implicit close through garbage collector
- avoid duplicate closing
2017-11-17 13:37:51 +01:00
2da1115d17
Typo
...
Typo in 89567cecfa
2017-11-14 23:46:07 +01:00
1792289e00
close handling fix
...
- don't close a connection twice
2017-11-14 23:43:05 +01:00
d2f79d3172
sqlite storage fix
...
- typo on cleaning
2017-11-14 23:20:15 +01:00
89567cecfa
Notifier plugin fix
...
- NotifyOSD doesn't like too many notification objects in a queue, so
just create one on init and update its contents if there is a new
notification
2017-11-14 23:19:16 +01:00
PyBitmessage Translations
d6e94cf77f
Auto-updated language zh_cn from transifex
2017-11-02 12:42:50 +01:00
PyBitmessage Translations
8b7b91b23d
Auto-updated language de from transifex
2017-10-31 09:40:18 +01:00
e17d33cd75
Respect user selected sort order on "Network Status" tab
2017-10-24 14:02:15 +03:00
4b40d4bce1
Download thread error handling
2017-10-22 15:28:30 +02:00
75a6f605c1
Download optimisation
...
- more accurate tracking
- randomise download order
- longer cycle
2017-10-22 11:32:37 +02:00
b025624f2a
missingObjects fix
...
- didn't notice valid objects arriving (only invalid)
2017-10-20 23:21:25 +02:00
6655e99aa3
Pending download stats optimisations
...
- tracks separately a global list for a faster sum. Needs slightly
more memory
2017-10-20 23:11:33 +02:00
a746ba9da7
Stop downloading objects with insufficient PoW
...
- object with insufficient PoW weren't correctly detected and it
tried to download them over and over again
2017-10-20 13:21:39 +02:00
2d34e73648
Dandelion updates
...
- fixes and feedback from @gfanti and @amiller
- addresses #1049
- minor refactoring
- two global child stems with fixed mapping between parent and
child stem
- allow child stems which don't support dandelion
- only allow outbound connections to be stems
- adjust stems if opening/closing outbound connections (should
allow partial dandelion functionality when not enough outbound
connections are available instead of breaking)
2017-10-20 01:21:49 +02:00
15857e6551
Asyncore updates
...
- reduce buffer size to 128kB (was 2MB)
- IP address handling use str instead of buffer (the latter, even
though it should be faster, breaks the code on Windows)
- read up to full buffer after fully established (otherwise
downloads become too slow due to the loop time). This reverts
a change made in d28a7bfb86
2017-10-20 01:07:30 +02:00
8fcdf51e57
One more unicode related exception - when editing a contact label
2017-10-19 18:43:41 +03:00
9be36f2d78
Use unicode instead of str for MessagingMenu
2017-10-19 18:29:42 +03:00
PyBitmessage Translations
364642404a
Auto-updated language ja from transifex
2017-10-19 12:26:51 +02:00
ab458531e8
Changes in SOCKS and onion handling in connectionchooser
...
- onion addresses have a priority of 1 when SOCKS is on
- don't connect to private/loopback addresses when SOCKS is on
2017-10-19 09:16:29 +02:00
7b470d4b66
handle shutdown in receivequeuethread
...
- sometimes during shutdown, the receivequeuethread would get
stuck
2017-10-19 09:11:34 +02:00
391d40d78b
Socket closing changes
...
- closing reason moved to a variable
- actual closing now done in asyncore thread instead of
receivedata thread
2017-10-19 09:08:05 +02:00
01d46c30e4
Remove obsolete imports
2017-10-19 09:03:36 +02:00
d28a7bfb86
Asyncore performance optimisation
...
- don't transfer unnecessary amount of bytes from network buffers
- slice buffer more efficiently if it results in an empty buffer
2017-10-19 09:02:33 +02:00
7ec3fc7a5a
Prevent negative DownloadChunk in asyncore
2017-10-19 09:00:54 +02:00
f785558ca5
Don't close UDP socket on bad packet magic
2017-10-19 09:00:02 +02:00
a090eea9b0
Minor multiqueue updates
...
- add task_done to addrthread and invthread
- implement totalSize for multiqueue
- order in invThread changed
2017-10-19 08:56:48 +02:00
d44c6c6464
Forget known nodes with bad rating
2017-10-19 08:52:44 +02:00
453bcdbb1d
Typo in newchandialog
2017-10-19 08:39:30 +02:00
a013814c6b
Network tab updates
...
- handle add/remove entry instead of recreating the whole connection
list
- update processed object counts after each object
2017-10-19 08:39:09 +02:00
1ba1f02686
Remove superfluous validator signal connect in newchandialog
...
- apparently it connects automatically and just creates an error message
2017-10-19 08:31:05 +02:00
7e0932815d
UDP socket closing fix
...
- invalid data or an incomplete read on UDP socket caused
it to close
2017-10-19 01:46:32 +02:00
9cffd50de8
Fixed statusbar message on error in namecoin name search
2017-10-17 11:37:50 +03:00
59d1309a9e
Fixed typo when closing tempfile in bitmessageqt.__init__
2017-10-17 11:25:33 +03:00
8e76169388
Check IP before adding to knownnodes in helper_bootstrap
2017-10-17 01:33:30 +03:00
9dae77dd2b
Quiet Mode (i.e. turn off notification) in tray menu
2017-10-16 19:30:12 +03:00
4c9006a632
Asyncore performance optimisation
...
- use bytearray instead of strings for buffers
2017-10-16 08:07:32 +02:00
PyBitmessage Translations
1eb0dd6f01
Auto-updated language fr from transifex
2017-10-15 13:45:31 +02:00
a49b3b5f84
Asyncore UDP fix
...
- when there was an error writing to a udp socket, it wasn't
handled correctly
2017-10-06 18:26:06 +02:00
333170b172
Dandelion fixes
...
- more exception handling
- only use outbound connections for stems
(thanks to @amillter for info)
- don't create stems if config disabled
- addresses #1049
2017-10-06 16:33:44 +02:00
1abdc14807
Fix statusbar chan creation message:
...
non-ASCII characters displayed incorrectly
2017-10-03 18:01:54 +03:00
6548999a49
Dandelion fix
...
- thanks to g1itch for reporting
- addresses #1049
2017-10-02 08:02:29 +02:00
b1442ecb0a
Dandelion fixes and updates
...
- also, randomise the item order in an inv/dinv command
2017-09-30 13:42:04 +02:00
f97ada87
be0e724b23
implement stealth ack objects
2017-09-30 19:45:40 +10:00
f97ada87
08748fa9ae
move config read inside main function
2017-09-27 00:36:43 +10:00
f97ada87
dbd12ab8b4
fix truncation of received ackdata in objectProcessor
2017-09-25 20:14:03 +10:00
PyBitmessage Translations
1798c90622
Auto-updated language ja from transifex
2017-09-25 11:10:16 +02:00
9923d288e0
Dandelion fixes
...
- in route selector, some connections may not have the services
attribute (yet)
- Addresses #1049
2017-09-25 09:17:15 +02:00
d574b167d8
Dandelion updates & fixes
...
- Addresses #1049
- Add dandelion routes for locally generated objects
- Minor bugfixes
- Send dinv commands on stem objects (instead of always sending inv
command)
2017-09-25 08:49:21 +02:00
6ce86b1d0a
Dandelion++ implementation
...
- untested, some functionality may be missing, don't turn on
- also, it randomises upload of requested objects
- affects #1049
2017-09-25 01:17:04 +02:00
PyBitmessage Translations
8495836428
Auto-updated language ru from transifex
2017-09-24 11:49:32 +02:00
f97ada87
c89d86a779
use getopt parser for command-line arguments
2017-09-24 07:42:37 +10:00
aaa5e9d309
Windows daemon mode workaround
2017-09-23 18:25:41 +02:00
f97ada87
cfa84cf81a
change default log output from stdout to stderr
2017-09-24 01:50:49 +10:00
PyBitmessage Translations
a8ab574c3e
Auto-updated language pl from transifex
2017-09-21 21:06:53 +02:00
PyBitmessage Translations
680cc2cafc
Auto-updated language de from transifex
2017-09-21 19:16:40 +02:00
PyBitmessage Translations
df21f53271
Auto-updated language eo from transifex
2017-09-21 19:08:10 +02:00
1881bcea68
Don't connect on first start until approved
2017-09-21 18:18:42 +02:00
0150a35dd4
Change main thread name to PyBitmessage
2017-09-21 17:51:34 +02:00
4f75dcb9be
Merge pull request '1047' into v0.6
...
- notifications moved into plugins
- improvements in setup.py
- remove obsolete imports
2017-09-21 13:30:53 +02:00
2504bc6670
Fixed fetch of connected hosts number in bitmessageqt.support
2017-09-21 13:59:43 +03:00
53c3eeb8f7
Sound plugins using pycanberra and gst-python
2017-09-20 10:21:27 +03:00
1f47a4060e
Added "Set notification sound..." context menu on addressbook entry.
2017-09-20 10:21:27 +03:00
b77eb0c7e5
Namespace 'bitmessage' for plugins entry points
2017-09-20 10:21:27 +03:00
c8a47b988f
Moved "Ubuntu" MessagingMenu code into indicator_libmessaging plugin
2017-09-20 10:21:27 +03:00
cd81718871
Moved sound category constants to the separate module sound
...
for importing from the sound theme plugins.
2017-09-20 10:21:27 +03:00
289a6c5bfa
Added support for sound notification plugins which use
...
the desktop sound theme, with pycanberra for example. Plugin name should
start with 'theme' in that case, whereas the name of plugins playing the
sound file starts with 'file'.
2017-09-20 10:21:27 +03:00
84a903f116
Redirected output of the player programs to /dev/null
2017-09-20 10:21:27 +03:00
91eb75b140
gst-play-1.0 is another player program which bundled with gstreamer 1.0
2017-09-20 10:21:27 +03:00
be716bf228
Improved and documented plugin module
2017-09-20 10:21:27 +03:00
ef8f40ccc4
Moved notifications to plugins (including sound)
2017-09-20 10:21:27 +03:00
PyBitmessage Translations
022e0ce593
Auto-updated language ja from transifex
2017-08-26 04:35:44 +02:00
PyBitmessage Translations
a8e5ea18a6
Auto-updated language eo from transifex
2017-08-24 21:30:54 +02:00
7e35ea6bdf
Email gateway autoregistration fixes
...
- don't treat "@" in label as an email address
- ask for confirmation before autoregistering. It confused some
newbies into thinking that bitmessage requires payment
2017-08-24 14:16:37 +02:00
660997b8f4
Code Quality
2017-08-22 13:49:27 +02:00
18119339f8
Add shutdown to CLI
2017-08-22 13:23:03 +02:00
b7f808cde1
Add shutdown command to API
...
- calling "shutdown" now cleanly shuts down PyBitmessage, however the
call may not return so you need to add an error handler to the call.
With python for example, wrap the "shutdown()" in
"try:/except socket.error"
2017-08-21 10:39:03 +02:00
b886f935d4
Daemon Windows fix
...
- closing the filehandle isn't the correct approach, it causes more
bugs. Use os.devnull instead
2017-08-20 12:05:53 +02:00
314af0925f
Daemonize fix for Windows
...
- /dev/null isn't available on Windows so just close the console
sockets directly
2017-08-20 11:55:54 +02:00
2da4d00730
Support message C PoW fix
2017-08-15 18:14:36 +02:00
8b3d7ea278
C PoW init fix
2017-08-15 14:09:19 +02:00
623553393b
PID file truncate fix
...
- on unix it truncated the file if a second instance was being
launched
2017-08-15 12:25:38 +02:00
a48dff3bee
PoW init reordering
...
- inited by the worker thread on its own init, instead of when the
imports are being evaluated
- also got rid of windows-style newlines in OpenCL PoW
2017-08-15 12:24:43 +02:00
58b47bc6de
Forking fixes
2017-08-15 12:22:24 +02:00
PyBitmessage Translations
3c50615998
Auto-updated language zh_cn from transifex
2017-08-13 16:54:52 +02:00
PyBitmessage Translations
4d0a40fd2a
Auto-updated language sk from transifex
2017-08-11 09:46:06 +02:00
PyBitmessage Translations
85e4e5438c
Auto-updated language de from transifex
2017-08-11 09:38:00 +02:00
e7231f3aea
Fix multiple TCP bind address handling
2017-08-09 23:30:22 +02:00
6c695c8ac7
Remove non-asyncore network code (partial)
2017-08-09 17:36:52 +02:00
0b07b1c89a
Peer discovery updates
...
- allow loopback addresses, now you can bind different loopback IP
addresses on a single system and they will auto-cross-connect
- always listen for discovery on 0.0.0.0
- [network] - bind now also applies for the TCP socket as well as UDP
socket
- closing socket iterator fix
2017-08-09 17:34:47 +02:00
e071efac1a
Typo
2017-08-09 17:29:48 +02:00
cc955cd69d
Try new ports of binding fails
...
- API and BM protocol will try random ports for binding if those
configured are occupied
2017-08-09 17:29:23 +02:00
0324958e92
Peer discovery fixes
...
- incoming packets weren't correctly processed
2017-08-06 23:05:54 +02:00
d9e4f2ceb8
Typo in previous commit
2017-08-06 21:38:23 +02:00
f338c00f8e
Change peer discovery tracking from queue to a dict
...
- with a queue, a situation could occur when new entries are appended
but nothing is polling the queue
2017-08-06 21:29:54 +02:00
4564d37f5b
Typo in previous commits
2017-08-06 21:26:25 +02:00
38872159fb
Typo in previous commit
2017-08-06 20:40:35 +02:00
5895dc2f1f
Asyncore Windows error handling
...
- windows behaves somewhat differently when using select
2017-08-06 20:39:14 +02:00
578c5dd495
Fix windows PID file
2017-08-06 18:29:08 +02:00
5108d08ac9
Windows asyncore error handler fix
...
- WSAEWOULDBLOCK is now checked on connect and accept
2017-08-06 18:18:21 +02:00
8f14fb05a1
UDP socket setsockopt fix
2017-08-05 10:14:15 +02:00
7a4551e1e7
Fix signal handler in daemon mode
...
- signal handler requires the main thread to run
2017-07-30 09:36:20 +02:00
3e6de7a9ad
Flush PID file on unix as well
2017-07-28 19:21:56 +02:00
e7382b7714
Write PID into the lock file
2017-07-28 09:39:49 +02:00
501f07dd34
Setsid is not available on Windows
...
- wrap an error handler around it
2017-07-28 09:19:53 +02:00
20cbac9752
Fix daemonize for Windows
...
Fixes #1034
2017-07-28 08:54:34 +02:00
a29f7534ee
Add EINTR handler for select and poll pollers
2017-07-21 09:06:02 +02:00
2530c62050
epoll throws IOError rather than select.error
2017-07-21 07:49:34 +02:00
aa059d6f2f
Handle TLS errors in receivequeuethread
...
- well at least EBADF, it seems to happen sometimes
2017-07-21 07:47:18 +02:00
4f19c37fdc
Parser fix for multi-level arrays
2017-07-11 10:29:29 +02:00
dcc181bf75
Asyncore processing thread synchronisation
...
- threre was a synchronisation problem where one thread could process
more data than another thread was expecting, leading to the thread
crashing
2017-07-10 23:18:58 +02:00
f6d5d93bf2
Multiple receive queues fix
...
- forgot to commit busy handler
2017-07-10 20:52:11 +02:00
db2d78c9b6
Make protocol decoder less recursive
...
- apparently, recursion has bad performance in Python, so the decoder is
now flat, except when parsing "version" command
2017-07-10 07:15:27 +02:00
853c8561ec
Per connection node id part 2
...
- forgot to include this in the previous commit
2017-07-10 07:12:52 +02:00
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
bdf61489ae
Allow multiple ReceiveQueue threads
...
- defaults to 3
2017-07-10 07:08:10 +02:00
f088e0ae21
Change thread names
...
- not needed to have "Thread" in the name of a thread
2017-07-10 07:05:50 +02:00
4fce01e34a
Less data transferred in invThread and addrThread
2017-07-08 18:02:47 +02:00
2df9598774
Asyncore update: Fix incoming connections
...
- dereferencing wasn't done correctly for incoming connections
2017-07-08 07:33:29 +02:00
2d7d9c2f92
Asyncore update
...
- request downloads in bigger chunks
- don't put whole objects into the receiveDataQueue
2017-07-08 06:54:25 +02:00
0f3a69adf4
Asyncore update: remove references to deleted files
2017-07-08 06:53:20 +02:00
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
a98b8690d3
Asyncore fixes
...
- fix broken loops
- optimise I/O tests
2017-07-07 07:55:29 +02:00
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
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
a2b8867c1a
Tooltips for network status columns
2017-07-06 19:36:04 +02:00
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
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
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
846fced0a2
Remove obsolete inactive code
2017-07-05 09:19:56 +02:00
d086781ce8
AddrQueue fix
...
- forgot to commit import
2017-07-05 09:19:18 +02:00
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
9d09f9f3ce
Reduce severity of socks connectivity errors
...
- Fixes #1024
- Fixes #1019
2017-07-05 09:07:00 +02:00
773d91bbe2
Unknown object log entry less severe
...
- unnecessarily classified as critical
- fixes #1023
2017-07-05 09:01:40 +02:00
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
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
cc3cf77759
New class multiqueue
...
- to be used for invthread and addthread
- updated invthread for multiqueue
2017-06-27 13:25:12 +02:00
f5a143d0b8
Config validator
...
- config options can have validators
- limit maxoutboundconnections to max 8
2017-06-27 13:19:12 +02:00
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
aa203b23ee
Fix typo introduced by code quality patch
2017-06-24 23:09:08 +02:00
189578cba3
Asyncore proxy fixes
...
- SOCKS5 now seems to work, SOCKS4a untested
2017-06-24 12:23:56 +02:00
916b85c862
Connection pool cleanup
...
- minor code quality improvement
2017-06-24 12:23:16 +02:00
0dc0b22974
Expired / Stream mismatch / duplicate object error handling
...
- cleanup of the code
2017-06-24 12:22:41 +02:00
0a79490e2c
Known nodes maximum configurable part 2
2017-06-24 12:21:42 +02:00
d57b0c55ee
Object validator trigger moved
...
- from bmproto to bmobject
2017-06-24 12:21:06 +02:00
dc5a91f326
Remove stack depth warnings
...
- I was never able to trigger them
2017-06-24 12:19:19 +02:00
e9edf70d3a
TLS updates
...
- save TLS version
- minor TLS error handling updates
2017-06-24 12:18:15 +02:00
b9d60f8b41
Max known nodes configurable
2017-06-24 12:17:01 +02:00
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
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
2685fe29b1
Code quality improvements
2017-06-24 12:13:35 +02:00
243025a1aa
Leave __delitem__ unimplemented in filesystem storage
...
- rename the cleaning method
2017-06-21 12:17:40 +02:00
618f3865c1
Main thread end
...
- instead of sleeping, it just ends
2017-06-21 12:16:56 +02:00
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
76fed78211
Made it possible to use installed umsgpack
2017-06-12 13:54:44 +03:00
a3a55e53c4
UDP Socket dict address fix
...
- fixes #1008
2017-06-11 14:11:39 +02:00
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
7deb7c3d4f
Typo
2017-06-10 10:11:50 +02:00
8d41d5fcf6
default known nodes update
2017-06-10 10:11:21 +02:00
7f06cb7c27
Inventory flush fix in GUI
...
- Fixes #1011
2017-06-10 10:10:59 +02:00
7e8ee51322
Fallback umsgpack import fix
2017-06-10 10:09:44 +02:00
f366447e94
Fix identicon imports
2017-06-10 10:09:14 +02:00
d34fdbb3f4
Fix network status in api
2017-06-10 10:08:40 +02:00
ae97f7abd8
Typo
2017-06-10 10:07:47 +02:00
009a215224
Fix api connected hosts lists
2017-06-09 10:07:51 +02:00
7bde4e9445
Missing module name in bmproto
2017-06-04 10:25:16 +02:00
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
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
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
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
4c17a18006
Don't send invs to unestablished connections
2017-05-31 23:34:06 +02:00
18988ae2e6
Asyncore updates
...
- performance optimisation, reduce number of loops when waiting
for protocol headers / commands
2017-05-31 10:17:36 +02:00
2555f692eb
Network status update part 2
...
- only update processed items every 2 seconds
2017-05-31 10:16:30 +02:00
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
d9e3349eeb
Fix own IP detection
...
- minor bug in the previous commit
2017-05-31 00:22:07 +02:00
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
fa9811f426
Asyncore update
...
- duplicate checking implemented
- connection pool vs. socket closing cleanup
2017-05-30 23:53:43 +02:00
abaa2c72e5
typo
2017-05-29 15:04:22 +02:00
11d02b1e41
typo
2017-05-29 14:59:42 +02:00
3a543efd83
Typo
2017-05-29 14:54:13 +02:00
7f381c0c25
Asyncore update
...
- incoming object handling fix
2017-05-29 14:52:31 +02:00
1ccfd41c3f
Asyncore updates
...
- fix connected to myself check
2017-05-29 14:41:02 +02:00
0aa5dbd958
Asyncore update
...
- shutdown fix
2017-05-29 14:35:08 +02:00
bdaa939e2c
ENOTSOCK fix
2017-05-29 13:39:26 +02:00
97c44b97f4
Asyncore update
...
- handle WSAENOTSOCK
2017-05-29 13:14:25 +02:00
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
74f1a74a8c
Make SO_REUSEPORT optional
...
- apparently not available on Windows
2017-05-29 11:30:56 +02:00
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
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