gtk-gnutella logo
Current version: 1.2.2

The Most Efficient Gnutella Client

gtk-gnutella is a server/client for the Gnutella peer-to-peer network. It runs on Microsoft Windows, MacOS and every Unix-like system which supports GTK+ (1.2 or above). The GNOME desktop environment is not required. It is currently developed and tested under Linux (Debian) as well as NetBSD. It is known to run at least on Linux, FreeBSD, NetBSD, Darwin, Solaris, Tru64 UNIX (OSF/1), SGI IRIX, BeOS whereas CPU architectures include x86, AMD64, PowerPC, SPARC, MIPS. And of course Microsoft Windows (XP at least).

gtk-gnutella is free open-source software and released under the GNU General Public License (GPL).

gtk-gnutella is not finished yet, but it is fully functional: you may share, search, and download. And it is stable too, users usually just leave it run unattended for days.

This website follows HTML5 and CSS3 web standards and uses cookies only to record language preferences.

All ideas and comments are welcome to the gtk-gnutella-devel mailing list. Bugs should be reported to the SourceForge.net Bug Tracker

We need additional contributors for C development and documentation

News

25 February 2022, Version 1.2.2 Released

This is a maintenance release with major bug fixes.

There were several shortcomings with bandwidth management: capping was not performed correctly and could overuse uploading bandwidth. Also when the DHT is turned off or on, we need to recompute proper bandwidth stealing.

Corruption of the DHT disk databases could also lead to a crash.

There was a critical old bug in the Dynamic Querying layer that affected Ultrapeers mostly: we could corrupt memory and/or crash when the current node was removed and we were processing a Dynamic Query for that node. This is more likely to happen when running as an Ultrapeer but it could also affect nodes running as leaves, although the probability of that bug happening is much less in that case.

Finally, it is best to not iterate on a global list that could get changed due to a node removal. This was the case when sending pongs to neighbouring nodes, so we now take a private copy.

Improvements
Bug Fixes
Under the Hood

12 July 2021, Version 1.2.1 Released

This is a maintenance release with minor bug fixes.

Note that our project IRC #gtk-gnutella channel is now on irc.libera.chat.

When launching gtk-gnutella and there is a stale lockfile present, listing some PID, and it happens that there is already another process running under this PID, we abort, complaining that another gtk-gnutella is running. However, if the lockfile is really stale, and the PID listed in there has nothing to do with gtk-gnutella at the moment, the user will need to remove the stale lockfile. Hence we show them the command to run, listing the full lockfile path so that it is easy to overcome this little inconvenience!

When using hashtables for memory management, it was possible to trigger a resizing and, during the course of operations, have further memory used, requiring tracking of new items in the same hashtable we were in the process of resizing. That led to double VMM freeing of the region used to store the data.

Add properties to track bytes exchanged by schedulers. These properties track the amount of bytes exchanged by session and are reset to 0 whenever a new user session starts. It allows users to see the actual amount of data consumed by running gtk-gnutella sessions, programatically via the shell interface.

Add -t switch to shell "status" command: this displays the total amount of bandwidth consumed during the session for the different schedulers.

Improvements
Bug Fixes
Under the Hood

14 June 2020, Version 1.2.0 Released

This is an evolution release, hence the minor version bump.

Several cases of bad input (from network) causing assertion failures were fixed. In particular, bad DHT response after a security token lookup or invalid G2 input streams were fatal.

There was also a critical bug, originating from a harmful code typo, which led gtk-gnutella to serve unvailable file chunks from partial files, as if they were available, resulting in unintended download corruption on the remote end!

Thanks to Laurent Gil's efforts, it is now possible to run gtk-gnutella from a Docker container. See https://github.com/angegar/gtk-gnutella-docker. Running within docker raised some issues about sbrk() and thread_self(), which were fixed.

The computation of the build date was fixed, to avoid corner cases where gtk-gnutella would complain it was "old" when freshely compiled from up-to-date sources in a git tree whose "master" branch was only infrequently updated.

The file selector was fixed, to avoid displaying grayed-out folders, a setup wich did not allow one to actually select directories in the preferences.

Many improvements were done to allow smoother uploading for servents with more bandwidth than the recipients. Instead of drastically limiting upload bandwidth (which was negatively impacting everyone), we are now monitoring and adjusting our uploading speed to avoid congestion on the remote end. When stalling happens, we also react quickly to reduce the available bandwidth of the connection, not that of all connections to whom we are uploading.

We also no longer rely on MaxMind GeoIP for providing the IP -> country mappings. Their distribution mode now requires a specific licence which seems totally incompatible with the gtk-gnutella's distribution mode. Instead, we are now using IP2Location, and the GEO_LICENCE file now lists the conditions under which these data are re-distributed (gtk-gnutella transforms the data into a form that it can digest, so we are distributing a modified, derived work, not the original).

If you are still using a version of gtk-gnutella earlier than the 1.1.x series, you are strongly encouraged to upgrade. Starting from this release, we are now considering these versions too old to connect to.

Improvements
Bug Fixes
Under the Hood

Older news...

Users Love Us Community Choice SF Favourite Community Leader Open Source Excellence SourceForge.net Logo Glade RSS Feed Available Open Hub Coverity Scan Build Status gtk-gnutella at GitHub
gtk-gnutella © 2000-2014 by Yann Grossel, Raphaël Manfredi and various contributors.