CHANGELOG FOR EMULE [Maella] ============================ General ---------- 1. [FAF] -Allow Bandwidth Settings in <1KB Incremements- The bandwidth limits can be set with an increment of 0.1 [KB/s]. This is useful for users of analog modem (e.g. 56k). 2. [FAF] -One-queue-per-file- (idea bloodymad) Simulate a system with one waiting queue for every shared file. The credit system is still used, but only within one queue. It gives a better chance to rare file to be uploaded, because every files receive a upload slot periodically. A upload slot can be reservered for file with the priority set to 'release'. 3. [patch] -Enhanced Chunk Selection- (based on jicxicmic) This is a new algorithm for the selection of the chunks to download. This selection process is one of the CRITICAL parts of the eDonkey network. The algorithm must insure the best spreading of files. To avoid a premature stop, all blocks requested from the same source are located within the same chunk. The selection is based on 4 criteria: 1. Frequency of the chunk (availability), very rare chunks must be downloaded as quickly as possible to become a new available source. 2. Parts used for preview (first + last chunk), preview or check a file (e.g. movie, mp3) 3. Request state (downloading in process), try to ask each source for another chunk. Spread the requests between all sources. 4. Completion (shortest-to-complete), partially retrieved chunks should be completed before starting to download a other one. The rarity of the chunks defines three groups: For very rare (3 or <10%) chunks (release mode), the selection is done in the order: - less downloaded chunk (availability) - shortest-to-complete chunk - random chunk For rare (<50%) chunks (spread mode) - downloading in progress - less downloaded chunk (availability) - shortest-to-complete chunk - first/last then chunk (if selected in preferences) - random chunk For common chunks (share mode) - downloading in progress - shortest-to-complete chunk - first/last chunk (if selected in preferences) - random chunk 4. [patch] -New Save/load Sources- enkeyDEV(Ottavio84) This patch saves or loads 10 sources per downloaded file. The sources have an expiration of 3 days to avoid overloading the network. The sources are saved in text files to be human-readable (see *.txtsrc). 5. [patch] -Enable/Disable source exchange in preference- (Tarod) Per default clients can exchange their lists of sources. This ability is very useful to find sources for rare files. However this is not always whished, because this system goes against the smart sources patch on servers. Info on the smart source http://lugdunum2k.free.fr/smarten.html 6. [patch] -Defeat 0-filled Part Senders- (Idea of xrmb) This is a protection against packets with fake contents to avoid corrupting a file in download. A packet and the sender are rejected when the following conditions are fulfilled: - The compression factor is too high. 4x for compressed file types (e.g. zip) or 25x for uncompressed file types (e.g. txt). - The packet overlaps the bounds of the initial request. The protection can be enabled or disabled within the preferences. It might be necessary to disable this protection with some kinds of files (e.g. *.nrg). 7. [patch] -Support for tag ET_MOD_VERSION 0x55 II- (Idea of Statik) The tag 0x55 is the new universal mod identifier used by a majority of mods today. Modified eMule clients could be identified with a unique string (e.g. “Maella v3.02”). Details of the mod are now displayed in the statistic. 8. [patch] -AntiCrash/AntiFake handling- (Vorlost/Mortillo) Check the validity of an incoming Hello packet. It avoids a crash when an invalid user name is received. 9. [patch] -Accurate measure of bandwidth: eDonkey data + control, network adapter- The code for the measure of the bandwidth was completely rewritten to be more accurate and displayed in a real-time way. Two new curves were added to the graphics to display the traffic for the edonkey protocol (data + Control, with an estimation of IP/UDP/TCP) and the traffic of the network adapted. Please note that the official eMule does a strong smoothing of its displayed values, because it uses only average value calculated for a time bigger than 30 seconds. 10 [patch] -MTU Configuration- MTU stands for Maximum Transmission Unit. This is the maximal size that an IP packet can have and it usually depends on the type of the internet connection (e.g. ADSL, 56K). The size can be configured within the preferences (see http://www.hms.com to detect you current MTU). 11. [patch] -Minimum Upload Slot- The minimum number of upload slots can be configured within the preferences (range 2..4). Other upload slots will be automatically open when the upload bandwidth is not fully used. 12. [patch] -Small latency- The main code is executed every 50 ms (instead of 100 ms). This reduction helps to have a smoother control of the upload bandwidth. 13. [patch] -New bandwidth control- Upload: the code for the control of the upload is completely rewritten to allow a smoother use of the bandwidth. The upload packets are sent more regularly over the time. This modification reduces the ‘ping’ and might accelerate the general TCP handshake. Download: the code for the control is rewritten to reduce the CPU load. Attention: the upload limit cannot be set to 'unlimited' (with 0) within the preferences. 14. [patch] -Overhead compensation (pseudo full rate control)- This is an experimental control. It can be activated or deactivated within the preferences. When enabled, the limits given for the upload and download are applied to the overall bandwidth (data + overhead) instead of the bandwidth used for data. 15. [patch] -General Code Improvement/Avoid Heap/Code Fix- Divers code refactories to lower the CPU Load, improve the stability or for a better use of the C++ language. These changes do not modify the behaviour of the program. They do not add new functionalities. 16. [patch] -Extended clean-up II- Clean-up all internal lists when the instance of a file or client is delete. The useless clients (no upload/donload states) are delete after two hours of inactivity. 17. [patch] -MiniDump/CrashRpt II- (CrashRpt.dll) This library is OPTIONAL and doesn’t need to be installed. It may work only with XP. Its purpose is to generate a Minidump file (< 50kB) during a crash. This file may be used later to locate the faulty part of the code (=>debugging). For details see (http://www.codeproject.com/debug/crash_report.asp). 18. [fix] -New Timer Management- The management of the main timer was rewritten. With this refactory, a better superversion of the program's exceptions is possible. The application should not close any more by itself without generating a dump file. This modification should help for the debugging. 19. Divers [patch] -Fake Search- (sivka) Check if a file is not listed as a fake. [patch] -Upload Stop Reason- [patch] -Download Stop Reason- Add some information about end of session in the statistic tree (verbose must be activated). [patch] -Activate Smart Low ID check- Try to reconnect 3 times to a different server when a LowID is received. [patch] -Auto-update of Ipfilter.dat- (milobac) Small facility to download manualy a new version of the IPfilter.dat [patch] -Close Backdoor- A client (Hybrid + MLDonkey) might ask a file to gain but download another. When detected, the client will be put back in the waiting list with a penality. [patch] -Allow Hybrid to download from eMule- The Hybrid (v49.4/v49.5) won't be rejected when it asks for block larger than the default allowed size. [patch] -Spread Request- (idea SlugFiller) Try to spread the TCP session over the time to avoid some pick in the level of simultaneous connections. It adds a jitter of +-2 minutes to the default timming of request. [patch] -Auto A4AF- Try to swap to the file with the flag A4AF or to the files with a higher priority. There is an option that will automaticaly select the next A4AF file within the same category after a complete download. The selection is done with three parameters: priority and name. [patch] -Reask sources after IP change- (idea Xman) Reinitialize all sources after a change of the global IP (e.g. modem disconnected) or a change of lowID to lowID. [Fix] -Unnecessary Protocol Overload- Reduce by up to 50% the number of TCP creations to refresh the eDonkey download session. The ping signal is now correctly used and the client takes advantage of existing TCP sessions to perform all refresh operations. [Fix] -2 GB file limit- (bluecow) [Fix] -Failed Upload Session Count- [patch] -Allow Hybrid to download from eMule- etc... Known bug -------------- Upload limit should not be set to 'unlimited' When the upload limit is too high, the measure of the overhead could be negative (packet rejected by Socket) Sometime the client crash during the file completion The program PasaKche causes instability when installed (http://www.internautas.org/article.php?sid=1110) To do ------ - Add support for 'Unlimited' upload ------------------------------------------------------ - September 28th, 2003 - v4.1.08 (base on official client v0.29c) ------------------------------------------------------ Add a security fix related to server's name (Thanks Xman) ------------------------------------------------------ - September 9th, 2003 - v4.1.07 (base on official client v0.29c) ------------------------------------------------------ [modify] new Upload Slot Sharping. It was rewritten to suit better to clients with a high upload capacity [modify] -NAFC- Final version of the 'Auto Upload/Downlaod limits'. The system is now fully operational and gives very good result. Add a small protection against hash thief (merged from v0.30a) Modify the USS to better suit uploader with high upload capacity (Thanks Xman) Modify the upload rate control to better suit uploader with high upload capacity fix a possible source of crash in CServerConnect::CheckForTimeout() (thanks Mp3Dibujos) Modify detection of the adapter for NAFC => fix incompatibility with some configurations ------------------------------------------------------ - September 7th, 2003 - v4.1.06 (base on official client v0.29c) ------------------------------------------------------ [fix] -NAFC- Modify the detection of the network adapter board for a better compatibility with some configurations [fix] -NAFC- 'Auto-mode' renamed to 'Auto Upload/Download limits', general improvement of this option. Good result with average value, instant value could be better. [fix-patch] -New Save/load Sources- too much sources were saved ------------------------------------------------------ - August 30nd, 2003 - v4.1.05 (base on official client v0.29c) ------------------------------------------------------ Add IP indication to the message 'Warning: WaitTime resetted due to Invalid Ident for Userhash' [fix] -New bandwidth control-, USS was opening to much slot with high speed connection [fix] -One-queue-per-file-, incompatibility between lowId and release slot ------------------------------------------------------ - August 29nd, 2003 - v4.1.04 (base on official client v0.29c) ------------------------------------------------------ [fix] -Accurate measure of bandwidth-, fix a graphical bug that appears with average value [improve] -One-queue-per-file-, better handling of the release slot [change] -New bandwidth control-, small change to boost the upload rate to clients non-busy ------------------------------------------------------ - August 23nd, 2003 - v4.1.03 (base on official client v0.29c) ------------------------------------------------------ Add some logs for the NAFC Change the limits for the chunck selection: very rare => 1+10%, rare => 2+30% [merge form v0.30a] Check tag type + divers small things [merge form v0.30a] bluecow: Added several parts of SlugFiller's SafeHash [SlugFiller] [merge form v0.30a] bluecow: ED2K protocol: fixed handling of OP_FILESTATUS for files with a size of PARTSIZE*N ------------------------------------------------------ - August 20nd, 2003 - v4.1.02 (base on official client v0.29c) ------------------------------------------------------ The users can now select between the old and new Upload slot sharping (USS) [patch] -Network Adapter Feedback Control- It migth not work on all configs. When enabled, the USS (in new mod only) won't open a new slot if the NAFC has already reached its limit. In 'full control' mod, the upload limit is controled by the NAFC (=> Attention, experimental! Does not work so well) [modify-patch] -New Save/load Sources- Now the change introduced with 4.1.01 should work ------------------------------------------------------ - August 16nd, 2003 - v4.1.01 (base on official client v0.29c) ------------------------------------------------------ [FAF] -One-queue-per-file-, now te system can be used up to 15 days (before 3 days) [patch] -Accurate measure of bandwidth: eDonkey data + control, network adapter- [fix-patch] -Auto A4AF-, A4AF was sometime unselected after the completion of a file [modify-patch] -New Save/load Sources- If less than 1 hour elapsed since the eMule was restarted, all sources are reloaded, otherwise only 10 with a limit of 3 days Fix possible source when an exception occurs during a download session Fix possible source of crash during the trace of unknown packet ------------------------------------------------------ - August 2nd, 2003 - v4.1 (base on official client v0.29c) ------------------------------------------------------ Display own user hash in preference Try to fix a possible source of crash Put back try{} catch() into the main procedure [fix] -Unnecessary Protocol Overload- => Strong improvement [patch] -Reask sources after IP change- fix and better logs [patch] -Auto A4AF- increase swapping speed within safe limit for banishement Graphical bug fixed in downloading tree. A swapped source without part won't be deleted. ------------------------------------------------------ - Jully 28th, 2003 - v4.1 RC3 (base on official client v0.29c) ------------------------------------------------------ [fix] -Unnecessary Protocol Overload- [patch] -Inform sources of an ID change- [patch] -Reask sources after IP change- (idea Xman) [patch] -Auto A4AF- might be transfered to a paused files => fixed (thanks tcmjr) ------------------------------------------------------ - Jully 25th, 2003 - v4.1 RC2 (base on official client v0.29c) ------------------------------------------------------ Try to fix a possible bug with the socket (not too sure) Fix wrong number of connection displayed in the statistic graph Strong improvement (+ bug fix) to reduce CPU load for the refresh of the graphs Add some filters in preference for verbose messages New compilation settings for PentiumIV + Athlon ------------------------------------------------------ - Jully 24th, 2003 - v4.1 RC1 (base on official client v0.29c) ------------------------------------------------------ [patch] -Allow Hybrid to download from eMule- [patch] -End of upload session- [patch] -Upload Stop Reason- [patch] -Download Stop Reason- [fix] -Failed Upload Session Count- [patch] -Close Backdoor- [FAF] -One-queue-per-file- code simplification+improvement [patch] -Spread Request- (idea SlugFiller) [patch] -Auto A4AF- Fix problem with -New Save/load Sources- (thanks Xman1, Loko_O) And partialy fix statistic (thanks Xman1). There are still problem with cumulative values (=> reset) Add some translations (thanks ikabot, adiazreb, Xman1) ------------------------------------------------------ - Jully 18th, 2003 - v4.1 beta3 (base on official client v0.29c) ------------------------------------------------------ [FAF] -One-queue-per-file- (idea bloodymad) [patch] -Auto-update of Ipfilter.dat- (milobac) ------------------------------------------------------ - Jully 17th, 2003 - v4.1 beta2 (base on official client v0.29c) ------------------------------------------------------ [fix] -2 GB file limit- (bluecow) [FAF] -Allow Bandwidth Settings in <1KB Incremements- missing decimal [patch] -Defeat 0-filled Part Senders- add test for CD-Image Fix Calculation Error with ALL SI-Clients (thanks Xman1) Fix a possible source of crash during the connection to server (thanks WollDry) Fix a possible source of crash (thanks vagabiondo) ------------------------------------------------------ - Jully 16th, 2003 - v4.1 beta1 (base on official client v0.29c) ------------------------------------------------------ Fix statistics => failed download session Fix languages french+spanish => search failed ------------------------------------------------------ - Jully 15th, 2003 - v4.1 alpha1 (base on official client v0.29c) ------------------------------------------------------ 1. [FAF] -Allow Bandwidth Settings in <1KB Incremements- 2. [patch] -Enhanced Chunk Selection- (based on jicxicmic) 3. [patch] -New Save/load Sources- enkeyDEV(Ottavio84) 4. [patch] -Enable/Disable source exchange in preference- (Tarod) 5. [patch] -Defeat 0-filled Part Senders- (Idea of xrmb) 6. [patch] -Support for tag ET_MOD_VERSION 0x55 II- (Idea of Statik) 7. [patch] -AntiCrash/AntiFake handling- (Vorlost/Mortillo) 8. [patch] -Accurate measure of bandwidth: IP, TCP or UDP, eDonkey protocol, etc- 9. [patch] -MTU Configuration- 10. [patch] -Minimum Upload Slot- 11. [patch] -Small latency- 12. [patch] -New bandwidth control- 13. [patch] -Overhead compensation (pseudo full rate control)- 14. [patch] -General Code Improvement/Avoid Heap/Code Fix- 15. [patch] -Extended clean-up II- 16. [patch] -MiniDump/CrashRpt II- (CrashRpt.dll) 17. [fix] -New Timer Management- 18. Divers [patch] -Fake Search- (sivka) [patch] -Reconnect on LowID-