X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=TODO;h=99b21d3e4b869d9b74922ea647d55adb0d9f505d;hb=9de190ef8975f525d2e841e6658e344e771e1a19;hp=e6a664a1468e1f0ee49bd8f0560d0472eef2cd36;hpb=a14ead2e712910bb5e4d818d2757592c4f14031b;p=oweals%2Fgnunet.git diff --git a/TODO b/TODO index e6a664a14..99b21d3e4 100644 --- a/TODO +++ b/TODO @@ -1,24 +1,12 @@ PHASE #1: (Goal: settle key design questions) -Hostlist: -* hostlist server (MHD-side) -* hostlist client (CURL-side); monitoring of number of active connections (to establish need for bootstrapping) -* hostlist server URL advertising & learning via P2P - -Topology: -* Selecting peers from peerinfo for connects; blacklisting -* Managing connections, F2F configuration obedience, rejecting prohibited connections -* Forwarding of known HELLOs to neighbours (advertising) - [ Inbound HELLOs are processed by transport, right? - But what about inbound encrypted HELLOs? ] - -ARM: -* Make sure ARM supports daemons (non-service background processes, see hostlist/topology) Util: -* improve disk API [Nils] +* improve disk API [Nils] (Nils, is this done? -Christian) * Windows: use events instead of pipes to signal select()s [Nils] -* only connect() sockets that are ready (select()) +* only connect() sockets that are ready (select()) [Nils] + [On W32, we need to select after calling socket before + doing connect etc.] TESTCASES WANTED: For these functions, it would be nice if we had testcases ("make check") @@ -60,27 +48,29 @@ that would cause them to be executed and check that they are working: - set_key_retry_task - align_and_deliver - handle_transport_notify_disconnect +* hostlist (everything) +* topology (everything) + PHASE #2: (Goal: recover basic file-sharing functionality) Datastores: * implement sqlite-based sqstore/datastore service - + implement library (talks to service) + implement service (datastore + talks to plugin) + + implement library (talks to service) + implement sqlite plugin (talks to DB) + + fix testcases (make them use CPS, complete their inner workings...) * implement sqlite-based dstore services + + design API + implement library (talks to service) + implement service (talks to plugin) + implement sqlite plugin (talks to DB) Applications: -* implement hostlist service (need to bootstrap!) * DHT, DV * FS / fs-libs -Databases: -* have ONE backend working PHASE #3: (Goal: ready for pre-release) [completion-goal: end of 2009] @@ -96,8 +86,8 @@ Transports: * UDP backend (need LIBRARY to support (de)fragmentation!) * HTTP backend * Testing: - + Testcases for set_quota, timeouts, disconnects, transmit_ready_cancel - + Better coverage of gnunet-service-transport (hello validation) + + Testcases for set_quota, timeouts, disconnects, transmit_ready_cancel + + Better coverage of gnunet-service-transport (HELLO validation) + direct test of plugins compliance to plugin API Databases: @@ -106,10 +96,14 @@ Databases: Minor TODO items: +* UTIL: + - crypto_hash: use libgcrypt (supports SHA-512 since 2003) + - container_bloomfilter: improve efficiency (see FIXME) * SERVER: - inefficient memmove * TRANSPORT: - transport_api: support forcing disconnects through low quotas! + (required for working F2F support!) - API: consider having core provide deadline information for each message (likely important for DV plugin which wants to loop back!) - implement transport API to pretty-print transport address @@ -131,6 +125,15 @@ Minor TODO items: should possibly try to confirm that the given address works for us ourselves (loopback-style) before adding it to the list [SECURITY issue] + + we may be able to simplify WELCOME messages (no need to add + addresses there anymore, but may help to learn them there anyway...). + + we probably want some kind of voting/counting for learning IP addresses + (maybe including IP addresses in ads proportional to how often others + report them? we at least need some protection against >64k HELLOs!), + + provide a way to give the user a list of "learned" IP addresses and + a way to easily "veto" addresses off the list! + => If MiM attacker uses vetoed address, blacklist the specific IP for + the presumed neighbour! - not sure current way of doing ACKs works well-enough with unreliable transports where the ACK maybe lost; the "is_new" check would then possibly prevent future @@ -147,6 +150,26 @@ Minor TODO items: and results in code replication - should latency be included in the ReceiveCallback and NotifyConnect or passed on request? + - FIXME's with latency being simply set to 0 in a few places + - Memory leak (running valgrind --trace-children=yes on test_transport_api: + ==28393== 16 bytes in 1 blocks are indirectly lost in loss record 1 of 5 + ==28393== at 0x4C2260E: malloc (vg_replace_malloc.c:207) + ==28393== by 0x52343E3: GNUNET_xmalloc_unchecked_ (common_allocation.c:62) + ==28393== by 0x5234389: GNUNET_xmalloc_ (common_allocation.c:53) + ==28393== by 0x524458A: GNUNET_NETWORK_socket_create_from_accept (network.c:289) + ==28393== by 0x524B2DA: ??? (server.c:332) + ==28393== by 0x524A4C7: ??? (scheduler.c:425) + ==28393== by 0x524A73D: GNUNET_SCHEDULER_run (scheduler.c:510) + ==28393== by 0x524FF8C: GNUNET_SERVICE_run (service.c:1326) + ==28393== by 0x405500: main (gnunet-service-transport.c:2645) + And also: + ==28393== 65,744 (65,728 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 5 of 5 + ==28393== at 0x4C2260E: malloc (vg_replace_malloc.c:207) + ==28393== by 0x52343E3: GNUNET_xmalloc_unchecked_ (common_allocation.c:62) + ==28393== by 0x5234389: GNUNET_xmalloc_ (common_allocation.c:53) + ==28393== by 0x524473E: GNUNET_NETWORK_socket_create_from_accept (network.c:323) + (rest of trace identical) + * SETUP: - auto-generate "defaults.conf" using gnunet-setup from "config.scm" - integrate all options into "config.scm" @@ -155,6 +178,15 @@ Minor TODO items: - implement exponential back-off for service restarts - better tracking of which config changes actually need to cause process restarts by ARM. - have way to specify dependencies between services (to manage ARM restarts better) + - client-API is inefficient since it opens a TCP connection per service that is started + (instead of re-using connections). +* CORE: + - code currently notifies clients about "encrypted" connections being up well before + we get the encrypted PONG; sometimes this may be OK (for topology killing + unwanted connnections), but of course not in general. I suspect we want + to signal on PONG and have topology hook directly into transport to + kill plaintext connections before they have a chance to become encrypted + (may require minor hack in transport API) * PEERINFO: - have gnunet-peerinfo print actual host addresses again - add option to gnunet-peerinfo to modify trust value @@ -166,6 +198,11 @@ Minor TODO items: * GAP improvements: - active reply route caching design & implementation of service, gap extension! +* HOSTLIST: + - implement advertising of hostlist URL + - implement learning of hostlist URLs + + => PRE-RELEASE @@ -197,4 +234,17 @@ Stuff to remember: Test coverage: -* UTIL: 75%, 4914 out of 6463 +* UTIL : 78.7% +* HELLO : 93.7% +* ARM : 69.9% +* RESOLVER : 60.4% +* STATISTICS: 82.8% +* PEERINFO : 71.5% +* TRANSPORT : 70.9% +* CORE : 65.8% +=================== +* TOTAL : 74.9% + +Not yet tested: +* HOSTLIST : 0.0% +* TOPOLOGY : 0.0%