Dear Gnutella fans,

Version 0.96.6 stable has been released on sourceforge. You may get it at:

http://downloads.sourceforge.net/gtk-gnutella/gtk-gnutella-0.96.6.tar.bz2

You can also download this release from Gnutella using this link:

magnet:?xt=urn:sha1:GGKBP2G6CBFTHEJ6BCQKV3EMB4RKMEU5&dn=gtk-gnutella-0.96.6.tar.bz2

IMPORTANT: Please note that the previous stable release 0.96.5 expires on
April 1st, in a few days.  Consider upgrading to the newest release by
compiling the program yourself to avoid any inconvenience.

Here are the changes since 0.96.6, as listed in the ChangeLog:

# v 0.96.6   2009-03-29  [stable]

Bug Fixes:

- #1932909 "columns in search window do not scale properly".
- Fixed improper HTTP chunking when outputing chunks larger than 64 KiB.
- #2628899 "tries to download from my old self after IP changes".
- Was not always resuming the interrupted SHA-1 computation of a finished file
  when servent was closed in the middle of processing.
- Fixed bad range checking test in the download part.
- Was not paying attention to the "give_server_hostname" property and instead
  sent "HNAME" GGEP extensions in query hits provided a non-empty name was
  defined as the "server_hostname".
- Fixed improper upload slot counting which introduced race conditions,
  sometimes leading to having more slots used than the configured maximum
  (in addition to the "quick" upload slots).
- Prevent occasional crashes at shutdown time, during subsystem cleanups.
- Fixed corner cases where we could lose a server hostname and downright bug
  where we discarded the hostname after a DNS lookup if the subsequent
  connection attempt did not succeed.

Improvements:
- 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.

Under the hood:

- Parse legacy Shareaza THEX URIs "urn:tree:tiger/:" (extra "/" here).
- Handle non-standard  X-Thex-URI headers if peer provides a valid
  X-Content-URN header (Shareaza 2.1.0.0).
- Also attempt to give priority to the last "pfsp_last_chunk" bytes of
  downloaded files, since that can contain important indexing information to
  enable pre-view of partial video files.
- More MIME types known (derived from file extensions).
- Can now download THEX data at a tree depth of 11 for files larger than 1 GiB.
- Can download sub-optimal THEX data, as non-optimal data is better than none,
  but keeps looking for THEX data at the optimal tree depth nonetheless.
- Reimplemented scanning of shared directories as a background task so that
  the process (not just the GUI) is fully responsive during the whole scan.
- Let the background task scheduler compute the proper amount of ticks to
  use for each task.
- Upload statistics now record the file's SHA-1, so that we can consolidate
  partial file sharing with library sharing statistics, with the filename
  being forced to the library's filename.
- Avoid starting moving a completed file if there is not enough space on
  the targetted file system.
- Recognize and propagate the "DHT" GGEP extension in pongs.
- Added support for "DHTIPP" GGEP extension in pings, used for DHT bootstrap.
- Added more entropy to the random number seed.
- Plugged memory leaks
- No longer send SHA-1 queries on the Gnutella network. They are now performed
  through the DHT, which has the suitable topology to do so efficiently.
- Fixed UDP bandwidth computation, and removed any limit on UDP incoming.
- Updated list of hostile IP adress ranges, Geo-IP data, spam patterns and
  spam samples.
- Property loading from files was in O(n*n), made it O(n).
- Now detect property files being blindly copied over from another
  gtk-gnutella's config directory and reset properties whose value needs to
  be unique.
- The GUID and the KUID (Kademlia ID, the DHT node ID) were made sticky.
- Optimization of QRP lookups in tables ranging from 16k to 2M slots.
- Limit amount of hits to 10 per query hit packet, as LimeWire chokes otherwise.
- Limit amount of alt-locs in hits to 10 or LimeWire chokes.
- Keep connection alive when reporting an HTTP error to allow remote resource
  switching if necessary.
- Emit and parse new X-Downloaded header, apparently introduced by LimeWire.
- Added parsing of X-FW-Node-Info headers to grab push-proxies from firewalled
  hosts, as well as gather the proper GUID and host address/port.
- Emit X-FW-Node-Info if node is firewalled but continue to list our
  push-proxies in the standard X-Push-Proxies header.
- Avoid endless aggressive chunk splitting during swarming.
- Proper parsing of comma-separated values in Accept and other Accept-Encoding
  HTTP headers.
- Reject UDP packets from unspecified addresses.
- Drain more data out of the UDP receive buffer to prevent it from filling up.
- Strip at most 5 trailing characters from words when building the QRP table,
  thereby inserting less radices and making the table more sparse.
- Removed workarounds for dealing with broken 0.96.2 nodes and earlier 0.95.x.
- Extended syntax for push:// exact sources in magnets to be able to supply
  all the known push-proxies, even if that is an empty set.  Since downloads
  are persisted as magnets, this also allows keeping all the previously
  known push-proxies accross sessions.
- Upgraded PARQ to version 1.1 (mostly specification cleanups).
- Added additional anti-hammering for cases where many files on the same
  server are queued and gtk-gnutella is configured to launch more than 1
  connection per IP.  Connection attempts to the same server are now limited
  to 5 per minute.

Limitations:

- DHT code is still experimental, although functional: configuration of
  parameters can only be done through the shell, and there is no support
  for publishing yet.

Enjoy!

Raphael

------------------------------------------------------------------------------
_______________________________________________
gtk-gnutella-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel

Reply via email to