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