THIS FILE IS ONLY UPDATED WHEN I MAKE A RELEASE, THE MOST RECENT
VERSION IS MY TESTING ONE, IT PROBABLY ISN'T AVAILABLE FOR DOWNLOAD
YET.

v0.4.21 2001.03.28
 (0316) RPM - Stop counting dropped DOS PINGs against a connection's
"duplicate" count. This reduces the turnover rate in the connection
list.
 (0314) RPM - Send a PING with TTL=1 to each new connection right
after opening. Such PINGs seem to be necessary to make the connections
stay open (due to the popularity of Limewire and BearShare, which
expect to see traffic right away on each opened connection).
 (0314) LT1 - Fix bug that caused newest (rather than oldest)
connection to be killed when *redirect* is set (this bug was present
starting with version 0.4.7).
 (0301) RPM - Add *search_min_size* setting.
 (0216) MK1 - 'scan' only prints "using 'find' to scan" message if initated
by 'scan' command rather than by the share cache mechanism
 (0216) MK1 and HL1 - *sort_order* now allows sorting by host IP address
 (0212) RPM - Adding documentation explaining how to change anything
(including the ./configure script or a Makefile) and actually get the
changes to take effect. Not done yet.

v0.4.20 2001.02.07
 (0124) RPM - A search for "john john" will now match only those files
that have two "john"'s in their name.
 (0122) RPM - #stop# now stops a connection while it is in the CONN
state.
 (0121) RPM - Add #forget# command.
 (0120) RPM - PUSH sent by auto-retry now respects no_rfc_1597 unless overridden by retry_push=2
 (0119) RPM - Add *retry_push* setting.

v0.4.19 2001.01.18
 (0118) RPM - When resuming a download, overlap the new data on top of
the old data so as to eliminate any error message that might have been
written at the end of the existing partly-transferred file by a previous
failed download-resume operation.
 (0117) RPM - Automatically restarts incomplete downloads, and
automatically retries failed download connections (to disable, turn
off the *auto_download_retry* flag).
 (0117) RPM - Add *http_client_headers* variable.
 (0117) RPM - (internal) replace many uses of the xfree macro with
free_xx calls to eliminate possible missed indirection errors, and
with trackable error codes.
 (0117) RPM - Improvements to MK1's changes, including *leave_turds*
config option.
 (0116) MK1 - Allow #stop# command to stop a queued download. Fix a
couple bugs in downloading - no longer leaves small incomplete files
around.

v0.4.18 2001.01.08
 (0104) FR1 and RPM - Remove reliance on GNU 'find' to index shared
directories, use 'perl' script instead (or print error if no perl
either)
 (1231) GK1 - Another fix to a misaligned access problem.
 (1230) RPM - Replace varargs version of g_debug with gd_xx routines.
 (1228) RPM - Detect segfault inside readline() and print appropriate
error message.
 (1226) RPM - Make host_class() aware of some additional address ranges

v0.4.17 2000.12.24
 (1218) RPM - fix crash on certain processors (including Sparc)
resulting from misaligned access on third parameter of certain calls
to gnut_blacklist_allow().
 (1208) RPM - Fix bug in #scan# command that messed up shared
pathnames when scanned directory name included quotes or backslash
escapes.
 (1208) RPM - Send PING to a newly-opened Gnutellanet connection if
our host list happens to be empty.
 (1207) RPM - Fix possible bug from send(2) not sending whole buffer.
 (1205) RPM - Fix bug with setting or changing name of search log file
 (1128) RPM - Search results list now shows which items have been used
as subjects of a #get# or #push# command.
 (1124) RPM - Add 'u' and 'd' options to #info# command.
 (1118) RPM - *verbose* setting now allows separate control of upload
and download messages.
 (1116) RPM - Add #lshare# command.

v0.4.16 2000.11.10
 (1003) RPM - Slight change to munge_time(): "1h0m34s" instead of
"60m34s".
 (1003) RPM - #load# with spaces after argument works now (a
convenience for readline users)
 (1003) PD1 - Add support for multiple searching, via #list# and
#lclear# commands and *multi_enable*, *max_searches* flags.

v0.4.15 2000.09.26
 (0923) RPM - Added "#include <curses.h>" to cli_input.c. 

v0.4.14 2000.09.26 (broken build -- download 0.4.15 instead)
 (0920) PD1 - Add interpolation of shell commands within `backquotes`.
 (0918) RPM - #help# now includes detailed descriptions of most
commands, with examples. Type for example 'help load'.
 (0918) (submitted by duncanpa) Add #eval#, #load#, and #save# commands.
 (0915) RPM - When upload limit reached, send "503" error message
instead of "404".
 (091x) RPM - fix crash that happened when connecting by hostname and
said hostname does not resolve to an IP address.
 (091x) RPM - improve handling of bad packet data (usually garbage
generated by poorly implemented clients).
 (0911) RPM - #open# with a nonesistent hostname no longer causes a
segfault.
 (0911) RPM - Added "log_level" variable.
 (0911) RPM - #set# accepts "-" as equivalent to "_" in variable
names.
 (0911) RPM - Slight change in how total shared filesize is
calculated.
 (0907) RPM - Fixed compile error in gnut_transfer.c for environments
that have FCNTL and not FLOCK
 (0906) RPM - #exit# is a synonym for #quit#.
 (0906) JW1 - Add "min_cache_size" setting to keep very-small files
out of the cache.
 (0906) JW1 - Add "search_log" and "transfer_log" variables, which
allow automatic logging of all query packets and uploads
(respectively) to local files. conf_cache_int() renamed to
conf_cache_entry().
 (0906) JW1 - Web interface tells whether each shared file is in cache
or not.

v0.4.13 2000.08.13
 (0811) RPM - Add "hide_pathname" option, to control whether search
replies give the full pathname of the file
 (0809) RPM - It now grabs query replies from all packets it receives
if they match the current query string. This causes more results to
arrive and more quickly than if we only watched for our own replies.
 (0808) RPM - Merge in Jon Arney's changes to the command-line
portions of gnut. (Gnome interface still waiting)
 (0808) RPM - Add #prompt# option, a string that can contain
variables, to put info on the "gnut > " prompt line.
 (0808) RPM - Add #blacklist# command
 (0808) RPM - Add shell escape (!) command (UNIX users only)
 (0808) RPM - Add #cls# command (UNIX users only)
 (0808) RPM - Add #player# command to support multiple streaming
players for multiple file types.
 (0807) RPM - #mpush# command allows you to monitor PUSH requests
(downloads) initated by other users on the network.
 (0805) RPM - #mreply# command allows you to monitor search replies
(filenames) returned by other hosts on the network.
 (0729) JA1 - To support the Windows interface (not yet brought in),
added #ifdef __cplusplus around all function prototypes in header
files.
 (0728) JA1 - Added in blacklist filtering features.
 (0728) JA1 - Added in prompt features and clear screen and shell
commands contributed by Jason Smith.
 (0728) JA1 - Added Gtk/Gnome interface. There are still some problems
with it, but it mostly works now.
 (0728) JA1 - To support the Gtk interface, fixed a problem with
hostname resolution in gnut_net.c
 (0728) JA1 - Brought in better support for "players" not yet ready
for use.

v0.4.12 2000.08.04
-------
 (0804) RPM - drop very long queries (more than 80 characters) because such
packets have recently been seen spamming the Gnutella network.
 (0804) RPM - (internal) Update aclocal.m4, configure, install-sh, missing,
mkinstalldirs and the Makefile.in's to agree with my version of
aclocal, autoconf and automake, then rebuild configure.
 (0802) RPM - (internal) Fix minor file-locking bugs: unlock download
file if HAVE_FNCTL, don't unlock upload files (because they're never
locked!).
 (0801) RPM - Changes to default_upload_cap and default_download_cap
now take effect immediately on current transfers.
 (0801) RPM - Transfer rates are now computed and displayed by a
decaying-average formula with a half-life of about 10 seconds, to more
accurately show actual rises and falls in the transfer rate.
 (0801) RPM - (internal) add get_rate_limit(), decay_rate()
 (0801) RPM - #get# checks IP address before sending push request.
 (0731) RPM - Add quotes around strings displayed by #monitor#.
 (0731) RPM - Add "no_rfc_1597" setting to disable VPN address checks.
 (0731) RPM - (internal) change host address routines in host.c to
support no_rfc_1597 setting.
 (0731) RPM - Make #push# error messages (for IP address checks) more
informative.
 (0731) RPM - Add configure check for <term.h>
 (0730) RPM - Add some overlap code for transfer, but it's disabled
for the time being.
 (0728) RPM - Add "search_extensions" variable, to specify filename
extensions to use in limiting search results.

v0.4.11 2000.07.28
-------
 (0728) RPM - Drop queries of 3 characters or less.
 (0727) RPM - Fix #push# command -- it now sends the proper GUID in
the PUSH packet, so the remote host actually recognizes and responds
now. <homer>DOH!</homer>
 (0727) RPM - Shared files are now displayed to remote hosts as
filenames only, not full pathnames (this is what all the other
Gnutella clients do).
 (0727) RPM - PUSH handler ignores requests from IP addresses that
failed to connect or issue a GET on a previous PUSH attempt, for an
amount of time that depends on the type of failure.
 (0725) RPM - #response# (and #find# or #search# without argument)
display current query string.
 (0725) RPM - PUSH handler no longer tries to make multiple
simultaneous connections to the same host for the same file.
 (0725) RPM - Change default TTL from 4 to 7.
 (0725) RPM - #monitor# command now takes an argument, which is used
as a boolean AND filter against the query match strings displayed.
 (0724) RPM - Respond to PUSH requests with full pathname of requested
file, thus making PUSH transfers work properly for files in a
subdirectory.
 (0723) RPM - Add option "strict_search", which specifies filtering
search results to make sure they match (by boolean AND, and not
ignoring punctuation) the string given in the #find# or #search#
command ( but not yet implemented for searches through the HTTP
interface).
 (07xx) RPM - (internal) Change all "//" style comments to "/* */"
(makes it compile on old or non-GCC compilers). Move more text strings
to gnut_ui.h.

v0.4.10 2000.07.21
-------
 All changes for 0.4.2 through 0.4.10 are by RPM
 (0721) (internal) ./configure now checks for getopt_long() in two
places. Create gnut_ui.h, move all language-specific strings from
gnut_http.c into gnut_ui.h
 (0721) HTTP search form pop-up choices (time and # replies) now
default to the same values you used in your previous search. Also,
increase the number of choices (delays from 15 to 240; results from 5
to 320)
 (0721) Improve look of HTML pages. Add GnutellaNet statistics to each
page. Make number-of-replies setting in HTTP search work.
 (0721) HTTP search sends a trickle of data while searching so the
browser won't say "(stalled)" in the status line
 (0720) HTTP server now formats search results in a table, and
includes size and server speed for each file. Add "please wait ##
seconds for page to finish loading" message.

v0.4.9 2000.07.19
------
 (0719) #find# "results received" display now prints only when the
number actually changes (important to users of screen reader software
and users running #gnut# over #ssh# or a slow terminal link).
 (0719) Add 'beep_on_all' preference; if set (and if 'wait_after_find'
is also set) #find# will beep every time the number of responses goes
up, rather than just the first time.
 (0719) #monitor# no longer prints non-ASCII characters (which often
screw up an xterm or console window so bad that you'd have to log out
to recover)
 (0719) #sleep# and #kill# no longer cause a segfault if they have no
argument.
 (0719) Update gnut URL in "Powered by gnut" link on web page.
 (0719) (internal) Remove a debug printf. Fix small memory leak in
gnut_connection_delete()

v0.4.8 2000.06.16
------
 (0615) Rewrite parts of manual and tutorial to reflect the
changes in gnut. Bring up new web site. Automate synchronization
of documentation files and web site. Put 0.4.1 on web site.
 (0612) Enforce max_responses on the actual list in memory (rather
than on just the displayed results).
 (0612) Add CRC check to eliminate duplicate query results (necessary
because of the new-connection-query-packet change in 0.4.7)
 (0612) Implement VPN host address filtering: gnut no longer uses
hosts that are unreachable because they have behind-firewall
addresses, unless they're in your own firewall address range; also
removes some non-downloadable files from results list (but only if you
and the other file are both in VPN's and the VPN's are different
ranges).
 (internal) add crc32_start(), crc32_add8(), host_ok_for_connect(),
host_ok_for_download(); local_vpn_class global

v0.4.7 2000.06.12
------
 (0611) Sent current query packet out to any new connection as soon as
the connection opens.
 (0611) 'find' with no arguments displays results.
 (0611) 'search' is synonym for 'find'.
 (0611) Add 'download_timeout' preference, because some hosts make
downloads wait in a queue before connecting.
 (0611) Add 'autokill_thres' option, if set to zero it disables
autokill (described in 0.4.6 changes)
 (0611) New connections now appended to end of connection-list rather
than beginning; makes the connection numbers in #info c# more stable,
which in turn makes it easier to issue the #kill# command.
 (internal) Reserve 2 bytes of GUID for possible future multiple
concurrent search feature. kill_worst now breaks ties in preference to
the last 'bad' connection rather than the first.


v0.4.6 2000.06.11
------
 (0611) Add autokill: automatic connection-list grooming. If left
alone, gnut will now optimize its N connections to get the minimum
possible overlap; this means you get more results when you do a
search.
 Dropped packets now counted as in Windows Gnutella ('dropped' =
duplicate). run_config_file() now takes a parameter to only run #set#
commands, which allows us to get settings (like the port number) from
.gnutrc before the rest of initialization.
 (internal) clean up #ifdefs in command_loop()

v0.4.5 2000.06.08 (another INTERIM DEBUG VERSION)
------
 Like version 0.4.4, this version isn't too useful because it prints a
lot of stuff (I was in the middle of fixing the inefficiencies in the
connection list and host list)
 (0608) Dramatically improve stability of connections by handling
the buffer-overrun problem differently: now, instead of dropping
the connection, it simply drops one packet and tries again.
 (0608) Add total packets sent (at bottom of 'info c'). Append new
hosts to hash bucket instead of prepend (improves long-term freshness
of host list). Fix ttl and hops reject checks.
 (internal) add total_sent global, bad_host()

v0.4.4 2000.06.07 (INTERIM DEBUG VERSION)
------
 This version isn't too useful because it prints a lot of stuff (I was
in the middle of fixing the inefficiencies in the connection list and
host list)
 (0607) Randomize choice of next host when opening a new outgoing
connection (it used to always choose a host with a hashcode of 0, and
would repeatedly attempt to connect to the same hosts)
 (0607) (internal) add 'next_hashstart' global; add some debug
printf's; cosmetic reformatting

v0.4.3 2000.06.07
------
 (0607) Add 'kill w' command -- kills connection with worst
duplicate-packet count
 (0607) (internal): rename 'state' field to 'cstate', and 'type' to
'ctype'; add gnut_connection_kill_worst()

v0.4.2 2000.06.07
------
 (0607) Add 'stats_format' config parameter, which makes the
connection stats look more like the original Windows Gnutella.
 (internal) add droprate()

v0.4.1 2000.06.07
------

First version after Robert Munafo began maintenence. 0.4.1 is actually
the same as 0.3.29, but many files have tabs changed to spaces. This
is to make it easier to track changes in CVS when, eventually, the
sources are put into CVS.

v0.3.29
------
Fixed Win32 problem with config files not working properly.
Added sleep command, just waits a certain number of seconds.
The munge configuration variable now affects most of the numbers.
New config option: "html_enable" determines whether the web interface is
  usable.
New config option: "wait_after_find" tells gnut whether to wait for
  responses after you do a find command.
User-space linuxthreads should now work.
A message is displayed when a download is queued.
Better locking behavior. (Still no locking on Win32 though.)


v0.3.28 5/2/00
------
New config option: "update_clear" determines whether the host list is cleared
  when the update command is run.
New config option: "beep_on_first" makes gnut beep when the first result from
  a search comes in. (thanks to whoever suggested it)
New config option: "munge" allows for prettying up of large numbers.
  (thanks dmg and whoever suggested it a long time ago)
New config option: "max_downloads" maximum number of concurrent downloads,
  any more than this are queued up.
Fixed bug in host handling which would only allow 256 hosts.

v0.3.27 5/1/00
------
Much more substantive caching.  See configuration parameters cache_path,
  cache_refresh and cache_size.
"conf" is changed to "set", "search" is changed to "find".
You can share symlinks now properly.
Files are appended the extension ".gnut" when they are downloading, this
  extension is only removed when the file is all the way done.
Win32 now looks for all configuration files in the current directory, not in
  the windows directory.
Platforms without regexp can now use simple expressions in response.
Responses can now be sorted based on any criteria.  See README for the syntax.
File names are now displayed in bold on platforms which support this.
Changed host list management, decreased CPU usage by about 2 times.

v0.3.26 4/25/00
-------
A http client can now send more than one query per session.  (thanks Jon)
Debug statements fixed up in HTTP section.
Added timed_recv into transfer loop to get rid of dead connections.
Fixed memory glitch on end of push connections.
Reports error when file cannot be opened for download.
Fixed uploads in Win32.
Fixed path slashes when downloading between win32 and unix.
More stuff that I can't remember.  Thanks to anyone I forgot! :)
Server passwords.  See "conf password_required" and "conf password".

v0.3.25  4/21/00
-------
Pagination support.
Small bugfixes.
Support for full path being shown in file requests! (thanks Jason Steiner)
In the same patch as above configurable html for gnut returns.
Small bugfixes in read_packet.
Tab completion of both commands and configuration keys.

v0.3.24  4/19/00
-------
Added detailed packet monitoring capability.  Turn on hidden mode, and you'll
see what I mean!  (thanks David Maymudes)
More options to regexps.  (thanks Elijah)
Now routes push request packets.
Better handling of push connections.
Web searches no longer clear out cli searches.

v0.3.23  4/16/00
-------
Added a lot of HTTP functionality from Jonathan S. Arney, you can now use
  gnut as a web-based search engine.
Tried to track down some other bugs----it didn't work, if you want to help
  turn on "--enable-mcheck" , maybe add some more gnut_mprobes all over
  the place, and track down where the heap goes sour.  I 
  can't figure it out for anything.
Fixed transfers on Win32.
Beginnings of cacheing support. (thanks Ray Jones)

v0.3.22  4/16/00
-------
Sorry, didn't keep track very well this release.
A lot of bugfixes.
Win32 Support.  (thanks David Maymudes)

v0.3.21  4/14/00
-------
Brown bag release, accidentally removed a config variable, thinking it was
never used.  Stopped sharing from working.  Also made it so that spaces can
be included in configuration values.

v0.3.20  4/14/00
-------
Fixed up some stupid g_debug problems.  (thanks Damian)
New configuration system, your ~/.gnutrc will need to be replaced, see
  gnutrc.sample for help.
Added configure check for HP-UX and PTHREADS draft 4.  HP-UX should be able
  to compile out of the box now. (thanks Ken Platz)
Made configure.in function on SunOS 5.7 as well. (thanks SFGeek)
REGULAR EXPRESSIONS in "response"!!!  Thanks to Elijah!!! <eli@panix.com>
STREAMING MEDIA SUPPORT w/ the "play" command!!  Thanks to 
  Ray Jones <rjones@pobox.com>

v0.3.19
-------
Added verbosity support, so that you get notified when downloads start
and stop.
Added hidden support, so that you can make your client not visible on
the network if you so choose.  (thanks to Jason Steiner)
Worked on network problems between Solaris and FreeBSD.
Fixed a bug in config file parsing.  (thanks to Frank Waveren)
Long option parsing. (thanks Damian)
Worked on support for HP-UX 10.20 and 11.00
FreeBSD 2.8-RELEASE works now.  (Thanks to whoever lent me that shell account.)

v0.3.18
-------
The .gnut_hosts file is now much easier to use, you should be able to copy
the gnutella.txt file off of gnutella.wego.com straight into it to get
yourself started.
Excellent tutorial in TUTORIAL written by Elijah <eli@panix.com>.
Added bad packets field in the connection listing, better detection and
dropping of malicious packets.
Fixed compilation on Sun.
Better autoconf'ability of gnome stuff.
Connections are now dropped after they have reached a bad packet cap.  This
should try and segment the people creating the bad packets...

v0.3.17
-------
Fixed query handling.  (Man, this was a bad night for making bad bugs!)

v0.3.16
-------
Fixed a bug in the hashing that made nothing work as it should.
Better handling of bad packets, nothing that can't be decoded
is passed on now.

v0.3.15
-------
Implemented hashing the routing table, seems to have decreased CPU usage
in about half.
Added better debugging info when crashes occur.
Pushes automatically get requested when the initial transfer connection
fails.

v0.3.14
-------
The Glade front-end is working better than it ever has.  (Granted that
doesn't mean a whole lot!)  Other things are fixed as well.  I can't name
them.

v0.3.13
-------
Total transfer bandwidth limiting implemented.
Matched incorrect results in previous version, fixed now.
Re-implemented no output mode.
Query replies are tested for uniqueness upon display.
Some other things I'm forgetting.

v0.3.12
-------
Reduced CPU usage in about half by using a better search method.
Some other small things.

v0.3.11
-------
Many bugfixes... a lot of them from kris@freeBSD.org!
Changed the packet_stack to a packet_queue, and also moved monitoring
over to this object as well.
Fixed read_line on BSD.
A nasty segfault was fixed that would happen anytime a push send was cleared.

v0.3.10
-------
Fixed many small bugs that could cause segfaults, made the HTTP replies
a little more according to the RFCs.  Thanks to dmg for all the help
finding segfaults, to Kris for helping with FreeBSD, and to Frank for the
long list of feature requests! ;)

v0.3.9
------
Fixed some of the problems with the new IP detection code.  Cleaned up a
HUGE memory leak, and some other stuff.

v0.3.8
------
Better local IP detection, you no longer have to have a valid hostname for
gnut to work.  Also I messed with signal handling a bit, they shouldn't
crash gnut as much, although I haven't tried to get suspend/resume to work
yet.

v0.3.6
------
Dunno, searches are now shown coming in in real time.

v0.3.5
------
Push requests now are completely supported!  Minor bugfixes, and some FreeBSD
portability patches applied.

v0.3.4
------
Compiles and runs on SunOS 5.6 again.  Other bugfixes, and other such crap.
