TODO list for client ==================== URGENT WORK: ============ (0) Check that removal of the Swarmer after file_completed is not harmful. (1) Why is the QRT sent so often ? (2) Implement PUSH in Gnutella and Fasttrack * Re-implement contributors in CommonSwarming * Re-implement already downloaded files. * Why does a BT client appear twice in the upload_fifo ? * Secondary file should have '2' if primary file has not 3... * Use a strategy for each network that tries to finish partially downloaded chunks for itself or the primary network. * Does the PartialChunk strategy work ? * Why are chunks verified before completeness ? * When a connection succeeds and downloads, we should retry the connection ASAP. * How to remove servers from disabled networks ? * When a file is committed, we should add a flag to say if it has been verified or not. GNUTELLA: * Use GET /urn-... type of downloads * When is recover_file called ? * All slots used ??? * Why do we lose some ultrapeers ? * For files without TTR, use the SHA1 when all chunks are '2' * Why is the QRT sent so often ?? BITTORRENT: * Why does BT stop uploading after a file is downloaded ? FASTTRACK: * Verify that cancelled files are correctly removed, even the swarmers ! * What does "precondition failed" means ?? * Infinite loop somewhere... SWARMING: disconnect verification scheme from network, at least when the network doesn't use bitmaps. Find alternative UIDs for files (Gnutella2) and download TigerTree when available. URGENT: * Understand why we ask several times for the same chunks * Propagate client bitmaps to GUI * Seeding in Bittorrent doesn't work BUGS: Flush buffers after do_at_exit (wait 5 secondes after exit ?). Send relative times in the GUI protocol ************************************************************************ Edonkey: * Verify that make_xs is always synchronized with sources searches. * Add command 'export_temp' so that they can be used from emule/edonkey * EmuleMobile ? * BUG: MLdonkey client generates "Exceeding Block Boundaries" errors which loses bandwidth * Implement more Emule packets OP_REASKFILEPING (0x90) (size=16) OP_QUEUEFULL (0x93) OP_REASKACK (0x91) (size=2) OP_FILENOTFOUND (0x92) * Extended search doesnot work after connect because no ping was sent. BitTorrent: * Implement file availability as in edonkey. * Content-Encoding: gzip * bt 3.2 ... a want= and have= parameter * Check that after the commit, we don't call the tracker, except if we continue to share the file * started and completed should only be sent once * Pause/resume file * Reserve upload slots * Share downloaded files * Committed or not FastTrack: * Fifo to reconnect to clients PER FILE, limited by the number of currently downloading clients Gnutella2: * Allow browsing other clients. * ADD urn:sha1:<HASH> and urn:tree:tiger/:<HASH> to QRT * Search using all URI (ed2k, etc...) * Act as an ultra-peer Gnutella: * Upload: use CommonUploads queues * Send more information in HTTP/1.1 headers (alt-locs, thex) Soulseek: * Network does currently not work due to missing bindings with common module * In case of Message from server LOGIN FAILURE INVALIDPASS prevent any new reconnection without changing the password. Done ? + Implement more of the protocol + Directory download using MultiFile + Check that we don't download several times the file list of friends. + Add a button in the tab_result to add to friend a file source (gui protocol -> file sources) + Use (file_name, size) keys for files_by_key, and iter on the table on upload requests to find the correct file. + Very long messages (several Megs) for shared file lists... + Remove all downloads from a given user + Display the number of new message per room Opennap: * Network does currently not work due to missing bindings with common module * Register files on server * Implement Upload completely Direct-Connect: * Network does currently not work due to missing bindings with common module * Implement Upload completely * How do you know your IP in Direct-Connect if you are behind a firewall * Send replies to active searches * When a download is finished, can the link be reused ? * Don't always download from incoming peer the files list * Reply to active search requests * For some reason, mldc cannot talk on some servers... France AVI for example. *********************************************************************** Core: * LittleEndian: is buf_int correct with negative values * Change ClientKind so that it does not depend on edonkey anymore. * BUG: What happens when the writes are buffered, mtime does not correspond to the real value ? We should probably call Unix2.flush_all before saving the config. * CD get and Collections * The core sends more File_info messages than File_downloaded, which is not normal ! * Send messages to GUI with a classifier (to be able to display messages in different consoles, server console, download console, clients console)