Commit Graph

134 Commits

Author SHA1 Message Date
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
1792289e00
close handling fix
- don't close a connection twice
2017-11-14 23:43:05 +01: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
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
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
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
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
4c9006a632
Asyncore performance optimisation
- use bytearray instead of strings for buffers
2017-10-16 08:07:32 +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
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
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
1881bcea68
Don't connect on first start until approved 2017-09-21 18:18:42 +02:00
660997b8f4
Code Quality 2017-08-22 13:49:27 +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
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
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
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