Latest generated doxygen documentation: http://www.goran.se....-WARP/doc/html/ (currently, shows wrong version number)
Note: building directly from source requires at least Visual C++ 2010, although it has only been tested with Visual C++ 2012 (SP3).
NetF WARP SVN-121
Several features in this Mod is very beta and are expected to blow up into your face!
- Enables sharing of not yet completed parts which allows for clients with this feature to more efficiently collaborate on downloading rare files
- Dynamic Block Requests, tries to make all sources to complete at the same time
- Delayed NNP, keeps downloading sources a little bit longer in case a part turns out corrupt
- Drop Stalled Sources, cancels stalled or slow downloads when file is about to complete to give way for faster sources
- Redownload only data of banned clients on corruption
- Safe KAD (slows down the spreading of bad KAD nodes)
Credits and Payback
- VIP "Payback" Queue, as the Payback queue but with different bandwidth management
- Balanced Ratio Payback, make clients, who have a ratio higher than your inverse ratio, VIP's
- Smart Part File Push, rebalances between complete and part files based on previous upload
QOS (Vista/7/8 only!)
- Allow Windows and compatible routers to prioritize surfing and VoIP before eMule (upstream only)
- Tries to maximize the amount of data sent in each IP packet by identifying the maximum segment size (Vista/7/8 only!)
All the features of the ESE Mod
- Many tasks have its separate thread to make WARP more responsive
Windows 2000 | No | N/A
Windows XP | Yes | No
Windows Vista | Yes | Yes
Windows 7 | Yes | Yes
Windows 8 | Yes | Yes
Wine 1.5.31 (Ubuntu 12.04) | Yes | N/A
Known Bugs and limitations:
'Only Recover Banned Data' might cause (in theory) looping downloads or complete stalls if corruption occurs and NetF fail the recovery process.
FastKAD ICMP unreachable feature seems not to work with personal firewalls.
Sub-Chunk Transfers is currently only enabled for files smaller than ~1.4GB.
Condensed changelog: (see eMule-WARP_changelog.txt for complete set of changes)
Fix FindExistingHash method Perform validation of sub chunks immediatly after we loaded the part file, if possible Save AICH recovery data to part met file Make UPnP work on interfaces with secondary IPs Don't send file not found when no parts are available and client is SCT aware (behaviour stolen from eDonkeyHybrids) Fix A4AF looping on NNP Allow downloaded AICH recovery data to be forwarded to other clients with same master hash Improve stability and fix crashes related to hashing and flushing. Make 32 bit version to use v110_xp toolset so it runs on Windows XP Extend SCT feature to share and use AICH sub chunk vectors in extent to crumbs Only share sub chunks that been verified with AICH hash Move AICH recovery hashing into part hashing thread Improve compability with other clients using crumbs Fix broken CAICHMap Fix error not found in QOS when socket list got emptied Fix crash when up parts status is not available Do searching of shared files in separate thread Improve MiniMule dialog stability (no deleting of a dialog being created) Fix one liner tooltips only showing the first two character
Download: (Note: Due to experienced stability issues in the 64bit version, I recommend using the 32bit instead)
Binary x86: ed2k://|file|WARP_Svn121_x86_binary.zip|3779565|46720CF378446B242AE3A8EF90E8EAED|h=QWBHDHKVFZNEDK4I5VOHHHAYLKDM7TXP|/
Binary x64: ed2k://|file|WARP_Svn121_x64_binary.zip|5156741|07BAA3DDDE0ED55BB4636D8CD35A974C|h=U25JSVAUDXIKDGRVJKYOHCDCBKH7JIKJ|/
Binary x86: http://www.goran.se...._x86_binary.zip
Binary x64: http://www.goran.se...._x64_binary.zip
*** Older releases! ***
NetF WARP 0.3a (RELEASE)
Changelog: *** NetF WARP 0.3a (RELEASE) Some performance and binary size improvements Make unit test to work for real Fix upload slot handling to better cope with 100Mbit connections Optimize upload file caching Sligtly more effecient looping in RC4 algorithm Added unit tests for Fakealyzer and RC4Crypt Disabled saturation checks in ForceNewClient. Removed commented-out code. Corrected some comments. Increased upload slot limit to 500 (to support Giga bit connections) Removed contact info in version as it's not valid anymore Reactivated unreachable code in CUploadQueue::ForceNewClient Added check for memory availability (if we need to conserve or not) Changed Fakealyzer algorithm slightly to reduce false positives Rearranged code and made some const to improve code size and performance Changed some == and && operators with ^ and |, to improve CPU pipelining Added throw() to some methods to reduce executable image size (should be replaced with nothrow in C++11) Updated code for use with latest SDKs (removed undocumented calls needed for W2K or earlier) Rearranged code in hope to improve CPU branch predictions and cache hits Changed reask times to be more aggressive for files that recently got NNP, when we have few sources Fixed some compile warnings Fixed so upload sessions aren't terminated while we need more slots or just added a new one (<10 secs) Changed so CUpDownClient::CreateNextBlockPackage only tries to reduce memory usage when available memory is really of concern Implemented inlined memcpy's for fixed size operations Optimized CBarShader::FillRect to use cached bitmaps for rendering and reduced conditional statements to improve performance Upgraded project files to VC2012 backwards compatible format Fixed some warnings and a VC2012 compile error Changed EPartFileStatus enum to avoid conflict with recent SDKs. Changed request block trimming Set doxygen to generate call references in documentation Implemented AICH recovery data retries and use of CorruptionBlackBox even when no AICH data is available Use background thread and io priority when hashing files Fixed type warnings and disabled some logging Changed ntohl to htonl for consistency Improved CurruptionBlackBox when no AICH data available Fixed problem with part hashing when only one part Added AICH hashing to the SafeHASH thread Fixed PacketRecovery function Improved FastKad Made connection state (byConnected) volatile Removed hardcoded sendbuffers code. Small fix in CreateStandardPackets code. Preparations for using SCT with AICH blocks rather than CRUMBS. Increased hashing working buffer from 8kB to 128kB. Fixed refreshing of download list window. Added passing of multimedia timer value to socket send functions from UploadBandwidthThrottler, to reduce overhead of calling the timer function at each send. Fixed performance problem in SafeKAD contact tracking cleanup routines. Added partstatus maps for AICH to replace crumbs. Added copying of upload partstatus to download partstatus when same file and more pieces available in the upload partstatus. Added even more consts. Replaced some recurring calls to time/clock functions with a single call and a temp variable Added L1 cache prefetch in RC4Crypt for x64 builds
Binary x64: ed2k://|file|WARP_0.3a_binary_x64.zip|4187463|559D57853571A4C19ED520B3ABF63FDA|h=4PN6FBQKIQTYZ3YY6BT5CGYZKL4GZY55|/
Note! Use the x64 version on 64bit Windows, as the x86 version tends to be a bit sluggish (for reasons unknown); especially at startup.
NetF WARP 0.3a.14 BETA
Changelog: *** NetF WARP 0.3a.14 BETA - Fixed the Fakealyzer code so it works again. Also improved it by taking account the number of Kad publishers. - Improved performance of FastKAD to be comparable in speed to a server search. (optimum performance is met after KAD has been running for a couple of minutes) - Improved TCP-MSS Awareness; Now also checks the local interface in case your MTU is lower than the remote end (fixes problem with anonymizing VPN services) - Added a missing security check in AsyncSocketEx code (thanks dolphinX for pointing that out) - Removed the obsolete HTTP 1.0 choice in proxy settings (thanks dolphinX for pointing that out) - Added new SafeKAD2 feature; Ignore problematic contacts (kind of banning but only for a short time) (doesn't seem to work at the moment) - Added a security check to AsyncSocketEx code and fixed som type casts too - Changed a lot of DWORD in the source to the proper clock_t, time_t and size_t types. To get rid of some typecast warnings, and to make the purpose of a data member more clear - Added a lot of const specifiers in the source to help the compiler generate better code, and maybe to catch some bugs too! - Reordered some code to allow the compiler to generate more compact data structures, which should improve the CPU cache hit ratio - Replaced alot of C-style type casts to the proper C++ ones (this is safer and marks more clearly were there is code that might need fixing) - Fixed alot of compiler warnings - Fixed a rare deadlock in CKnownFile::CreateHash when hashing data in a CMemFile object - Changed the file IO cache mode to random access for most operations to allow the OS to better utilize its resources - Added new part selection algorithm that now also takes the rarity among the current transferring sources into account (currently choses parts on the left when same priority, but that is quite rare) - Added progress and status notification into Windows 7 taskbar (progress status need some polishing) - Attempt to start eMule a second time will now bring the already running eMule client to front
Binary x64: ed2k://|file|WARP_0.3a.14_binary_x64.zip|4339397|6C4269C2D16CDCD47EC9CC2D15B63A03|h=Q2MYM4JB2Z74BISXYCVXXIUBNNYUDFTQ|/
NetF WARP 0.3a.13 BETA
Changelog: *** NetF WARP 0.3a.13 BETA - Based on eMule 0.49c - Replaced the new download security feature in beta 12 with the official implementation - Replaced SafeKAD2 feature with official; Only accept as many contacts as was being asked for *** NetF WARP 0.3a.12 BETA - Based on eMule 0.49b - Added security feature to make eMule downloads to be treated like IE downloads on Windows XP/Vista (NTFS only) - Added qWave QOS support (Vista only) - Added TCP-MSS Awareness; Upload bandwidth throttler uses fragment size gotten from the TCP socket rather than the fixed 1300 bytes value (Vista only!) - Added FastKAD feature; Kad searches progress imediatly when all contacts responded - Added FastKAD feature; ICMP unreachable response from a contact cause a serach to stop waiting for it to respond - Added new SafeKAD2 feature; Only accept as many contacts as was being asked for - Added new SafeKAD2 feature; Search popular contacts first (increases hit ratio, but can technically introduce a weekness that has to be evaluated) - Removed old SafeKAD code - Lots of debugging and optimization
Binary x64: ed2k://|file|WARP_0.3a.13_binary_x64.zip|4074033|73EF506358875814BFB116FE44A3E01E|/
NetF WARP 0.3a.11 BETA
Changelog: *** NetF WARP 0.3a.11 BETA - Added support to launch files directly with WINE Gnome & KDE desktops from eMule. - Fixed a problem with checkin in the code to my private VSN server. *** NetF WARP 0.3a.10 BETA - Dropped PeerCache due to problematic code and that it is rarely/never used. - Switched to SECURE CRT functions in a lot of places. - Made Fakealyzer a separate module and added more color levels. - Changed CrumbMaps to pack 8 status bits per byte. (less memory, more CPU) - Changed UpdatePartsInfo related code to use much less CPU but with a little bit less precision. - Fixed an issue with files >4GB in KAD. - Fixed AsyncSocketEx deadlocks and memory corruption. - Fixed deadlock in debug mode when opening dialog windows. - Fixed a lot of warnings!
Binary AMD64: ed2k://|file|WARP_0.3a.11_binary_amd64.zip|4623991|1E681E44741FEFCD06EC4CD960CDC807|/
NetF WARP 0.3a.9 BETA
Changelog: *** NetF WARP 0.3a.9 BETA - Updated code to compile with Visual C++ 2005 and in 64 bit mode using Vista SDK - Updated to latest AsyncSocketEx code - Changed library set to use the ones compiled by Howe - Added CPU load limiter to main thread - Changed compression levels to better reflect the higher performance of 64 bit machines - Changed KAD search algorithm to better deal with rouge nodes *** NetF WARP 0.3a.8 BETA - Changed KAD to only add nodes that appears useful - Fixed source distribution with some files that wasn't checked in Changelog: *** NetF WARP 0.3a.7 BETA - Added "Track and ban" functionality to KAD - Added message bounce protection to KAD - Changed KAD to only add contacts received throught searches after succesfully managed to receive new contacts throught them - Changed KAD NODE searches to choose a contact at a random distance from the target (gives better distribution of contacts) - Optimized KAD searches to always attempt to find the 8 best contacts - Fixed a bug that could cause NetF WARP to crash when a part is corrupted - Fixed a bug causing some corrupt parts to download forever - Note! There was an unmentioned change in NetF WARP 0.3a.6 BETA that makes the download throttling more stable.
Binary AMD64: ed2k://|file|WARP_0.3a.9_binary_amd64.zip|3638173|E12157F334C4A33B7C3B51A3D833C37D|/
NetF WARP 0.3a.6 BETA
Changelog: *** NetF WARP 0.3a.6 BETA - Based on eMule 0.48a - Added filtering of KAD nodes based on if the ID xor difference between own / source node have more than 6 bytes identical - Added recalculation of own KAD ID if more than 6 bytes are identical - Added modified NetF WARP icon [thanks Typoteus for the original one] - Fixed lookup when not receiving valid KAD recovery data - Fixed some messed up type casts - Fixed a bug with the long term (2hrs) datarate calculation for clients - Fixed some crashes related to incorrect pointer references - Optimized CUInt128 class code (made inline) - Put some often used code inlined
NetF WARP 0.3a.5 BETA
Changelog: *** NetF WARP 0.3a.5 BETA - Added 'Fakealyzer' (Colour guiding on search results) - Fixed a few bugs around the new part/crumb map handling code Changelog: *** NetF WARP 0.3a.4 BETA - Some changes to improve download throttling stability - Fixed the issue with clients getting slots without having any waiting time / score - Fixed a rollover issue with the datarate calculations (Only occured on very fast links) - Fixed a numerous bugs with files larger than 4GB in the code introduced with the Crumbs support - Fixed an issue causing part files to not load after restarting the application - Fixed some issues with downloading incomplete files smaller than one part
Source: ed2k://|file|WARP_0.3a.5_source.zip|4106704|F71E301662E4E791E476805F917230A3| |h=5EEMVGDJL3RIDJQUCZXKPKA5334422HL|/
NetF WARP 0.3a.3 BETA
Changelog: *** NetF WARP 0.3a.3 BETA - Added basic Crumbs support (Only publishing and download. No verification!) - Added the 'Fixed TCP port' feature as configurable through the 'NetF.ini' file (set SymmetricTCP=1 in [NetF] section) - Added a NetF logo in the splash screen [thanks Typoteus] - Added additional IP checks in 'Safe KAD' code before storing a node - Fixed a few merging errors that made some lines go missing in the KAD code
Source: ed2k://|file|WARP_0.3a.3_source.zip|4103485|495878A2750B38FABA6FBD2A96615BB4| |h=FO427UQS3ZBIXKNTQKGJXVB52EWWQHIE|/
NetF WARP 0.2b
Changelog: *** NetF WARP 0.2b - Based on eMule 0.47c - Added disconnection of very slow upload sessions - Removed some 'Safe KAD' code that become redundant with the 0.47c release - Removed the 'Fixed TCP port' feature as it caused problem for some - Changed 'VIP Queue' so VIP upload is always allowed upto 10% of your upload bandwidth even if you have a bad ratio - Changed, files in release cause clients to automatically become VIP's - Fixed a small bug in the server list - Fixed some parts in the upload handling - Note! There was an unmentioned change in NetF WARP 0.2a that disables the friend auto VIP, this change is still in place.
Source: ed2k://|file|WARP_0.2b_source.zip|4018937|696EC07C92305EC169B5636A66E8A6EE| |h=XM6QMZRBPLLZDD34LHCBOUB7CMVEF3GD|/
NetF WARP 0.2a
Changelog: *** NetF WARP 0.2a - Based on eMule 0.47b - Added 'Safe KAD' (filters KAD from unrequested responses (anti-P2P spam), and also limits processed nodes by IP) - Added 'Drop Stalled Sources' (speeds up file completion) - Added 'Anti Fragmenting' (splits KAD search responses so they (hopefully) fit into one IP packet) - Added 'CorruptionBlackBoxFix' (ensure all data been processed before banning) [by Xanatos] - Added 'Dynamic Corruption Threshold' (to avoid mass banning when using Dynamic Block Requests) - Added 'Only Recover Banned Data' (only redownload data that is "known" to be corrupt) - Added 'Fixed TCP port' (may help some clients behind NAT/Firewalls to get HighID) - Added 'Smart Part File Push' (shifts focus between partial and complete files depending on actual UL/DL ratio) - Added 'Slot Limiting' (tries to reduce the number of upload slots) - Added a lot of small optimizations and fixes from the NetF Mod. [by various modders] - Updated 'Flush Thread' to do more of the work in the actual thread Changelog: *** nAM 0.1a BETA - Based on eMule 0.47a - Added 'Delayed NNP' (speeds up file completion when there is corruption or problem with the source finalizing) - Added 'VIP Queue' (good uploaders and friends get their own lane) - Added 'Known Client Bonus' (gives a small bonus to known clients not seen for 12 hours) - Added 'Transfer Rate BlackBox' (hides datarate calculations from programmer) - Added 'Dynamic Block Requests' (speeds up file completion) - Added 'Active Ratio'(must have when using 'Dynamic Block Requests' to prevent excessive downloading) - Added 'Safe Hash' (part hashing is done in separate thread) [by SLUGFILLER] - Added 'ReadBlockFromFileThread' (prevents GUI to become sluggish when uploading) [by SiRoB / MorphXT] - Added 'Flush Thread' (may help a little when doing heavy downloading) [by SiRoB / MorphXT] - Added 'Mod version' (makes it possible to distinguish the client from the official one) - Added 'Anti Shape' (makes credit shaping less profitable) - Fixed memleak! Deletion in lastcommonroutefinder. [by tHeWiZaRdOfDoS]
Source: ed2k://|file|WARP_0.2a_source.zip|4001445|B76799A215EF8B26C4AFF716A768E98E| |h=FPMW3466QZN4MRRQCUHUSFYQVTQPUOKM|/
This post has been edited by netfinity: 27 August 2013 - 08:10 PM