]> git.mxchange.org Git - quix0rs-apt-p2p.git/blob - TODO
Refresh expired DHT hashes concurrently instead of sequentially.
[quix0rs-apt-p2p.git] / TODO
1 Some last few things to do before release.
2
3 - Handle/investigate the HTTP client pipeline errors
4 - remove files from the peer's download cache
5 - update the modtime of files downloaded from peers
6   - also set the Last-Modified header for the return to Apt
7
8 Consider what happens when multiple requests for a file are received.
9
10 When another request comes in for a file already being downloaded,
11 the new request should wait for the old one to finish. This should
12 also be done for multiple requests for peer downloads of files with
13 the same hash.
14
15
16 Packages.diff files need to be considered.
17
18 The Packages.diff/Index files contain hashes of Packages.diff/rred.gz 
19 files, which themselves contain diffs to the Packages files previously 
20 downloaded. Apt will request these files for the testing/unstable 
21 distributions. They need to be dealt with properly by 
22 adding them to the tracking done by the AptPackages module.
23
24
25 Improve the downloaded and uploaded data measurements.
26
27 There are 2 places that this data is measured: for statistics, and for
28 limiting the upload bandwidth. They both have deficiencies as they
29 sometimes miss the headers or the requests sent out. The upload
30 bandwidth calculation only considers the stream in the upload and not
31 the headers sent, and it also doesn't consider the upload bandwidth
32 from requesting downloads from peers (though that may be a good thing).
33 The statistics calculations for downloads include the headers of
34 downloaded files, but not the requests received from peers for upload
35 files. The statistics for uploaded data only includes the files sent
36 and not the headers, and also misses the requests for downloads sent to
37 other peers.
38
39
40 Rehash changed files instead of removing them.
41
42 When the modification time of a file changes but the size does not,
43 the file could be rehased to verify it is the same instead of
44 automatically removing it. The DB would have to be modified to return
45 deferred's for a lot of its functions.
46
47
48 Consider storing deltas of packages.
49
50 Instead of downloading full package files when a previous version of
51 the same package is available, peers could request a delta of the
52 package to the previous version. This would only be done if the delta
53 is significantly (>50%) smaller than the full package, and is not too
54 large (absolutely). A peer that has a new package and an old one would
55 add a list of deltas for the package to the value stored in the DHT.
56 The delta information would specify the old version (by hash), the
57 size of the delta, and the hash of the delta. A peer that has the same
58 old package could then download the delta from the peer by requesting
59 the hash of the delta. Alternatively, very small deltas could be
60 stored directly in the DHT.
61
62
63 Consider tracking security issues with packages.
64
65 Since sharing information with others about what packages you have
66 downloaded (and probably installed) is a possible security
67 vulnerability, it would be advantageous to not share that information
68 for packages that have known security vulnerabilities. This would
69 require some way of obtaining a list of which packages (and versions)
70 are vulnerable, which is not currently available.
71
72
73 Consider adding peer characteristics to the DHT.
74
75 Bad peers could be indicated in the DHT by adding a new value that is
76 the NOT of their ID (so they are guaranteed not to store it) indicating
77 information about the peer. This could be bad votes on the peer, as
78 otherwise a peer could add good info about itself.
79
80
81 Consider adding pieces to the DHT instead of files.
82
83 Instead of adding file hashes to the DHT, only piece hashes could be
84 added. This would allow a peer to upload to other peers while it is
85 still downloading the rest of the file. It is not clear that this is
86 needed, since peer's will not be uploading and downloading ery much of
87 the time.