PyBitmessage-2021-04-27/src/network
Peter Surda 0c9cb4824d
Memory leak (kind of) fix
- objectsKnownToThem is supposed to track if it's necessary to send inv
  commands to a peer
- it is supposed to enter garbage collection after 1 hour
  (ObjectTracker.trackingExpires)
- due to peer not announcing all objects, or announcing them before we
  announce, this contains excessive number of entries after connection
  is fully established.
- profiling revealed that this creates unnecessary memory to be kept
  allocated
- this patch will prevent tracking of entries sent during bigInv,
  reducing the memory "leak"
- it is possible, in theory, that this does have some negative effect,
  like increased bandwidth or neglecting to announce some invs. It
  probably doesn't though as my review of objectsKnownToThem occurrences
  didn't reveal any such case, and since the dict didn't track fully
  accurately anyway (so it would have already been broken if it was a
  problem), I consider it an acceptable risk at the moment. If it indeed
  causes problems, they can be solved separately
- I tested this on one of the bootstrap servers with little memory, and
  it increased the number of connections than can be handled by a factor
  of about 3.5
2018-04-01 11:39:02 +02:00
..
__init__.py changes needed to get current code to run 2017-02-25 00:06:04 -06:00
addrthread.py Minor multiqueue updates 2017-10-19 08:56:48 +02:00
advanceddispatcher.py Separate protocol processing exceptions 2018-02-19 21:27:38 +01:00
announcethread.py Peer discovery updates 2017-08-09 17:34:47 +02:00
asyncore_pollchoose.py replace all random.xxx with helper random function 2018-03-21 19:26:27 +05:30
bmobject.py Dandelion update 2018-02-03 11:46:39 +01:00
bmproto.py replace all random.xxx with helper random function 2018-03-21 19:26:27 +05:30
connectionchooser.py replace all random.xxx with helper random function 2018-03-21 19:26:27 +05:30
connectionpool.py replace all random.xxx with helper random function 2018-03-21 19:26:27 +05:30
dandelion.py Bugfixes 2018-02-09 00:49:08 +01:00
downloadthread.py replace all random.xxx with helper random function 2018-03-21 19:26:27 +05:30
http-old.py New network subsystem, WIP 2017-03-10 23:11:57 +01:00
http.py Asyncore update (WIP) 2017-04-16 18:27:15 +02:00
httpd.py New network backend (WIP, not integrated) 2016-12-01 16:48:04 +01:00
https.py Fixes and refactoring 2017-01-11 17:00:00 +01:00
invthread.py Dandelion update 2018-02-03 11:46:39 +01:00
networkthread.py Network thread shutdown iterator fix 2018-01-31 21:09:36 +01:00
node.py Big Asyncore update 2017-05-24 16:51:49 +02:00
objectracker.py Fix circular import 2018-03-13 11:42:43 +01:00
proxy.py Add proxy authentication 2018-02-18 20:53:16 +01:00
receivequeuethread.py Separate protocol processing exceptions 2018-02-19 21:27:38 +01:00
socks4a.py Socket closing changes 2017-10-19 09:08:05 +02:00
socks5.py Socks5 parsing fix 2018-02-26 20:04:57 +01:00
stats.py Pending download stats optimisations 2017-10-20 23:11:33 +02:00
tcp.py Memory leak (kind of) fix 2018-04-01 11:39:02 +02:00
tls.py Asyncore update 2017-07-08 06:54:25 +02:00
udp.py CPU hogging fix 2018-01-22 22:18:01 +01:00