Commit Graph

345 Commits (956f689eeb45a62b7a9bd97481538f8a2ddcd07a)

Author SHA1 Message Date
surbhi 4770790597
Added kivy for making it run on Desktop and Mobile Clients 5 years ago
Dmitri Bogomolov 46f5ead960
Import email related stuff only if configured 6 years ago
Dmitri Bogomolov 953ea4e950
Slightly rewritten bitmessagemain to use depends properly 6 years ago
Dmitri Bogomolov f87ce4ad50
Moved reading knownnodes.dat into knownnodes module 6 years ago
Dmitri Bogomolov 4cf73675c2
flake8: bitmessagemain, class_singleCleaner, helper_generic, shutdown
and singleinstance
6 years ago
f97ada87 54651c7598
fix logic bug in enableGUI implementation 6 years ago
f97ada87 cb59b8abbd
component control switches 6 years ago
Dmitri Bogomolov 43a471a79b
Used state.testmode to indicate when operating in test mode 6 years ago
Dmitri Bogomolov 58c3dfb3d4
Testing mode for bitmessagemain 6 years ago
Peter Šurda fd1a6c1fa1
Dandelion update
- dandelion fixes
- try to wait as long as possible before expiration if there are no
outbound connections
- expire in invThread rather than singleCleaner thread
- deduplication of code in inv and dinv command methods
- turn on by default, seems to work correctly now
- turn off dandelion if outbound connections are disabled
- start tracking downloads earlier, and faster download loop
- remove some obsolete lines
- minor PEP8 updates
6 years ago
Dmitri Bogomolov 61ddc1208e
No more shared.daemon variable 6 years ago
Peter Šurda d9a4263083
Daemonising fixes
- change forking exit order as systemd expects (wait until child is
ready, then exit parent, then grandparent)
- fix signal handler if prctl not installed
- revert recent PID file changes
6 years ago
Peter Šurda 3cb9547389
Only write PID after last fork
- should fix systemd integration
6 years ago
Peter Šurda 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)
6 years ago
f97ada87 08748fa9ae
move config read inside main function 6 years ago
Peter Šurda 6ce86b1d0a
Dandelion++ implementation
- untested, some functionality may be missing, don't turn on
- also, it randomises upload of requested objects
- affects #1049
6 years ago
f97ada87 c89d86a779
use getopt parser for command-line arguments 6 years ago
Peter Šurda aaa5e9d309
Windows daemon mode workaround 6 years ago
Peter Šurda 0150a35dd4
Change main thread name to PyBitmessage 6 years ago
Peter Šurda 660997b8f4
Code Quality 6 years ago
Peter Šurda b886f935d4
Daemon Windows fix
- closing the filehandle isn't the correct approach, it causes more
bugs. Use os.devnull instead
6 years ago
Peter Šurda 314af0925f
Daemonize fix for Windows
- /dev/null isn't available on Windows so just close the console
sockets directly
6 years ago
Peter Šurda 58b47bc6de
Forking fixes 6 years ago
Peter Šurda 6c695c8ac7
Remove non-asyncore network code (partial) 6 years ago
Peter Šurda cc955cd69d
Try new ports of binding fails
- API and BM protocol will try random ports for binding if those
configured are occupied
6 years ago
Peter Šurda 7a4551e1e7
Fix signal handler in daemon mode
- signal handler requires the main thread to run
6 years ago
Peter Šurda 501f07dd34
Setsid is not available on Windows
- wrap an error handler around it
6 years ago
Peter Šurda 20cbac9752
Fix daemonize for Windows
Fixes #1034
6 years ago
Peter Šurda bdf61489ae
Allow multiple ReceiveQueue threads
- defaults to 3
6 years ago
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)
6 years ago
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
7 years ago
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
7 years ago
Peter Šurda 2685fe29b1
Code quality improvements 7 years ago
Peter Šurda 618f3865c1
Main thread end
- instead of sleeping, it just ends
7 years ago
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
7 years ago
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
7 years ago
Peter Šurda 02a07e5119
Asyncore update
- default to true (original attempt didn't work correctly)
7 years ago
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
7 years ago
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
7 years ago
Peter Šurda d699a28e49
Add variables to errno and socket
- to make sure they work cross platform without having to do
complicated tests
7 years ago
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
7 years ago
Peter Šurda 51e52401fe
Windows plaform check pythonic
- moved to .startswith instead of 'in'
- thanks @Lvl4sword
7 years ago
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)
7 years ago
Dmitri Bogomolov 34084bbc80
Total setup.py cleanup and simple script installation 7 years ago
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
7 years ago
Peter Šurda e664746f04
More knownNodes init
- also init children if they are missing
7 years ago
Peter Šurda 35a712d11d
KnownNodes missing init
- init knownnodes when connecting to a stream
7 years ago
Peter Šurda 157881bc63
Cyclic import fix
- networkDefaultProofOfWorkNonceTrialsPerByte and
  networkDefaultPayloadLengthExtraBytes cyclic import fix
- PyBitmessage should launch now when there's no keys.dat
7 years ago
Peter Šurda 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
7 years ago
Peter Šurda 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
7 years ago