Mercurial > hg > index.fcgi > gift-gnutella > gift-gnutella-0.0.11-1pba
diff TODO @ 0:d39e1d0d75b6
initial add
author | paulo@hit-nxdomain.opendns.com |
---|---|
date | Sat, 20 Feb 2010 21:18:28 -0800 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/TODO Sat Feb 20 21:18:28 2010 -0800 1.3 @@ -0,0 +1,138 @@ 1.4 +$Id: TODO,v 1.11 2004/06/04 16:31:08 hipnod Exp $ 1.5 + 1.6 +0.0.11 1.7 +------ 1.8 + o test short-writing of packets and make sure it works 1.9 + o rename gt_conn_ -> gt_node_list_ 1.10 + o limit outgoing push upload rate 1.11 + o use GtTransfer by splitting up gt_transfer_new instead of 1.12 + http_incoming thing 1.13 + o insert incoming HTTP server connections into server connection list, 1.14 + to ensure the connection will get closed if there are too many 1.15 + o optimize away extra packet allocations 1.16 + o support basic packet routing 1.17 + o implement simple flow-control 1.18 + o make QRP implementation more complete 1.19 + o support QRP for reducing queries to nodes 1.20 + o implement GGEP properly 1.21 + o make generic 3-way handshake for features that have a version 1.22 + number (Vendor-Message, X-Query-Routing, GGEP) 1.23 + o make sure all global symbols are prefixed with gt_, GT_, or gnutella_ 1.24 + o move handshake code into handshake/ 1.25 + o rename gnutella_* handshake functions to gt_handshake_* 1.26 + o maybe rewrite the handshaking code completely 1.27 + o fix packet parsing when string is at the end; need to fix 1.28 + io_buf_resize to terminate 1.29 + o merge dev-intset-search branch 1.30 + o make web cache index requests once in a while 1.31 + o keep queue of outgoing pushed connects, retry 1.32 + o rename gt_search_exec gt_share_db 1.33 + o implement an abstract GtHttpHeader type 1.34 + o eliminate extra list len calc in gt_node_list_foreach() 1.35 + o test and possibly incorporate SHA1 code from Linux 1.36 + o do tests on new searching code in dev-intset-search branch 1.37 + o fix node->share_state being NULL if handshaking hasn't completed 1.38 + o use callback system for running code when connection has completed 1.39 + o fix gt_share_state.c for ultrapeer mode 1.40 + 1.41 +0.0.12 1.42 +------ 1.43 + o support downloading from push proxies 1.44 + o refactor HTTP code and merge gt_http_client.c and http_request.c 1.45 + o maybe do browsing 1.46 + o break transfer code into transfer/ 1.47 + o break http code into http/ 1.48 + o break sharing code into share/ 1.49 + o break searching code into search/ 1.50 + o chop off gt_ prefixes in move 1.51 + 1.52 +0.0.13 1.53 +------ 1.54 + o implement basic download mesh 1.55 + o limit outgoing push uploads 1.56 + 1.57 +0.1.0 1.58 +----- 1.59 + o support dynamic querying 1.60 + o send out XML metadata 1.61 + 1.62 +{******************************************************************************} 1.63 + 1.64 +HTTP 1.65 +---- 1.66 + 1.67 + o probably rename GtTransfer to GtHttpTransfer 1.68 + o use a new type GtHttpHeader instead of Dataset for xfer->header 1.69 + o generalize http handling and separate transfer code into callbacks 1.70 + o make GtHttpConnection type to cleanup gt_transfer_cancel() 1.71 + o make GtHttpConnectionCache for unifying pushed and non-pushed caches 1.72 + o maybe separate GtHttpTransfer into GtHttpRequest/Response 1.73 + 1.74 + 1.75 +TRANSFER 1.76 +-------- 1.77 + 1.78 + o slap push proxies in source url; have to remove them too 1.79 + 1.80 +{******************************************************************************} 1.81 + 1.82 +THINGS NEEDED FROM THE DAEMON 1.83 +----------------------------- 1.84 + 1.85 + * make search object persistent in front-end space, and require 1.86 + explicit free from front-end, or front-end disconnect 1.87 + 1.88 + Would be better if searches were a handle existing in front-end 1.89 + space, that stuck around after search completion, and had to be 1.90 + explicitly cleaned up by a front-end. This way we could still send 1.91 + results that come in after a search has timed out to the front-end, 1.92 + and let it decide what to do with them after a search has 1.93 + entered the "completed" (but still allocated) state. 1.94 + 1.95 + Haven't seen those post-completion results actually happen in a 1.96 + while, though..I would like to think this means the search timeout 1.97 + logic is good, but since there is no tracking I've no precise idea 1.98 + how often it happens, except i don't usually see them on the debug 1.99 + console. Should really add something to check for them... 1.100 + 1.101 + * interactive searches need hash-type 1.102 + 1.103 + Interactive locate searches always assume sha1, because hash-type is 1.104 + null. The interface protocol should support a way to enumerate the 1.105 + supported hashes and pass a hash-type parameter from the user to 1.106 + locate. 1.107 + 1.108 + * protocol callback for adding new sources, that doesn't cancel 1.109 + existing transfers 1.110 + 1.111 + This is needed for download mesh support. download_add_source will 1.112 + cancel existing transfers, which is not good because one source may 1.113 + end up cancelling an ongoing transfer if it sends another source in 1.114 + the alternate location that is currently actively transfering. So, a 1.115 + new function is needed for use in the callback to skip ongoing 1.116 + transfers. 1.117 + 1.118 + * queueing w/ MAX_DOWNLOADS_PERUSER == 1 doesn't always work 1.119 + 1.120 + Because transfer_length() operates on chunks rather than sources, 1.121 + sometimes more than one download per source gets started if the 1.122 + Chunk isn't active. Need to assess the impact of changing 1.123 + transfer_length() to use Sources instead of Chunks. 1.124 + 1.125 + * need some way to enforce MAX_DOWNLOADS_PERUSER on per-source basis 1.126 + 1.127 + Active-queueing depends on MAX_DOWNLOADS_PERUSER == 1. If 1.128 + MAX_DOWNLOADS_PERUSER changes, active-queueing breaks and downloads 1.129 + will fail all the time. Should enforce MAX_DOWNLOADS_PERUSER on 1.130 + a per-source basis at runtime. 1.131 + 1.132 + Hmm, this may require a User abstraction. There was something else I 1.133 + was thinking would require that too, perhaps related to upload 1.134 + queueing and how doing p->user_cmp there is bad... 1.135 + 1.136 + * push downloads need a way to initiate transfer when no Chunk is 1.137 + allocated 1.138 + 1.139 + * some way to enforce a minimum retry wait on sources 1.140 + 1.141 + * configurable source timeouts to protect push downloads