Mercurial > hg > index.fcgi > gift-gnutella > gift-gnutella-0.0.11-1pba
comparison TODO @ 0:d39e1d0d75b6
initial add
author | paulo@hit-nxdomain.opendns.com |
---|---|
date | Sat, 20 Feb 2010 21:18:28 -0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1093d4c56646 |
---|---|
1 $Id: TODO,v 1.11 2004/06/04 16:31:08 hipnod Exp $ | |
2 | |
3 0.0.11 | |
4 ------ | |
5 o test short-writing of packets and make sure it works | |
6 o rename gt_conn_ -> gt_node_list_ | |
7 o limit outgoing push upload rate | |
8 o use GtTransfer by splitting up gt_transfer_new instead of | |
9 http_incoming thing | |
10 o insert incoming HTTP server connections into server connection list, | |
11 to ensure the connection will get closed if there are too many | |
12 o optimize away extra packet allocations | |
13 o support basic packet routing | |
14 o implement simple flow-control | |
15 o make QRP implementation more complete | |
16 o support QRP for reducing queries to nodes | |
17 o implement GGEP properly | |
18 o make generic 3-way handshake for features that have a version | |
19 number (Vendor-Message, X-Query-Routing, GGEP) | |
20 o make sure all global symbols are prefixed with gt_, GT_, or gnutella_ | |
21 o move handshake code into handshake/ | |
22 o rename gnutella_* handshake functions to gt_handshake_* | |
23 o maybe rewrite the handshaking code completely | |
24 o fix packet parsing when string is at the end; need to fix | |
25 io_buf_resize to terminate | |
26 o merge dev-intset-search branch | |
27 o make web cache index requests once in a while | |
28 o keep queue of outgoing pushed connects, retry | |
29 o rename gt_search_exec gt_share_db | |
30 o implement an abstract GtHttpHeader type | |
31 o eliminate extra list len calc in gt_node_list_foreach() | |
32 o test and possibly incorporate SHA1 code from Linux | |
33 o do tests on new searching code in dev-intset-search branch | |
34 o fix node->share_state being NULL if handshaking hasn't completed | |
35 o use callback system for running code when connection has completed | |
36 o fix gt_share_state.c for ultrapeer mode | |
37 | |
38 0.0.12 | |
39 ------ | |
40 o support downloading from push proxies | |
41 o refactor HTTP code and merge gt_http_client.c and http_request.c | |
42 o maybe do browsing | |
43 o break transfer code into transfer/ | |
44 o break http code into http/ | |
45 o break sharing code into share/ | |
46 o break searching code into search/ | |
47 o chop off gt_ prefixes in move | |
48 | |
49 0.0.13 | |
50 ------ | |
51 o implement basic download mesh | |
52 o limit outgoing push uploads | |
53 | |
54 0.1.0 | |
55 ----- | |
56 o support dynamic querying | |
57 o send out XML metadata | |
58 | |
59 {******************************************************************************} | |
60 | |
61 HTTP | |
62 ---- | |
63 | |
64 o probably rename GtTransfer to GtHttpTransfer | |
65 o use a new type GtHttpHeader instead of Dataset for xfer->header | |
66 o generalize http handling and separate transfer code into callbacks | |
67 o make GtHttpConnection type to cleanup gt_transfer_cancel() | |
68 o make GtHttpConnectionCache for unifying pushed and non-pushed caches | |
69 o maybe separate GtHttpTransfer into GtHttpRequest/Response | |
70 | |
71 | |
72 TRANSFER | |
73 -------- | |
74 | |
75 o slap push proxies in source url; have to remove them too | |
76 | |
77 {******************************************************************************} | |
78 | |
79 THINGS NEEDED FROM THE DAEMON | |
80 ----------------------------- | |
81 | |
82 * make search object persistent in front-end space, and require | |
83 explicit free from front-end, or front-end disconnect | |
84 | |
85 Would be better if searches were a handle existing in front-end | |
86 space, that stuck around after search completion, and had to be | |
87 explicitly cleaned up by a front-end. This way we could still send | |
88 results that come in after a search has timed out to the front-end, | |
89 and let it decide what to do with them after a search has | |
90 entered the "completed" (but still allocated) state. | |
91 | |
92 Haven't seen those post-completion results actually happen in a | |
93 while, though..I would like to think this means the search timeout | |
94 logic is good, but since there is no tracking I've no precise idea | |
95 how often it happens, except i don't usually see them on the debug | |
96 console. Should really add something to check for them... | |
97 | |
98 * interactive searches need hash-type | |
99 | |
100 Interactive locate searches always assume sha1, because hash-type is | |
101 null. The interface protocol should support a way to enumerate the | |
102 supported hashes and pass a hash-type parameter from the user to | |
103 locate. | |
104 | |
105 * protocol callback for adding new sources, that doesn't cancel | |
106 existing transfers | |
107 | |
108 This is needed for download mesh support. download_add_source will | |
109 cancel existing transfers, which is not good because one source may | |
110 end up cancelling an ongoing transfer if it sends another source in | |
111 the alternate location that is currently actively transfering. So, a | |
112 new function is needed for use in the callback to skip ongoing | |
113 transfers. | |
114 | |
115 * queueing w/ MAX_DOWNLOADS_PERUSER == 1 doesn't always work | |
116 | |
117 Because transfer_length() operates on chunks rather than sources, | |
118 sometimes more than one download per source gets started if the | |
119 Chunk isn't active. Need to assess the impact of changing | |
120 transfer_length() to use Sources instead of Chunks. | |
121 | |
122 * need some way to enforce MAX_DOWNLOADS_PERUSER on per-source basis | |
123 | |
124 Active-queueing depends on MAX_DOWNLOADS_PERUSER == 1. If | |
125 MAX_DOWNLOADS_PERUSER changes, active-queueing breaks and downloads | |
126 will fail all the time. Should enforce MAX_DOWNLOADS_PERUSER on | |
127 a per-source basis at runtime. | |
128 | |
129 Hmm, this may require a User abstraction. There was something else I | |
130 was thinking would require that too, perhaps related to upload | |
131 queueing and how doing p->user_cmp there is bad... | |
132 | |
133 * push downloads need a way to initiate transfer when no Chunk is | |
134 allocated | |
135 | |
136 * some way to enforce a minimum retry wait on sources | |
137 | |
138 * configurable source timeouts to protect push downloads |