Releases: amule-org/amule
Release list
aMule 3.0.1
Version 3.0.1 — "bugfixes and polish"
2026-06-24
First point release after the 3.0.0 rebirth, and the first cut entirely on the new amule-org/amule repository. 147 merged PRs of post-launch work: a new IP2Country preferences panel, remote-GUI (amulegui) improvements over EC, smarter search, AICH request rate-limiting, a top-to-bottom WebUI / WebServer modernization and security pass, a Weblate-driven translation pipeline, and a one-click release process. No on-disk format or config changes — a drop-in upgrade from 3.0.0.
Highlights
- IP2Country preferences panel. A new Preferences page to choose the GeoIP source — DB-IP, MaxMind, or a custom URL — instead of editing config by hand (#113). IP2Country is now enabled by default and hard-fails at configure if the dependency is missing (#119).
- Remote GUI over EC. amulegui now populates the Server Info tab from amuled (#120), keeps statistics and Kad graphs alive across tab switches (#135), and stops offering preferences it can't actually push to the daemon (#122).
- Smarter search. Modern file formats and corrected extension categories in the type filter (#189), new Length / Bitrate / Codec columns in results (#139), a working Related Files lookup (#154), and global search that works even with Kad disabled (#38).
- AICH anti-abuse + speed.
OP_AICHREQUESTis now rate-limited viaCheckForAggressive(), andLoadHashSetgained an O(1) root-hash → offset cache with a self-healing linear-scan fallback, so AICH recovery on largeknown2files no longer rescans the whole file per request (#186, #191, #193). - WebUI / WebServer reborn. The default web template was dragged out of its 2005 Dreamweaver origins: HTML5 doctype, presentational markup migrated to
style.css, themaquette.dwttemplate and deadMM_*rollover JavaScript removed, favicon refreshed, and the whole thing re-encoded as UTF-8. On top of the cleanup came real features — select-all checkboxes, a working priority selector on the Shared page, download/delete confirmation with file counts, auto-refresh that pauses while rows are selected, button tooltips, and unified styling and size/speed units. - WebUI security hardening. XSS defences (
htmlspecialchars+addslashes, sort-param whitelisting), CWebSocket request-parser hardening and memory-leak fixes, and a sweep of the embedded PHP interpreter (php_core_lib,php_amule_lib,php_syntree,php_native_split) fixing memory frees, base16/base64 handling, and long-standing parser bugs. - Translations via Weblate. Translation now flows through a hosted Weblate instance feeding the repo, with a
--no-wrapcatalog policy and build-time po4a manpage rendering; sixteen catalog-update rounds landed this cycle. - One-click releases. Maintainers can cut a release from the GitHub Actions UI — pick a version, and the workflow tags, builds every platform, verifies the artifact set, and assembles a draft Release (#234).
IP2Country
- New Preferences panel to select the GeoIP source: DB-IP, MaxMind, or a custom URL (#113).
- Enabled by default; configure hard-fails when the dependency is missing rather than silently disabling (#119).
Remote GUI & Platform
- amulegui populates the Server Info tab from amuled over EC (#120) and stops offering preferences it can't push to the daemon (#122).
- Statistics + Kad graphs stay populated across tab switches (#135); the Kad status bar refreshes after
StopKad()(#133). - Theme-aware colours: list-control text (#179) and statistics labels (#128) no longer hardcode
*wxBLACK/BLUE/RED, fixing legibility on dark themes. - Window-state persistence: Messages columns + minimized-window geometry saved (#138); macOS persists list-control settings on Dock → Quit (#141).
- macOS Preferences left-rail tab icons padded (#130).
wxWebSession-cleanup_Exitworkaround applied on all platforms to avoid a shutdown crash (#159).
Search & Networking
- Global search works with Kad disabled (#38); Windows EC search fixed by using
wxUIntPtrform_currentSearch(#39). - File-type filter: miscategorised extensions corrected and modern formats added (#189).
- Result columns: Length, Bitrate, Codec added (#139); Directories column moved to the end (#142).
- Related Files lookup fixed; TCP/UDP server flags shown in Release builds too (#154).
- EC search lifecycle: the prior Kad search is stopped when the EC client starts a new one (#36); late ed2k server replies dropped after the client switches to Kad (#37).
SO_REUSEADDRon the UDP socket so it rebinds cleanly after suspend/resume (#121).- Server Info log cleared at the transition source on ed2k disconnect / server switch (#163, #164).
- UPnP ASCII
tolower()scoped underLC_CTYPE=Cso non-C locales don't corrupt device matching (#208). - Full path logged when an ed2k link collides with an existing file (#172).
AICH & Hashing
OP_AICHREQUESTrate-limited viaCheckForAggressive()andLoadHashSetmade O(1) through a root-hash → offset cache (#186).- True linear-scan fallback when the cached offset is stale (#191); the cache self-heals on a successful rewind (#193).
- UDP file-info handler short-circuits when the requesting client is banned (#192).
WebUI & WebServer
The biggest theme of the release by volume — driven mainly by ngosang, with the embedded-PHP work by RealGreenDragon.
Template modernization:
- HTML5 doctype adopted; layout glitches from the switch corrected (#110, #204).
- Presentational HTML attributes migrated to semantic CSS — text/element attrs (#95), table/iframe attrs (#102), inline
<style>blocks consolidated intostyle.css(#89), JS nav rollovers replaced with CSS:hover(#92). - Dead Dreamweaver scaffolding removed: the
maquette.dwttemplate (#88),MM_*JavaScript extracted then deleted once shown to be no-ops (#90, #93), staleonLoadtree calls instats_tree.php(#111), and small deprecated CSS/HTML leftovers (#105). <script>blocks moved into<head>(#84); structural HTML errors corrected (#87); straystyle.cssbrace removed and formatting normalized (#78); shared-files page re-encoded as UTF-8 with English alt-text (#80); higher-resolution transparent favicon (#112).
New WebUI features:
- Priority selector wired up on the Shared page (#210).
- Select-all checkbox on file tables (#212); auto-refresh pauses while checkboxes are selected (#213) and avoids the form-resubmission prompt (#230).
- Download/delete actions confirm with a file count (#214).
- Search-page controls improved (#215); button tooltips and clickable images (#216).
- Unified button styles (#217), form controls (#206), and file size + speed units (#218); footer-bar background (#219); logo links home to Transfers (#209); clearer dropdown option labels (#207); footer "Download link" refreshes the main page (#81).
WebUI bug fixes:
- Sorting downloads by sources never worked — fixed (#75).
- Wrong MByte/GByte multipliers in the search size filters corrected (#76).
- Division-by-zero guard on the downloads-page percentages (#83).
- Login error message now actually shown, and made readable (#82, #96).
- Static
.css/.jsserved to unauthenticated clients so the login page styles correctly (#97). - amuleweb honours the per-user template dir when spawned by the GUI (#72); copy-pasted preferences code removed from the log page (#74).
- ed2k links can be added via the footer links form (#145); search results cleared across cycles and on new search (#33).
Embedded PHP interpreter:
- Memory freed correctly when casting array values (#108) and for
for()header expression lists (#109). OtherFunctionsbase16 decode, base64 footer append, duplicate.asfentry, and mp3 comment handling corrected (#30).- Interpreter sweep:
php_native_split(#146),php_core_lib(#150),php_amule_lib_standalone(#151),php_amule_lib(#152),php_syntree(#153), with follow-ups (#155, #156).
WebUI Security
- XSS hardening:
htmlspecialchars+addslashesbuiltins added and remote-controlled strings escaped (#106); the searchsortparam whitelisted before being stored in the session (#107); broad WebUI/WebServer backend hardening (#91). - CWebSocket request parsing hardened for header casing, body bounds, cookie conversion, and MinGW portability (#27, #28); CWebSocket memory leaks fixed and review findings addressed (#29).
Translations & i18n
- Translation moved to a hosted Weblate workflow feeding the repo; the README points contributors there (#71). Catalog rounds: #57, #66, #100, #123, #147, #160, #165, #170, #184, #187, #199, #200, #202, #211, #229, #235; Brazilian Portuguese also refreshed by hand (#7), and the IP2Country strings translated into Italian (#129).
--no-wrappolicy adopted for the app catalogs (#61) and extended to the manpage.pofiles (#67).- Non-ASCII output fixes: the logger writes stdout/stderr via
utf8_str(#42); locale is initialised so non-ASCII strings stop mangling under the default C locale (#205, fixes #203); a real newline is used in a comment-dialog tooltip (#70). - Windows
SPANISHINTERNATIONALrouted topo/es.po(#64).
Build System & CI
- One-click release workflow from the Actions UI: tag → full matrix → artifact-manifest gate → draft Release (#234). Repo bootstrap: issue/PR templates (#12). The
manpages-syncCI check disabled where Weblate PRs broke it (#68). cryptopp-modernaccepted by the build, with packager-friendly flags (#169); versionedlibatomic.so.1accepted infind_library(#176).BUILD_TESTINGoff by default (#49); options.cmake typo/casing cleanup (#50); apofilesdependency added to every NLS-aware executable (#98).- LLP64 portability: unsafe uses of
longcleaned up (#65). - Toolbar ID collision with manually-added IDs resolved (#52);
SearchDlgFALSEmacro replaced withfalse(...
aMule 3.0.0
3.0.0 — The "alive again" version
Hi! We are back.
This is the first major release in 5+ years (since 2.3.3, 2021-02-07). Headline changes are dramatic throughput improvements, full build-system overhaul, modernized dependency stack, native binaries for Linux / macOS / Windows, and a broad legacy-API cleanup.
We went through hard times, we missed programmers and maintainers. There were doubts whether aMule could reemerge. People called aMule a dead project. But eD2k still has users, and those users need working software. So here we are — back to bring you the best eD2k client.
One unfortunate thing happened: Gonosztopi, one of aMule's most prolific devs, who has been the maintainer for many years, is missing. We have no news from him (we hope you are well, man!). And he was the only owner of the original GitHub repo. The other members left in amule-project do not have enough rights on the organization to properly manage the project. So we were forced to create a new one. New org, new repos, but the same folks.
You can find the new aMule site here.
You will find everything there: the home page, complete documentation, download links, news and links to the source code.
Highlights
- Throughput rewrite. Disk I/O moved off the main thread, ASIO/EPOLLET races fixed, throttlers replaced with proper token-bucket limiters. Peer-to-peer download on the same hardware sees ~100–380× speedups across macOS / Linux / Windows over 2.3.3, plus aMule 3.0.0 sustains ~4.8× the upload throughput of eMule 0.70b on Windows. See Performance for the full matrix and per-PR breakdown.
- Both throttlers (
MaxUpload,MaxDownload) were also broken pre-fix —MaxUpload=0capped at "current rate + 5 KB/s",MaxDownloadwas a ratio controller rather than a literal cap. Both rewritten (#461, #491). Important user-facing bug fixes, but secondary to the headline numbers. - Big-library / big-shareset scaling. Follow-up wave targeting nodes with 100 k+ shared files: per-file EC payload caches (amule-project#725, amule-project#736), skip-unchanged EC updates (amule-project#727), local-peer ZLIB bypass (amule-project#728), and a string of O(N²) → O(N log N) / O(1) algorithmic fixes across
SharedFileList,SharedFilesCtrl,KnownFileList,wxListCtrl,ExternalConn, and amuleweb — the WebUI / amulegui stay responsive even on libraries where the previous GUI took minutes to redraw. - CMake replaces autotools. Single build system, modern toolchain — minimum CMake 3.10, minimum wxWidgets 3.2.0.
- Native binaries for every major desktop. AppImage (x86_64 + aarch64), Flatpak (x86_64 + aarch64), macOS Universal2 .dmg (now bundling
aMuleGUI.appalongsideaMule.app, #529), Windows portable .zip and NSIS installer (x64 + ARM64, amule-project#740). First-run desktop integration prompt for AppImage; cross-platform autostart-on-login toggle (amule-project#744). - Auto-rescan of shared folders.
wxFileSystemWatcher-driven (amule-project#591), with recursive vs explicit-share intent split (amule-project#606) and coverage of Incoming + per-category Incoming dirs (amule-project#743). - HTTPS works again.
CHTTPDownloadThreadrewritten on top ofwxWebRequest; the hand-rolled stack had silently stopped working against modern TLS. - Kad parallel searches with alpha-frontier widening.
- MaxMindDB replaces deprecated GeoIP for IP→country.
Performance
Throughput work landed across April 2026. The bottom-line cross-platform
numbers first, then the per-PR contributions that produced them.
Cross-platform end-to-end (2.3.3 vs 3.0.0)
| Leecher platform | 2.3.3 (sustained) | 3.0.0 (sustained) | Speedup |
|---|---|---|---|
| macOS (Apple Silicon, Mac Studio) | 0.35 MB/s | 135 MB/s | 381× |
| Linux ARM (UTM VM, Ubuntu 25.10) | 0.34 MB/s | 117 MB/s | 345× |
| Windows ARM (UTM VM, Windows 11) | 0.36 MB/s | 39 MB/s | 107× |
Sustained over a 90 s window, single LAN peer downloading a 30 GB file
from an x86_64 Linux seeder running the same aMule version under test.
Per-platform breakdown of the seeder-side vs leecher-side contributions:
| Platform | 2.3.3 | + seeder fix | + leecher fix (3.0.0) |
|---|---|---|---|
| macOS | 0.35 MB/s | 30 MB/s | 135 MB/s |
| Linux | 0.34 MB/s | 20 MB/s | 117 MB/s |
| Windows | 0.36 MB/s | 6.8 MB/s | 39 MB/s |
The seeder-side contribution (PR #451 CUploadDiskIOThread + ASIO fixes)
dominates everywhere; the leecher-side contribution (#454 partfile-write
offload + #484 throttler-wake fix + #491 token-bucket cap) stacks another
~4–6× on top.
vs eMule 0.70b (Windows · same UTM hardware)
| Direction | eMule 0.70b | aMule 3.0.0 | Speedup |
|---|---|---|---|
| Upload (Windows seeds → Mac leecher) | 22 MB/s | 106 MB/s | ~4.8× |
| Download (Linux seeds → Windows leeches) | 20 MB/s | 39 MB/s | ~1.9× |
Upload
- #451 — eMule
CUploadDiskIOThreadport. Disk reads + ed2k packet construction off the main thread, RC4 stream-desync race fixed in the ASIO layer, EPOLLET spurious-wakeup fix inHandleRead, adaptive per-slot packet sizing (10 KiB → EMBLOCKSIZE). Dominant contributor to the upload gain. - #461 —
MaxUpload=0is now literal unlimited. The legacy code setallowedDataRate = current_rate + 5 KB/sper iteration — a tracking cap that pinned the uplink at a fraction of capacity on any link above a few hundred KB/s. - #436 — Speed-limit fields widened from
uint16touint32. Legacy 65,534 KB/s (~524 Mbps) configuration ceiling gone; gigabit-class links can now be configured. - #463 — Bandwidth-cap UI. Spin button ceiling 19,375 → 1,000,000 KB/s; field width 100 → 140 px so the
+button no longer clips off on modern themes. Slot Allocation cap 100 → 100,000 KB/s. - amule-project#898 — Default
SlotAllocationraised from 2 kB/s to 10 kB/s. The previous default (set in 2005) fragmented uploads into so many sub-slot slices that fast peers were rate-shaped down to a trickle.
Download
- #454 —
CPartFileWriteThread. Disk writes for downloads moved off the main thread. - #484 — Throttler-wake fix.
UploadBandwidthThrottler::Entry()adaptive backoff dozed for 5–25 ms between control-queue pumps, stalling the request→response loop. Empty→non-empty wake gate added on the control-queue path, plus IOCP-nativeasync_read_someon Windows,wxMutex→std::mutex, and decouplingm_MaxBlockRequestsfrom per-packet block count. The biggest win on Windows specifically. - #491 —
MaxDownloadis now a literal byte/sec cap. The legacy code was a closed-loop ratio controller that nudged each peer's rate ±5%/tick relative to its own current speed, soMaxDownload=20000(20 MB/s) shaped traffic toward whatever the aggregate converged on — generally well below configured. Replaced with a global token bucket (CDownloadBandwidthThrottler) enforcing the cap to within 2.5% across platforms. - #498 — Per-part hash verification deferred to a dedicated worker thread (only runs when the file isn't actively transferring). Follow-ups #499, #500.
Other
- #467 — ASIO handler binding modernised.
boost::bind→ C++11 lambda,strand.wrap()→bind_executor(),deadline_timer→steady_timer,null_buffers→async_wait(wait_read). Fixes the long-standingboost::bindplaceholder warning. Minimum Boost bumped 1.47 → 1.70. - #504 — Fast-path bare-filename comparison skips
wxGetCwd().
Big-library / big-shareset scaling
A follow-up wave targeting nodes with 100 k+ shared files, where the daemon ↔ GUI / WebUI / amuleweb traffic and several internal data structures were quadratic in the shareset size:
- EC payload caches. Per-file
ed2k://link and partmet basename cached onCKnownFile/CPartFileso EC enumeration stops rebuilding them on every tick (amule-project#725). Per-file byte cache covers the FULLGET_SHARED_FILES/GET_DLOAD_QUEUEpaths so wire-marshalling cost drops by orders of magnitude on huge sharesets (amule-project#736). - EC skip-unchanged. Per-file change tracking infrastructure threaded through every field-change site so
INC_UPDATEonly re-sends what actually moved, with a backward-compatible partial-update protocol opt-in for amuleweb (amule-project#727 — landed as a 6-commit series).MarkECChangedgaps closed for paused / user-action setters. - Local-peer EC bypass. ZLIB compression skipped on local peers (amule-project#728), receiver limit raised to 256 MB, and the locality decision later moved to the client side with a user override checkbox /
--force-zlibflag (amule-project#840 — handles the WireGuard-as-LAN case). - O(N²) → O(N log N) / O(1) algorithmic fixes.
SharedFilesCtrlbulk-update API skips per-row repaints duringClearED2KPublishInfo(amule-project#561, #2bf9b8f34).SharedFileListkeyword indexing inReload(amule-project#566).known2.metAICHSaveHashSetdedup made O(1) (amule-project#581).known.methash-collision dedup on Init dropped to O(N log N) (amule-project#584).wxListCtrl::FindItem(data)O(N) → O(1) via user-data hash map (amule-project#614).ExternalConnfile-list enumeration snapshotted to avoid O(N²)GetFileByIndexloops (amule-project#687).- amuleweb
array_push_backmade O(N) via cached scan hint (amule-project#689). KnownFileListindexes its size-map by(size, mtime)instead of size alone to cut false-positive collision-dedup walks (amule-project#593).
- Disk I/O.
CFilegains a 64 KB userspace write buffer to coalesce metadata-save syscalls (amule-project#573); the buffer was subsequently moved off the stack onto the heap so it survives musl's 128 KiB pthread stack, and an internal recursive_mutex was added to serialise buffer + fd access against the concurrent-corruption race surfaced on Alpine (amule-project#576).SavePartFileswitched to atomic-rename (amule-project#670) and gated on an in-memory dirty flag so periodic ticks only touch disk when something actually changed (amule-project#671). Upload-stats persistence on 10-min heartbeat when only stats moved (#e8363bf42). - Memory bounds....
2.3.3 - 2021-02-07
Release name: The 'delayed too many times, but still not too late' version
alesnav:
- Permit amuleweb in an iframe
Dmitry Smirnov:
- Added mimetype-hanlder to amule.desktop originally in debian
gaffatape:
- Workaround for bug in wxWidgets causing aMule to crash on closing the last search tab
GonoszTopi:
- Fix restoring toolbar orientation on 'Cancel'
- Features ported from eMule:
- Find best keyword for Kad search (0.49c)
- Various fixes to gdlib detection
- Support for compiling aMule with wxGTK under Cygwin
- Various small fixes to the MacOSX packager script
- Workaround for wxWidgets bug #17740 (Wrong path used to search for translations), fixes GitHub issue #74 (.mo files for translation are not loaded if amule is built to install to a prefix other than /usr (e.g. /usr/local).)
- Portability fixes
- Handle the deprecation of std::auto_ptr in C++11 by using std::unique_ptr instead.
- Fix linking with readline if configure uses caching
- Remove 'web search' search type as there are no search engines to support
- Readline related fixes and improvements in amulecmd:
- Set the proper application name (amulecmd) for readline. This allows conditional parsing of the readline configuration files (like ~/.inputrc). See the GNU Readline Library documentation (section 1.3.2) for more details.
- Set up command completion on pressing the TAB key. Since command names are case insensitive, completion uses the default capitalization (shown by the 'Help' command). Completion also works for the 'Help <command name>' construct.
- Pressing <Enter> on an empty line won't give 'Syntax error!' anymore, the empty line is silently ignored.
- Flex and bison generated files will no longer be regenerated occasionally on the user's system.
- Proxy authorization fixes
- Explicitly disable support for autoconf >= 2.70
- Fix compilation using C++17
jEsuSdA:
- Added papirus theme
KeyofBlueS:
- Fix compilation with newer bfd
kinote:
- Fix integer conversions in amulecmd
persmule:
- Fix sharing directories with non-ASCII names with aMule daemon
- Fix potential invalid detection for empty wxCharBuffer
Phoenix:
- Fixed libupnp API breakage.
poplite:
- Fixed issue #99 by properly initializing wxSockets in the remote gui
Sandro Tosi:
- remove garbage from gdlib originally in debian
sc0w:
- Fixed compilation with upnp-1.8
- C++11 fixes
- Only handle mouse-up events if the mouse-down event happened on the same tab
- Fix issue #114: Switching search result tabs doesn't work
- Fix a number of build warnings
- Fix a few memory leaks
- Various small code improvements
- Add option to show notifications when finished downloading
- Fixed issue #54: the minimize button doesn't work propertly when "minimize to tray icon" is activated on preferences
- Fixed issue #59: start minimized doesn't work
- Fixed issue #225: amule shows wrong 100% when files aren't downloaded
- Show speeds in MB/s instead of kB/s when appropriate
Sebastiano Pistore:
- Unified translation file headers to make it easier to identify contributors
Thibaut Lassalle:
- Add README.md
Tom Li:
- OScopeCtrl.cpp: use Refresh() instead of ProcessEvent() to refresh the UI, fix issue #146.
Tommy Jerry Mairo:
- Fixed issue #119: API mismatch with Crypto++ 6.0.0
Vollstrecker:
- Initial support for detecting pkg-config based gdlib versions
- Compilation fixes for VS2015
- Fixed compilation with wx-3.1
- Added cmake-support (Linux and Windows tested)
- Dropped support for cryptopp versions before 5.5
xinhuang:
- Fix crash when shared files changed on Shared files tab
2.3.2 - 2016-09-16
Release name: The 'don't close tabs' version
circulosmeos:
- amuleweb cookies read behind a "lowercase" proxy (http/2 compliant)
Dan64:
- Read AICH root hashes from binary eMuleCollection files
gnazio:
- Fixed configure of libpng when sh != bash
GonoszTopi:
- Allow any kind of file links in collections
- Make UPnP log go to the appropriate category (#1681)
- Use the C++ compiler to check for features we're about to use in C++ source files (#1572)
- Adapt configure to handle subversion repository clones in mercurial and git
- Fix bfd detection for systems missing -liberty
- Add support for 'canceled.met' to the fileview tool
- Implemented the missing 'show shared' command in amulecmd
- Fix check for a valid locale config entry being done after the locale has been set
- Fix Crypto++ detection routine happily using build library for host when cross-compiling
- Fix bug #1711: Kad Info tab should display my own user ID
- Fix wrong sized images in the priscilla skin
- Fix bug #1423: Add the possibility to not create sparse files
- Fix bug #1743: crash when importing part files
- Review assertions in the eD2k and Kademlia code and remove those that could be triggered by a malformed incoming packet
- Fix a possible uninitialized variable access and a definite memory leak in the UPnP code
iz0bbz:
- Fix WinSock library version detection with MinGW-w64
- Fix compilation with MinGW-w64
kam:
- WebServer serves .json, .manifest and .appacache files
Mr Hyde:
- Fix "Disable computer's timed standby mode" for MacOS 10.9 Mavericks
- Compilation fix on Linux Slackware 64bit and MacOS 10.9.4
- Fix configure on Mac
sc0w:
- Add ability to use middle-click to close search tabs
Stu Redman:
- Display hashing progress in progress bars
- Assertion from background thread now prints a message and not just closes the app
- Backtrace (crash or assertion) is written to logfile
- Fix: disabling protocol obfuscation broke Kad and triggered assertions
- Fixed "Prompt on exit" preference
- Fixed country flags for Turkish localization
- Fixed loading of zipped IP filter (#1674)
- Fixed showing of shared files to other clients
- Fixed assertions in CFormat("%p") on 64 bit OS with wx 2.9
- Boost Asio can now be used as networking layer instead of wxWidgets
- Fixed memory leak when AICH hashing already known files
- New download links for server list and nodes.dat (with gav616 and xosevp)
- Projects for Visual Studio 2013 (which is now the preferred Win32 compiler)
- Fixed build with wx 3.0 (including STL build)
tgragnato:
- Fixed ASIO compilation with libcxx
Tianming Xie:
- Fix for debian bug #795061: There is no rule to generate Scanner.h
2.3.1 - 2011-11-11
btkaos:
- Show if a client shares its file list in client view
freddy77:
- Various optimizations of memory usage
- Access files for reading/writing via mapped memory (with custom exception handling)
- Fix download of files > 1GB on ucLibc
- Fix autogen.sh under Ubuntu
- Fixed TCP obfuscation negotiation
Gnucco:
- Add option to ed2k link parser to display links in emulecollection
- Added test case for the CTag class
GonoszTopi:
- Various fixes to new colour code
- Allow user to select display of transfer rates
- Extendable list-control settings save/load code
- Drop assumption that last search keyword is a filename extension if length == 3
- Instead of counting unicode characters in a Kad search now we use the UTF-8 byte count to determine whether the keyword is allowed or not
- Use actual page size in mmap calls instead of a randomly selected number
- Fix custom Crypto++ path not shown by configure
- Make <IMG> tags in aMuleWeb HTML 4.01 conforming
- Fix HTTP proxy authentication
- Use -static for the tests too, when a static binary is requested to prevent configure succeed where compilation would fail
- Configure now checks only for the tools and libraries needed for the selected components
- Fix aMuleGUI looking for undefined switches
- Fix the "blinking" in aMuleGUI's status line
- Better reporting of Kad tag reading/parsing errors
- Fix the unittests
- Some code reorganization
- Features/fixes ported from eMule:
- Implement an alternate method to estimate the real user count in the Kad network, which is not based on our local routing table (0.49b)
- Add double quote to word-boundary characters (0.50a)
- Drop support for Kad 1.0 (0.50a)
- Try to find the closest node alive (0.50a)
- Fix a bug in Kad which would not enforce the search tolerance in certain cases (0.50a)
- Change Kad to work better in small LANs (0.50a)
- Remove the unimplemented "Create backup for preview" option
- Add variables to preview command like in user event commands
- Disable 'Show all comments' in the file's context menu if there are no comments/ratings available
- Enable renaming (completed) shared files
- Proper handling of %-escaped UTF-8 sequences in ed2k:// URIs
- Drop support for nodes.dat version 0
- Fix issue #1621: 'ed2k links containing unicode characters will cause the filename to be truncated'
- Fix issue #1634: Change charset to UTF-8 in amuleweb template
- Fix installation with denoiser enabled
- Add support for automake's --enable-silent-rules feature (original idea by Gerd78)
- Improved CFormat and enabled reordering of arguments for translators
- Several fixes and improvements for the sanity checker script
- Fix bfd detection
- Add year bumper script
- Move statistics from config to statistics.dat
- New preference setting to show application version on the title
- Fix man page installation for several languages
Greek:
- Part number is now an extra column in the download list
- Improvements to preferences dialogs
- Redesign skin selection
Grunt:
- Sort downloads by time remaining now has shortest time on top and unknown on bottom
jolz:
- Fixed file locking between ed2k and aMule on Windows
Kry:
- Reworked user interface, separating download and upload views
- Fix list double-buffering causing artifacts on refresh and when showing a context menu.
- Fix indexes after removing GUI items
- Fixes to Windows build
- Allow compilation with wxCocoa
- Replace Color.h by new class implementation MuleColour
- Lower class overhead and use two-level cache for pens/brushes
- Added aMuleCMD project for MSVC.
- Fixed UnitTests and aMuleCMD in MSVC to use _CONSOLE subsystem.
- Preferences changes
- Fixed problem with uploading to lowid clients (szsuj)
- Sorting lists (automatically or by user interaction) doesn't clear selection anymore
- Fix client version display for MLdonkeys
- Added Xcode project for MacOSX build
- Fixed the centering of icons and text
- Enable vertical toolbar orientation on WIN32 too
- Option to resume next file alphabetically, keeping in mind categories and priority
- Fixed crash when column gets removed
- Show remote filename in source list
- Fixed crash in upload thread on shutdown
- Dynamic adjustment of threshold for rarity of download files
- Option to prevent the computer from sleeping while downloading in MSW and MacOSX >= 10.5
- Mac fixes
- Fixed "out of memory" crashes caused by wxWidgets - so wxWidgets 2.8.12 is required now!
- Show warning dialog if "Change language" is selected and no languages are installed
- Added backtrace support for MacOSX
- Add locale support in the mac bundle with updated scripts (translations are now supported on MacOSX builds)
lfroen:
- php prefix for lex/yacc
LittleAbacus:
- Search results can now be sorted by "knownness" state.
marcell:
- Fixed issue amule-project#892: Show data sizes >= 1.0 GB with three digits.
- Fixed search 'Stop' button not stopping Kad searches.
- Check Kademlia search results against original criteria.
- Allow Kademlia searches with repetitive keywords.
- Allow adding current chat partner to friend list from tab's context menu.
- Allow not downloading files via HTTP if the requested file is not newer.
- Removed white boxes around file rating icons
- Implemented public shared directory names only containing actually shared subfolders.
morph:
- Patch to uniform and fix minor errors on man pages
myth:
- Feedback from shared files - add number of clients on queue.
- New stats server
Phoenix:
- Fixed assertion when trying to preview files smaller than 256 K.
Skolnick:
- Fixed autogen.sh for Bourne Shell
Stu Redman:
- Sort source list on opening and add file name to A4AF files
- MSVC: optional GeoIP support
- Faster progress bars with less overhead (without pens/brushes)
- Show log messages in remote gui
- More info in the Kad tab
- Improved gaplist performance
- Ported chat captchas (receive and send) and "Advanced Chat Spam Filter" from eMule
- Allow download of multiple search results if search list is sorted by status (thanks to DarkNRG)
- Fixed CFile::SetLength for large files
- Reduce file handle usage by closing part files after idle time
- Speed up selection of shared directories with many subdirectories, fixed red marking of folders with shared subdirectories
- Ban clients that uploaded bad data (based on CorruptionBlackBox from eMule)
- Support wxWidgets 2.9
- amuled for Windows (with wx 2.9)
- Friends get recognized in the friend list control even if their IP has changed
- Don't kick friend upload, don't kick release prio uploads (unless they take more than half of the slots), and don't kick anybody else unless necessary (with GonoszTopi)
- Fixed crash in remote gui when aMule exits
- Added more media file types from eMule
- Allow the user to cancel the app if Temp/Incoming is not found
- Show downloads as shares in remote gui
- MANY fixes/implementations for amulegui
- amuleweb for Windows (with wx 2.9)
- Show connected friends in blue in the friend list
- Show total upload/download ratio in statistic tree
- Fixed category administration in remote gui
- Implement directory preferences in remote gui
- MSVC build for alcc, wxCas
- Fixed errors and crashes on parsing ED2K links with '/' in them
- Configure option --enable-fileview
- Bypass amulegui connection dialog with switch -s / --skip
- Fixed Core Timer
- Allow passing of ED2K links by command line to aMule, aMuled and aMulegui, making ed2k program obsolete
- Don't ignore current category in amulegui when pasting a link
- EC tools (amulegui, amulecmd, amuleweb) can use a local config dir now
- Fixed crash in file system detection in Solaris
- Fix: window size/position didn't get saved on some systems
- More command line options for aMulegui
- Allow webserver autostart on Windows
- Fixed crash in "Out of space" user event handler
- ALCC prints links to stdout now instead of stderr
- Fixed memory exhaustion on high speed uploads Thanks to RRM for endless patience!
- Fix: Language English was not recognized and so reverted to "System default" at any change
- Fixed printf output (unicode2char()) on consoles incapable of UTF8
- Keep a list of all canceled files (canceled.met) and show them in magenta in the search list
- Update status/color of search results on events from outside the search window (like download started from EC) and in amulegui
- Enable update of IP filter list through aMulegui and aMulecmd
- Enable setting of "Check for new version on startup" through aMulegui
- Fixed crash in CClientList::ProcessDirectCallbackList that had been around for ages (hopefully)
- Fixed size of large files in aMuleweb's search results
- Show completed downloads in aMulegui
- Fixed international file names on Windows
- Fixed hangup of EC connection in aMulegui
- Fixed category deletion in aMuled
- Fixed several crash bugs in Webserver
- Improved memory usage, load time and speed of IP filter
- Load IP filter in the background on startup
- Show when a Kad search is finished in aMulegui (remove '!')
- Fixed "pause/cancel/resume all" in aMulecmd
- EC ZLIB compression can now be turned off in remote.conf with EC/ZLIB=0
- Terminate HTTP downloads on exit
- Projects for Visual Studio 2010
- Fixed crash in http download
- Speed boost for reload of shared files with large list of known files
- Resolve MSVC compilation problem with separate strings in GUI
- Fixed splitter bars in download and share view
- Allowed creation of ED2K source links in KAD-only mode
- Make friendlist in chat window resizable
- Removed lag (caused by language pref) when opening preferences dialog
- "Swap all A4AF to this (auto)" doesn't block sources with no needed parts any more
- Don't lock up in an infinite loop if all servers are not resolvable or blocked by IP filter
- Clients now always get uploaded a full chunk (removed setting)
- Tell the user that changes of EC settings require a restart
- Deleted and readded download now get shared
- Speed improvement for upload queue, and clients never ...
2.2.6 - 2009-09-16
GonoszTopi:
- Fixed obfuscated server UDP communication.
- Fixed cross-endian Kad node verification.
- Fixed name conflict in builtin PHP parser.
- Fixed configure finding unwanted Crypto++ installations.
Marcell:
- Properly update transfers tab's bottom pane's title.
mr_hyde:
- Fixed a bug in detecting and using the fallocate() function.
Sam Hocevar:
- Now really fixed that security issue.
Stu Redman:
- Fixed HTTP download if server transmits no content-length
- Fixed several cases of amulecmd printing zero on big endian machines
- Fixed amuleweb crashing on tiny downloads
- Added version resources to MSVC binaries
- Fixed wrong search text in search dialog after deleting a tab
- Fixed download limit in amuled (which was 50% of what was set)
Wuischke:
- Fix amuleweb progress bar display for files > 4GB
Special Thanks To:
- stefanero and his bleeding-edge system
2.2.5 - 2009-05-16
GonoszTopi:
- Fixed possible security hole when previewing filenames containing single quotes
- Fixed default webserver port
Stu Redman:
- Fixed upload of the last part of a file which he broke in 2.2.4
- Fixed setting speed limits from remote gui's tray icon
Special Thanks To:
- CroMag for pointing out the upload problem
2.2.4 - 2009-04-03
freddy77:
- Plugged various memory leaks.
FreeToGo:
- Add comment to desktop file to allow autostart in Gnome
gabrielix:
- Compilation fix for gcc-4.3.2.
Gaznevada:
- Compilation fix for IRIX.
- Fixed file handles on IRIX.
GonoszTopi:
- Fixed compilation of Format.cpp for some platforms.
- Fixed wxWidgets socket library initialization.
- Fixed partfile importer destroying imported data.
- Separated GUI and core code in partfile importer, thus fixing occasional crashes/hangs.
- Fixed GeoIP-enabled builds crashing on 64b boxes.
- Added another common URN ID to the Magnet link handler.
- Switch to the 'busy' cursor while bringing up the preferences window.
- Ported several Kademlia fixes and improvements from eMule0.49c:
- Fixes on handling incoming packets with port zero.
- The Kad UDP firewalltest now asks several clients for its external port, avoiding to get a wrong "Open" state on NATs which change the source port on each request but behave like a Full-Cone otherwise.
- Made sure a received Kad routing answer doesn't contain more contacts than requested. [Xin Sun]
- Kad no longer allows more than 2 IPs from the same subnet within one routing query reply (except on LANs).
- Kad routing query contacts are checked against the routing table.
- Implemented non-interactive mode for amulecmd/amuleweb.
- Fixed detection of crypto++ library for versions >= 5.6.0.
- Fixed saving wrong window position when exiting while minimized.
- Fixed rare case when we tried to connect to a LowID client.
- MSW: detect WinSock API version needed by GeoIP.
- Fixed libbfd sometimes depends on libintl, with help from PacoBell.
iz0bbz:
- Fixed static linking with GeoIP on MinGW/MSYS.
- Fixed detecting GeoIP library when building for MinGW.
- Compilation fix for GeoIP-1.4.6.
Stu Redman:
- Fix crash on global search on Windows
- Fix splitter bar position in transfer window not restored properly
- Caught some insane upload requests
- Fixed finished files sometimes getting rehashed (thanks to Skolnick)
- Added restart warning if the ED2K network was re-enabled.
- Fixed Windows lag when opening preferences dialog
- Fixed creation of ED2K links with AICH (thanks to Archmage)
- Remote Gui shows a dialog box with a reason on connection failure
- Changed fix for wrong ordering/placing of clients in the download window so that sort order is again like in 2.2.2.
Wuischke:
- Add Asturian language
- Updated INSTALL file
- When EC authentication fails, close connection before we send the response.
- Tell the user why the EC connection failed.
Special Thanks To:
- wires for the strenuous testing on 64-bit
2.2.3 - 2008-12-28
Alfred:
- Fixes to compile with Sun Studio 12.
Gerd78:
- Fix for linking with a static bfd library.
GonoszTopi:
- Fixed improper handling of EC connection failures.
- Fix for shells not properly handling empty lists.
- POSIX fixes in shell code.
- Made not finding GeoIP non-fatal.
- Check if --enable-geoip-static can be fulfilled.
- Fixed loading of zipped ipfilter files. Thanks to CtrlAltDel for the investigation of the problem.
- Fixed alc progress bar for files >4GB.
- Fixed #1056: amulegui: incorrect results when searching with min size >= 4GB
- Disable automatic sorting of dowload list while there is a pop-up menu or file detail dialog displayed.
- MinGW compilation fix.
- Fixed GTK crash on closing search tabs. Thanks to btkaos.
LittleAbacus:
- Support multiple selections on CSearchListCtrl::OnMarkAsKnown().
Skolnick:
- Fix alc and alcc to work with files bigger than 4GB
Stu Redman:
- Fix crash when last category was removed with a completed file in it
- Fix wrong ordering/placing of clients in the download window
- Fix available fileparts display for large files
- Don't open server UDP socked if ED2K is disabled
- Reordered preferences, disabled ED2K/UPnP prefs if ED2K/UPnP is disabled
- MSVC: solution for MSVC 2008 Express edition, project for ed2k and fileview
- Fix wrong file download rates in transfer window
- Windows: fix broken core timer, use precise tickcount and so fix download limit
Wuischke:
- Add checks to cas to prevent segfaults
- Fix wxCas save file dialog for file types
- Fix a buffer overflow error in cas
Special Thanks to:
- btkaos and CtrlAltDel for their invaluable help in tracking off bugs.
2.2.2 - 2008-08-08
bomj:
- Patch for alcc to improve usability
Gaznevada:
- implement getopt_long in cas for systems which lack it
GonoszTopi:
- Fixing denoiser
- include
<sys/types.h>before<regex.h>as by POSIX - Fix noinline in crypto for some systems
- Fix display of ccache option
- Add sources from search results for new downloads
- Use output of gdlib-config for gd.h detection
- Solaris mntent fix
- wxMSW fix
- Fix NULL pointer dereference
- Fix for configure not using --with-geoip value in library check
- Added pkg.m4 from pkg-config-0.23
- Ported Kademlia Protocol Version 8 from eMule0.49b.
- Kad now ignores multiple IDs pointing to one IP in routing request answers
- When calculating the total user count, Kad now uses (if available) the real number of firewalled clients for the calculation instead a fixed value. This will take more effect when 0.49+ nodes become common
- Kad no longer tries to add UDP firewalled (and therefore mostly unreachable) nodes into its routing table, reducing overhead and increasing reliability [Idea: Netfinity]
- Optimized the Kad packettracking code to only track packets which we check later, to save resources
- Fixed a bug which let Kad sometimes assume a Kad2 contact to be Kad1 after probing for both versions
- Did first small step in dropping Kad1 support by not probing unknown Kad contacts for Kad1 anymore to save overhead. Kad1 clients will nevertheless still be work for now.
- Several changes were made to Kad in order to defy routing attacks researched by University of Minnesota guys [Peng Wang, James Tyra, Eric Chan-Tin, Tyson Malchow, Denis Foo Kune, Nicholas Hopper, Yongdae Kim], in particular:
- Kad contacts will only be able to update themself in others routing tables if they provide the proper key (supported by 0.49a+ nodes) in order to make it impossible to hijack them
- Kad uses now a three-way-handshake (or for older version a similar check) for new contacts, making sure they do not use a spoofed IP
- Unverified contacts are not used for routing tasks
- When reading a nodes.dat without any verified contacts (possible an old file version), aMule will assume all contacts to be verified to avoid slowing down the connecting process
- Implemented a special nodes.dat file version suitable for mass distribution.
- Fixed not sending sources for clients that did not announce their part availability.
- Fixed all list columns being disabled in case of invalid data in config file.
- Fixed directory tree not available.
Kry:
- Fixed: Incorrect SX packets sent, plus no reply to out-of-multipacket SX as a bonus
MalaPraxis:
- Remap colours on Windows
- Add resources
- Fix wrong usage of CPath::IsOk which caused an infinite loop on Import
- Fix wxTempFile usage for compressed IPFilter files
Phoenix:
- Removed the dlopen() code from UPnP.cpp.
- Added the m4 macro to test for libupnp.
- Updated amule_build_install.sh to work with --with-libupnp-prefix.
- Changed the UPnP code to allow the use of a service without having successfully subscribed to it. That should be enough to deal with some lazy router implementations.
- Do not unregister if no service is found
- Save the found service even if subscription has failed
- Fix for initialization of "resultstr" in cryptopp.m4.
- Fix for message "Duplicate partfile with hash..." in DonwloadQueue.cpp. It was using deleted corrupted data.
- amule_build_install.sh now uses -a flag in unzip so that cryptopp files are properly converted from DOS text format.
Stu Redman:
- Scanner fix for MSVC compilation
- Fixed crash when progress bar was resized to zero width
- Fixed sharing of large files on Windows
- Fixed free disc space check
- Sanity check before writing nodes.dat - don't write it if there are less than 25 contacts
- Download List sorted on startup
- Splitter bar position in transfer window is restored again
- Fixed a GDI resource leak for Windows
Vollstrecker:
- Made possible to deactivate xas
- Various Updates in debian/ see debian/changelog
Wuischke:
- Show connection status in toolbar when changing skin, thanks to greek
xor:
- Fix window resize problem on Mac OS X
- Fix for packets being lost in EC communication. Fixes aMuleGUI not updating after a while.