-PHASE #1: (Goal: settle key design questions)
-
-TRANSPORT:
-* Make sure that the service does not go bezerk
- on all plugins and all sessions on disconnects,
- specifically, whenever disconnect_neighbour is called.
- (We may have other sessions, in particular through other transports,
- that are active for the same peer; clearly we should
- not immediately discard all messages and stop all
- plugins); the call is fine in the various places where it is; but except in the
- timeout case, we should check the status of the other plugins before killing all.
-
-* "Another peer saw us using..." messages for TCP
- use the (random, high) sender port instead of the
- adjusted port; this will be confusing to users...
-
-==9033== Invalid read of size 8
-==9033== at 0x4042FA: plugin_env_receive (gnunet-service-transport.c:2058)
-==9033== by 0x7287643: disconnect_session (plugin_transport_tcp.c:831)
-==9033== by 0x7289539: disconnect_notify (plugin_transport_tcp.c:1919)
-==9033== by 0x524BE24: ??? (server.c:645)
-==9033== by 0x524C040: ??? (server.c:752)
-==9033== by 0x5245734: ??? (network.c:810)
-==9033== by 0x5245881: ??? (network.c:850)
-==9033== by 0x524A497: ??? (scheduler.c:425)
-==9033== by 0x524A77A: GNUNET_SCHEDULER_run (scheduler.c:520)
-==9033== by 0x524FF5C: GNUNET_SERVICE_run (service.c:1326)
-==9033== by 0x4054F4: main (gnunet-service-transport.c:2644)
-==9033== Address 0x6edaec0 is 24 bytes inside a block of size 64 free'd
-==9033== at 0x4C2130F: free (vg_replace_malloc.c:323)
-==9033== by 0x523453A: GNUNET_xfree_ (common_allocation.c:109)
-==9033== by 0x403DC8: disconnect_neighbour (gnunet-service-transport.c:1885)
-==9033== by 0x4042EE: plugin_env_receive (gnunet-service-transport.c:2057)
-==9033== by 0x7287643: disconnect_session (plugin_transport_tcp.c:831)
-==9033== by 0x7289539: disconnect_notify (plugin_transport_tcp.c:1919)
-==9033== by 0x524BE24: ??? (server.c:645)
-==9033== by 0x524C040: ??? (server.c:752)
-==9033== by 0x5245734: ??? (network.c:810)
-==9033== by 0x5245881: ??? (network.c:850)
-==9033== by 0x524A497: ??? (scheduler.c:425)
-==9033== by 0x524A77A: GNUNET_SCHEDULER_run (scheduler.c:520)
-==9033==
-
-
-==9033== Invalid write of size 4
-==9033== at 0x404308: plugin_env_receive (gnunet-service-transport.c:2061)
-==9033== by 0x7287643: disconnect_session (plugin_transport_tcp.c:831)
-==9033== by 0x7289539: disconnect_notify (plugin_transport_tcp.c:1919)
-==9033== by 0x524BE24: ??? (server.c:645)
-==9033== by 0x524C040: ??? (server.c:752)
-==9033== by 0x5245734: ??? (network.c:810)
-==9033== by 0x5245881: ??? (network.c:850)
-==9033== by 0x524A497: ??? (scheduler.c:425)
-==9033== by 0x524A77A: GNUNET_SCHEDULER_run (scheduler.c:520)
-==9033== by 0x524FF5C: GNUNET_SERVICE_run (service.c:1326)
-==9033== by 0x4054F4: main (gnunet-service-transport.c:2644)
-==9033== Address 0x6edaed8 is 48 bytes inside a block of size 64 free'd
-==9033== at 0x4C2130F: free (vg_replace_malloc.c:323)
-==9033== by 0x523453A: GNUNET_xfree_ (common_allocation.c:109)
-==9033== by 0x403DC8: disconnect_neighbour (gnunet-service-transport.c:1885)
-==9033== by 0x4042EE: plugin_env_receive (gnunet-service-transport.c:2057)
-==9033== by 0x7287643: disconnect_session (plugin_transport_tcp.c:831)
-==9033== by 0x7289539: disconnect_notify (plugin_transport_tcp.c:1919)
-==9033== by 0x524BE24: ??? (server.c:645)
-==9033== by 0x524C040: ??? (server.c:752)
-==9033== by 0x5245734: ??? (network.c:810)
-==9033== by 0x5245881: ??? (network.c:850)
-==9033== by 0x524A497: ??? (scheduler.c:425)
-==9033== by 0x524A77A: GNUNET_SCHEDULER_run (scheduler.c:520)
-==9033==
-
-
-
-CORE:
-* fails non-deterministically with empty /tmp directory
-
-
-
-Util:
-* 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()) [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")
-that would cause them to be executed and check that they are working:
-* gnunet-service-peerinfo:
- - change_host_trust / flush_trust
- - remove_garbage /
- - discard_hosts_helper / cron_clean_data_hosts
-* gnunet-service-transport:
- - try_unvalidated_addresses
- - lookup_address_callback
- - lookup_hello_callback
- - plugin_env_lookup_address
- - notify_clients_disconnect
- - list_validated_addresses
- - cleanup_validation
- - disconnect_neighbour
- - handle_set_quota
-* plugin_transport_tcp.c:
- - tcp_plugin_cancel
- - tcp_plugin_address_pretty_printer / append_port
- - tcp_plugin_set_receive_quota
- - delayed_done
-* transport_api:
- - GNUNET_TRANSPORT_set_qutoa / send_set_quota
- - hello_wait_timeout
- - transmit_ready
- - transmit_timeout
- - remove_from_any_list / remove_neighbour
- - GNUNET_TRANSPORT_notify_transmit_ready_cancel
-* core_api:
- - timeout_request
- - solicit_traffic / copy_and_free
- - GNUNET_CORE_peer_configure / produce_configure_message
-* gnunet-service-core:
- - update_window
- - find_client
- - handle_client_request_configure
- - 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 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:
-* DHT, DV
-* FS / fs-libs
-
-
-
-PHASE #3: (Goal: ready for pre-release) [completion-goal: end of 2009]
-
-* testing
-* setup
-* gtk, qt GUIs
-* tbench
-* tracekit
-* vpn
-
-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)
- + direct test of plugins compliance to plugin API
-
-Databases:
-* sqlite, mysql & postgres backend
-