Retransmit DHT requests before timeout occurs is complete.
[quix0rs-apt-p2p.git] / TODO
1 Add all cache files to the database.
2
3 All files in the cache should be added to the database, so that they can
4 be checked to make sure nothing has happened to them. The database would
5 then need a flag to indicate files that are hashed and available, but
6 that shouldn't be added to the DHT.
7
8
9 Packages.diff files need to be considered.
10
11 The Packages.diff/Index files contain hashes of Packages.diff/rred.gz 
12 files, which themselves contain diffs to the Packages files previously 
13 downloaded. Apt will request these files for the testing/unstable 
14 distributions. They need to be dealt with properly by 
15 adding them to the tracking done by the AptPackages module.
16
17
18 Consider storing deltas of packages.
19
20 Instead of downloading full package files when a previous version of
21 the same package is available, peers could request a delta of the
22 package to the previous version. This would only be done if the delta
23 is significantly (>50%) smaller than the full package, and is not too
24 large (absolutely). A peer that has a new package and an old one would
25 add a list of deltas for the package to the value stored in the DHT.
26 The delta information would specify the old version (by hash), the
27 size of the delta, and the hash of the delta. A peer that has the same
28 old package could then download the delta from the peer by requesting
29 the hash of the delta. Alternatively, very small deltas could be
30 stored directly in the DHT.
31
32
33 Consider tracking security issues with packages.
34
35 Since sharing information with others about what packages you have
36 downloaded (and probably installed) is a possible security
37 vulnerability, it would be advantageous to not share that information
38 for packages that have known security vulnerabilities. This would
39 require some way of obtaining a list of which packages (and versions)
40 are vulnerable, which is not currently available.
41
42
43 Consider adding peer characteristics to the DHT.
44
45 Bad peers could be indicated in the DHT by adding a new value that is
46 the NOT of their ID (so they are guaranteed not to store it) indicating
47 information about the peer. This could be bad votes on the peer, as
48 otherwise a peer could add good info about itself.
49
50
51 Consider adding pieces to the DHT instead of files.
52
53 Instead of adding file hashes to the DHT, only piece hashes could be
54 added. This would allow a peer to upload to other peers while it is
55 still downloading the rest of the file. It is not clear that this is
56 needed, since peer's will not be uploading and downloading ery much of
57 the time.