gtk-gnutella logo
Current version: 1.1.9

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 Bug Tracker

We need additional contributors for C development and documentation


6 March 2016, Version 1.1.9 Released

This is mostly a bug-fixing release.

It fixes an important bug in the UPnP discovery path that led to a crash when it found more than one UPnP device on the network.

It also introduces a new Glossary that can be displayed to explain some terms that may be hard to understand for newcomers, so that they may in turn benefit from the tooltips and the information in the FAQ.

On Windows, one important change is that we now force all memory allocations from the external DLLs to use our own malloc() implementation. This proves that one of the DLLs is exhibiting a memory leak. Plugging that leak will unfortunately require that a garbage collector be implemented. Measurements indicate that 4K leak every second on average, which eventually leads to an out-of-memory crash after a few days (2 to 3), preventing high uptimes on Windows. The leak is not originating from gtk-gnutella's code.

Bug Fixes
Under the Hood

18 December 2015, Version 1.1.8 Released

This is an emergency bug-fixing release.

It addresses systematic crashes on some platforms, right at startup time, and prevents random deadlocks on OS/X.

The systematic crash was due to an innocent change, which actually perturbed the order of the initialization routines and, depending on the conditions, caused an assertion failure during one of the thread startup. Curiously, the error manifests randomly and does not seem to depend on the OS but rather on other subtle environment issues: one Linux distribution could be fine whilst another was hit by the bug.

13 December 2015, Version 1.1.7 Released

This release adds support for new features:

The TLS upgrade allows connections that have started without TLS to negotiate TLS on the fly without having to reconnect. They are flagged as "e" to show that encryption was dynamically added, as opposed to "E" which indicates an initial TLS connection.

Certificates are now automatically generated and this allows HTTPS connections from browsers. For now this is of limited use, but it will come handy in the near future when building a web-enabled GUI.

To be more resilient against crashes, gtk-gnutella now automatically launches a supervisor process that will launch the real gtk-gnutella as a child process and monitor its fate, restarting a new process when the old one failed. This is far more robust than having the process re-exec() itself at crash time since there are some crashing conditions that do not even allow the process to go that far in the crash handling...

On Windows, provided you have installed Cygwin's gdb, crash logs will now contain a gdb backtrace of the failing process, making analysis of what went wrong easier than with a simple stack trace.

Your previous GUID and KUID will be regenerated the next time you restart due to a new algorithm used to detect that a configuration file is not accidentally reused on another machine: the host name is now included, instead of just the physical file information. So when moving a disk to another machine, or simply cloning an existing virtual machine, we are no longer going to reuse these IDs which are supposed to be unique by properly detecting that the information was copied over.

A bug in open_read() caused the Geo IP database to not be loaded on Windows.

Finally, all the options given to gtk-gnutella can now be abbreviated as long as they are not ambiguous (i.e. enough is given to make them non-ambiguous). For instance, given the current set of options, --p would be ambiguous but --s will always mean --shell. However, --pi is not ambiguous and refers to --ping.

Bug Fixes
Under the Hood

Older news... Logo   Glade   RSS Feed Available   Ohloh Metrics   Coverity Scan Build Status   gtk-gnutella at GitHub  
gtk-gnutella © 2000-2014 by Yann Grossel, Raphaël Manfredi and various contributors.