New Features:
- Flag uploads coming from G2 servents with a "[G2]" tag after IP address.
- Added alias support in sharing/querying.
- Made the "Clear completed" button in Downloads/Tools do something useful.
- Moved "Clear completed" button to the bottom right of the download pane.
- Remember fileinfo notebook tab number across sessions.
- Remember main notebook tab number across sessions, only restored after crash.
- Remember Gnet stats notebook tab number across sessions.
- Remember download info / tools notebook tab number across sessions.
Improvements:
- Added --cleanup to explicitly request for final memory cleanup sequence.
- Updated Italian translation.
- Updated GeoIP databases.
Bug Fixes:
- Leaf nodes could end-up being connected to more ultrapeers than configured.
- Fixed monitoring of alien threads, important when GTK file selector is used.
Under the Hood:
- Debian compatibility level changed from 4 to 5.
- Make sure we can deal with older pkg-config, which needs leading arguments.
- Use "embedded" symbols for xmalloc(), xfree() and friends.
- Added "query_trace" property to trace all queries which were searched.
- Moved halloc-based string functions like h_strdup() to dedicated hstrfn.c.
- Expanded search mask to 64 bits to be able to hold all digits and letters.
- Count aliased queries and hits from aliases.
- Pre-compute shared file media type at record creation time.
- Pass query limits to st_search() to avoid needless pattern matching.
- Added h_strsplit() and h_strsplit_set().
- Added strvec_append_with() to expand vector by appending another vector.
- crash_assert_logv(): don't call crash_mode() if assert failure was recorded.
- entropy_clock_time(): mix the entropy nonce through hashing for more diffusion.
- node_can_accept_connection(): only send headers back when handshaking.
- qrp_add_file(): optimized to avoid computing word length if not required.
- thread_stack_check_overflow(): ignore virtual addresses outside stack range.
- vmm_init_once(): ensure any shared library for stacktrace unwinding is loaded.
* Bug Fixes
* Refuse to share certain directories: /, $HOME, $GTK_GNUTELLA_DIR, and
the incomplete and corrupted directories.
* Downloads GUI: added checkboxes to invert the select/filter patterns.
* Downloads GUI: added "Modified" column and detail showing the timestamp of
the last file modification.
* Optional beautification operations on filenames: strip leading "-", remove
consecutive "_" and prevent "_" surrounding punctuation characters.
* Fixed significant performance issue in the Gtk+ 1.2 front-end: update of
upload statistics was O(n) but is now O(1).
* Background TTH file verification now lights an icon in the GUI.
* Show TTH tree depth in the download "Details" pane.
* Update the bitzi metadata info box when a query finishes, so that it is
not required to click on the result again after requesting bitzi data.
* Added MIME type column for search results.
* Added "Last Request" and "Last Upload" columns to the Upload History.
* Almost complete DHT support (missing only publishing of data), but code
needs to be explicitly enabled by setting "enable_dht" to TRUE. The DHT
knows how to look for alt-locs for files and push-proxies for firewalled
hosts, and will store local data for others to query.
* New shell commands "stats", "download", "echo".
* It is now possible to rename files being downloaded (through GTK2 or shell,
no support in GTK1).
* Added more filename extensions to the built-in search filters.
* Switch resources after getting an HTTP error if the connection is kept alive
and the error permits follow-ups (non-busy conditions).
* Improved ability to switch resources after file completion by ignoring
trailing swarming data, to keep the connection alive.
* Bitzi tickets are refreshed when explicitely requested, avoiding reuse
of stale metadata
* Completed files are displayed during hash verification.
* Only propagate good alt-locs for files we are downloading, i.e. addresses
of hosts which we know to be serving that file because we contacted them.
* Many new statistics counters.
* Allow scheduling of special downloads without considering per-host limits,
as these are of a much shorter duration (THEX and browse host requests).
* Always seed completed files, regardless of their size (no PFSP minimum as
with partial files), when their SHA-1 has been verified.
* Incorrectly encoded Bitzi metadata is translated to Unicode.
* Browse-host responses are sorted alphanumerically on relative pathnames to
allow users to relate files together if they don't understand GGEP "PATH".
* Improved routing of PUSH messages by also looking whether targetted hosts
happen to be one of our immediate neighbours.
* Updated Norwegian Bokmal and Spanish translations.
Bug Fixes:
- The download overlap checking was incorrectly detecting mismatches.
- A bug in the network queue caused frequent crashes.
- A bug in the event timing caused failures after 25 days uptime.
- A stalling issue with TLS connections.
- The search retry timeouts weren't accepted.
- The order of items in the search history was wrong.
- The quick-connect limit wasn't respected causing too frequent
connection attempts during startup.
- Removed incorrect use of SF_NODISKIO flag for sendfile() on FreeBSD.
- Fixed crash that could be triggered by changing the listening port
temporarily to zero.
- iconv() was not used correctly which could cause wrong conversions
for longer strings.
- Generated filenames weren't properly restricted in length which
could cause crashes.
- There was a compile issue on NetBSD caused by namespace pollution.
- Added workaround for the issue that on Solaris only the file descriptors
0..255 can be used for stdio.
Improvements:
- Finished downloads are now seeded for the whole session or until
they are manually purged, if partial file-sharing is enabled.
- Server-side support for Tigertree hashes and THEX thanks to patches
provided by Martijn van Oosterhout.
- Improved spam filters.
* Added GUI option "headless".
* Removed dbus dependency. It's just a gimmick, not worth it.
* Added patch-ab to avoid picking up stuff from /usr/local for example.
PKGLOCALEDIR and which install their locale files directly under
${PREFIX}/${PKGLOCALEDIR} and sort the PLIST file entries. From now
on, pkgsrc/mk/plist/plist-locale.awk will automatically handle
transforming the PLIST to refer to the correct locale directory.
New features:
- Browse Host (HTML and Gnutella), TLS and IPv6 support.
- Chinese and Greek translations of the user interface.
- D-BUS plugging.
- Added hot keys: F2, F8 and F9 (see menu View->...).
- Searches are now created with a configurable expiration date.
Improvements:
- Optimization of the UTF-8 processing.
- Better filename conversion to locale, with automagic charset detection.
- General performance improvements in QRP and search filters.
- Full "nl" translation.
- Sorting persistence.
Under the hood:
- Buffering of downloaded data to avoid excessive disk fragmentation
- Support for the epoll()/kqueue() system calls.
- More optimistic PARQ ETA, and PARQ back-off when QUEUE are unanswered.
- NFS-compatible session locking if anyone cares.
- Nifty property browser.
* The last-byte download bug, where a download would not complete if only the last byte needed to be downloaded, has been fixed.
* Preliminary browse-host support, allowing other servents to browse the files that are shared. This is disabled by default.
* GTKG will detect online status again after temporary network failure.
* The .desktop file and application icons are now properly installed.
* Downloads are now sorting in a more logical way.
* Bug fixes in UTF-8 support.
* Doxygen documentation updates.
* Japanese and Spanish translation updates.
- Support for very old Gnutella features has been removed or deprecated
to keep the network healthy. Note that GTKG 0.94 is now considered a
deprecated servent in terms of Gnutella features. Every GTKG user
MUST upgrade to 0.95 as soon as possible.
- GUI updates:
* [GTK2] Enable drag and drop for magnet links
* [GTK1] Search results have less columns, and the hit details are now
displayed in a separate pane underneath.
* Visual progress indicator correctly shows newly downloaded
fragments, shows fragments currently available for download more
accurately, and active downloads are marked with arrows.
* The maximum amount of search results has been lowered to 1000.
Please use filters or more specific queries to find what you are
looking for if you get many search results.
* A detailed view has been added to the search results to show all
available information for a search result.
* The status bar will now give feedback about the contacted host caches.
* Gnutella node stats can now show how many bytes were sent/received.
* In the node pane, right-clicking now allows to configure which columns
should be displayed, just like in the search pane.
* More general statistics in the stats pane. It is possible to see TCP and/or
UDP traffic stats separately (for messages only, not flow-control).
- Bitzi support has been added to retrieve additional information on
possible downloads. See http://bitzi.com/ for details.
- The geographic location of hosts can now be shown courtesy of MaxMind.
- Recently developed features of the Gnutella network are now supported:
* High outdegree provides better connectivity between Gnutella hosts.
The maximum TTL in the network is now 4 and ultra nodes must maintain
at least a connection with 30 peers.
* Last-hop QRP between ultra peers.
* Dynamic querying support, allows selective querying of peers instead
of simply broadcasting the query. It is used for leaf queries and
for your queries when running as an ultra node.
* OOB (out of band) query hits lets other servents deliver search
results directly to you instead of going through the Gnutella network.
* OOB proxied queries, allowing direct hit delivery at the ultra node level
for queries emitted by legacy leaves.
* GTKG will now prevent firewalled hosts from running as ultra nodes.
* In "auto mode", GTKG will revert to leaf mode when uploads are stalling
at an abnormally high rate, indicating bandwidth is saturated.
- UDP is now also supported as a transport protocol in addition to TCP.
You may need to make changes to your firewall settings to take full
advantage of this. The UDP port used is the same as the one used for TCP.
- Firewall detection has been improved to include UDP firewalling detection.
- Clock skew computation for hosts not running NTP has been redesigned.
Also, GTKG will now automatically detect a locally running NTP.
- Japanese translation added.
- French and German translation updated.
* GUI updates:
* File info pane renamed to "Downloads".
* Downloads pane renamed to "Sources".
* Progress of a download can now be visualized.
* Uploads and download sources pane now contain a visual progressbar.
* The GTK2 GUI can now be resized smaller than a width of 933 pixels.
* Search results now include an extension column.
* The Gnet stats panel and the statusbar now include horizon statistics.
* New Gnutella extension HSEP/0.2 included.
* The remote shell now includes a command "HORIZON", which will output horizon
stats.
* If no default port is specified, gtk-gnutella will now bind to a random port
and will use that port from then on.
* If you are behind a firewall and have routed a port to gtk-gnutella, please
check that gtk-gnutella is still running on the port you want it to!
* Will parse up to 150 hosts in a gwebcache reply to bootstrap from.
* New hostcache to make gtk-gutella connect to the network more quickly.
* Translations updated.
* Now supports Ultrapeers
* New icons for showing node state
* The GTK2 front-end is no longer experiamental
* Added client-side PFSP support (partial file sharing)
* Added full PARQ (Passive / Active Remote Queuing)
* New Gnet statistics: flow-controlled packets per TTL and hops
* Added support for GGEP in pings/pongs/pushes
* New "use surplus bandwidth" setting
* Added count for total bytes uploaded and downloaded
* Added support for vendor-specific messages
* New hops-flow support
* Will now show the GTKG version in query hits
* The queue shows the count of alive downloads as well as the queue count
* Changed the connection algorithm
* Filters out hostile IP addresses
* New "Fileinfo" pane in the download screen
* Domain name resolution for Gnutella web cache are now done asynchronously
* Some performance improvements
(christianbiere at gmx dot de) in PR pkg/19152.
Changes since 0.91.0:
* Will now verify the SHA1 of downloaded files in the background.
* New configuration parameter for the directory where "bad files" not
matching their advertised SHA1 should be put (don't forget to
configure it, as it defaults to /tmp).
* Files are now copied in the background, so it is possible to setup the
various "download" directories on different filesystems.
* Node connection time and remote node's uptime(if available) are now
shown.
* It is now possible to paste a "magnet:" URI in the search to launch a
SHA1 search.
* The "connection indicator" at the bottom left is now a toggle.
Depressing it will terminate any Gnet connection but will continue to
serve uploads and process downloads.
* The active download status now shows how many sources are available and
how many are currently active (i.e. downloading). It will also show the
estimated remaining time for the whole file, as well as the global
reception rate for the file, accounting for all currently active
sources.
* Fixed bug that prevented proper downloading from recent
BearShare(4.1.x or better) and Shareaza (1.6.0.x or better) nodes
when the SHA1 of the file is known.
* Will now protect against "PUSH floods" by banning the relevant IPs.
* At startup, scan the download "tmp" dir for orphan files and reintegrate
them into the fileinfo database, moving completed files to the relevant
directory(depending on whether its SHA1 checked OK).
* Minor bug fixing: improper countdown for push timeout when falling back,
fixed corner-case processing that could lead to crashes or incorrect
behaviour, accidental localization on X-Live-Since headers, freezing of
the GUI when clearing many uploads, obscure portability fixes.
Changes include:
* Now uses HTTP/1.1, which implies support for persistent connections.
* gtk-gnutella will now monitor whether we're connected to Internet and
slow down its connection requests when it detects the connection was
broken (after a delay of ~3 minutes at most).
* Download swarming is now supported: gtk-gnutella will download different
portions of the same file from many hosts, as long as alternate sources
are available.
* The download mesh (alternate source collection during downloads) is now
used to fill the download queue with more sources.
* Alternate locations can also be passively collected from query hits.
You can enable this in the swarming section on the download config pane.
* Download scheduling was entiretly redesigned to avoid hammering busy
hosts and scale to 5000+ entries in the queue without slowing down the
whole.
* Is now smart about the "push" flag and will try to ignore it if possible,
in case the remote host wrongly set the flag but is not firewalled.
* gtk-gnutella now remembers the files it downloaded and will ignore
further requests to download the same file. It will visually mark those
files, as well as the ones it already shares, by showing them in lighter
color in the search results.
* It is possible to supply to gtk-gnutella your own ignore lists by SHA1
and by name/size but the feature is under-documented.
* Added an "expert mode". Only when this is enabled will gtk-gnutella show
the users some of the most complex settings.
* New Gnutella statistics pane, showing the packets we sent and received,
how many we generated, and the reasons why we drop packets, by packet
type.
* Now understands UTF-8 queries, but does not generate them.
* Fixed important bugs whereby all earlier versions of gtk-gnutella were
unintentionally corrupting the Gnutella traffic!
* Moved away from the public hostcaches and now uses the Gnutella Web
Cache.
* Will now show all upload attempts, not only the ones that are
transferring. If the connection is aborted, the reason is also shown.
* New search stats types: queries by router, whole query.
* "Queries by router" shows how many queries have been recieved from any
node gtk-gnutella was directly connected to.
* "Whole query" shows stats based on the complete query string instead of
individual query words.
* New visual indications via icons in the status bar: whether gtk-gnutella
is rebuilding the library, computing SHA1 of shared files in the
background, and whether we are connected to Internet or not.
KNOWN BUGS/PROBLEMS:
* When changing the directory for incomplete/complete files, all partially
downloaded files recorded in ~/.gtk-gnutella/fileinfo will still be
downloaded to the old directory. You need to manually change the paths
in above file using search/replace and your favourite text editor.
* Sorting order of tables is not perserved across sessions.
* Marking/highlighting of results/downloads/uploads heavily depends on
your GTK theme. Especially most themes do not set fg[ACTIVE] and
fg[NORMAL] to different values.
* There is currently no way to un-ignore a file via the gui. You can
however edit the done.sha1 and done.namesize files in your
~/.gtk-gnutella directory manually. Unignoring via gui is planned for
the next release.
- All configuration can now be made from the GUI.
- Fully redesigned search filters to work like ipchains/iptable on Linux.
- Obsoleted experimental "auto-download", superseded by the new filtering code.
- Added Gnutella bandwidth management.
- Both HTTP and Gnet bandwidth is now displayed real time.
- Added full HUGE support (Hash/URN Gnutella Extensions).
- Added support for local host preference.
- Gtk-gnutella can do traffic compression when connecting to a node that
also supports it.
- Upload and downloads will now show User-Agent/Server information.
- Added status to the download queue.
- You can now freeze the download queue whilst manipulating it.
- Searches can now be listed on the left side of the screen, or as tabs like
in the previous versions.
- Added automatic banning of servents that are hammering us.
- Many more cool new features that you'll discover whilst playing with it.