Version 4.3 beta2 of SOCKS, dated June 6, 1996

-Fixed #include's for SunOS 4.1.3/4 and others. (<cheewai@cs.ust.hk>
 Chee-Wai Yeung)

-Changed Rgethostbyname() to reuse the internal hostent entries.

=========================================================
Version 4.3 beta of SOCKS, dated May 8, 1996

-Extended the protocol (now version 4A) to allow client to send the
 destination's domain name to the server if the client is unable to
 resolve the name. The server and the SOCKS library are modified to
 handle the extension. Rgethostbyname() is added to the library to
 provide easy SOCKSification. Servers using protocol 4A work with
 clients using protocol 4. Clients using protocol 4A work with
 servers using protol 4 if the clients can resolve all names.

 This eliminate the requirement that the clients have to be able to
 resolve all inetrnal and external domain names. They can now rely on
 the SOCKS server to resolve domain names that the cleints do not
 know.

-Added use of domain names in the configuration files and the route
 files. This can drastically simplify (and shorten) the configuration
 files and reduce program start-up delay.

-Added use of frozen configuration files, which are essentially memeory
 images of parsed configuration files. This also reduces program start-up
 delay since no parsing is necessary. Added six programs in new subdirectory
 mkfc to produce frozen configuration files and to list their contents.

-Added rsockd, a SOCKSified SOCKS server. This allows a number of
 SOCKS servers to be strung together or oraganized into a tree or
 more complicated structures. A request may traverse through
 more than one SOCKS server before reaching its final destination.

-Added NO_RBIND as an option in Makefile. SOCKS servers built with
 NO_RBIND defined does not support RBIND operation. ftp clients must
 use PASV mode in order to work with such SOCKS servers.
 
-Dropped TRY_PASV from Makefile. ftp (rftp) now always try PASV mode
 first. If PASV mode fails and RBIND is supported (i.e., NO_RBIND is
 not defined), it will try the usual PORT command mode.

-Modified the server for the non-multi-homed case so that it sends
 its own IP address in the DSTIP field in its response to BIND request.
 This also bypasses the getsockname() bug in linux.

-Eliminated use of strtok() in SOCKS library.

-Eliminated use of sigprocmask() in sockd.c, which is unnecessary and
 may cause problems in IRIX systems. (Dave Blob, <blob@sy.dl.nec.com>)

-Dropped support for Rrcmd().

-Eliminated VERSATILE_CLIENTS and SHORTENED_RBIND as options. Both
 are automatically used and can not be changed.

============================================================

Version 4.2.2 of SOCKS.CSTC, dated August 29, 1995

-Changed 'defined(sony_news)' in rftp/ftp.c to 'defined(BIND_RESOLVER)'.
 (SAKAI Kiyotaka <ksakai@netwk.ntt-at.co.jp>)

-Added '-DSYSTYPE_SVR4' to OTHER_CFLAGS for irix 4 in Makefile.
 (Ted E. Keller <keller@bfg.com)

-Made the PASV mode in rftp work. I missed an important piece of
 code in the previous patch.

============================================================

Version 4.2.1 of SOCKS.CSTC, dated August 18, 1995

-Added NewsOS 4.2.1R port. (SAKAI Kiyotaka <ksakai@netwk.natc.co.jp>)

-Added #include <sys/stat.h> in sockd.c for FreeBSD. (Chris Inacio
 <cinacio@vt.edu>)

-Corrected zombies problem with satnad-alone sockd. (Simon Lockhart
 <simonl@rd.bbc.co.uk>, Ian Dunkin <imd1707@ggr.co.uk>, Chuck Murcko
 <chuck@telebase.com>, David Mischel <dm@kansas.gene.com>)

-Corrected a problem in DoNewBind() of lib/Rconnect.c in which socket
 'new' is used before it is created. (david higgins <wdh@mail.hcsc.com>)

-Corrected a typo in read_cconf.c where it should be '=' rather than
 '=='.  (Andrew Morrow <andrew@rad.com>)

-Moved the  line #including "socks.h" to the end of the #include's.
 Caused some problems otherwise on some systems. (Stanley Hu
 <hu@valisys.com>)

-Made it possible to do ftp-globbing for AIX 3.2. (Quentin Fennessy
 <Quentin.Fennessy@SEMATECH.Org>)

-Corrected a parameter in setsockopt() in id_open.c for BSDI. (Shin
 Sato <sato@soum.co.jp>)

-Made it possible to try more than one SOCKS servers for Solaris 2.3.
 (Haruyuki Kawabe <Haruyuki.Kawabe@unisys.co.jp>)

-Got rid of a spurious declaration of 'optind' in finger.c. (Sorry,
 I lost the relevant mail message and can't remember who reported
 that.)

-Added compile-time macro TRY_PASV. With this defined, ftp (rftp)
 tries to set the ftp server in PASV mode, i.e., it tries to connect
 to the ftp server for the data connections rather than the usual
 way of having the server connecting to the client. It reverts
 back to the usual way if the PASV attempt fails. The code is adapted
 from that written by Patrick Horgan <patrick@verity.com>.

============================================================
General release of version 4.2 of SOCKS.CSTC, dated February 25, 1995

-Fixed a bug in rfinger that caused it to fail on remote servers
 (Bryan Curnutt)

-Avoid variable name collisions with the pre-defined type "quad" (Bryan
 Curnutt, Hal Pomeranz, Chris Riney, Andreas Siegerti, Paul van_Deurzenq)

-Fixed syslog and IP_TOS problems with DG/UX (Bryan Curnutt)

-Fixed Rrcmd.c, sockd.c, and SendGetDst.c for ISC port. (Larry Jones)

-Minor fix for IRIX 5 port. (Ian Dunkin)

-Minor fix for AIX. (Paul van_Deurzen, Matt Ganis)

-Added the file SOCKS4.protocol, containing a description of the
 SOCKS protocol, version 4.

==============================================================
Pre-release 3 of version 4.2 of SOCKS.CSTC, dated February 14, 1995

-Got rid of the spurious f after #include <syslog.h> in sockd.c. (Everybody
 had fun with this one.)

-Corrected a mistake in argument for gethostname() in telnet.c. (Shin'ichiro
 Tanaka)

-Corrected a mistake in argument for syslog() in sockd.c. (Rob Liebschutz)

-Added -l44bsd to definition of RESOLV_LIB for Ultrix 4.4 (Stephen Ma)

-Changed declarations for defaultNS, defaultDNAME, and defaultSERVER
 from arrays to pointers. Apparently IRIX 4 has problems with the previous
 declarations. (Brad Beach)

-Changed #if ... (BSD <= 43) to #if ... (BSD - 43 <= 0). (Larry Jones,
 Adrian Colley)

-Added #include <net/errno.h> for ISC in finger.c. (Andrew Fullford)

-Corrected a couple of || in ftp.c where && should be used instead. (Andrew
 Fullford)

-Corrected a typo and added comments on how to install in SCO portion of
 the top Makefile. (Thomas Essebier)

-Added comments for doing install for SCO. (Thomas Essebier)

-Modified Rrcmd.c for SCO. Also modify the code in sockd.c for supporting
 Rrcmd for SCO. (Thomas Essebier)

-Corrected a bug (introduced in 4.2 pre2) which caused rtelnet not to work
 for OSF/1. (Bryan Curnutt)

-Modified the setting for OTHER_FLAGS in LINUX portion of top Makefile.
 (Brian Clapper)

-Added DNS_THROUGH_NIS as another flag to be passed down from top Makefile
 to the making of libsocks.a. (Paul van_Deurzen)

-Changed GetAddr() to avoid calling gethostbyname() unless absolutely
 necessary. (Fred Stephens, David Blob)

-Corrected an oversight in stand-alone sockd; previous version does not
 carry out actions specified in #BAD_ID: line.

-Corrected stand-alone sockd's reaction to SIGUSR1; previous version
 neglects to list #BAD_ID: and #NO_IDENTD: lines.

====================================================

Pre-release 2 of version 4.2 of SOCKS.CSTC, dated November 21, 1994

-Added DG/UX port. (Brian Curnutt)

-Added FreeBSD 1.1.5.1 port. (Brian Curnutt)

-Overhauled the ISC 4.0.1 port. (Larry Jones)

-Added IRIX 5 port (Ian Dunkin, Chris Riney)

-Added macro BIND_RESOLVER in Makefile for systems that don't have h_errno
 defined in expected places. (Edwin Kremer)

-Corrected typos in man pages and comments. (Edwin Kremer)

-Deleted a spurious argument in a call to sprintf. (Edwin Kremer)

-Changed the way to supress logging on clients. (Edwin Kremer)

-Fixed long/int problem for Alpha OSF V1.3 in retlent/commands.c. (Heinz Naef)

-Corrected some problems for Linux port. (Cornell Kinderknecht, Craig Metz)

-Fixed problem with telnet's handling of repeated interrupts in Solaris
 and UnixWare. (Brian Clapper)

-Fixed opendir() problem for Alpha OSF (David Mischel)

-Includes stand-alone sockd as an option. (David Mishel)

-Made client read and process socks.conf only once. (David Mischel)

-Modified rfinger to work correctly with -l option. (David Blob)

-Renamed some functions so that other than the R* functions and
 SOCKSinit, all other externally visible functions in libsocks.a
 have names that start with socks_ .

=======================================
Pre-release 1 of version 4.2 of SOCKS.CSTC, dated June 30, 1994

-Made consistent use of u_int32 for alpha port. (David Mischel)

-Included partial port (server and library) for NextStep 3.2. (William Lewis)

-Made clients behave like non-SOCKSified programs if /etc/socks.conf
 is absent.

-Made the printing of client banner controllable using environment
 variable SOCKS_BANNER. (Bryan Curnutt)

-Added compile-time option to disable syslog from clients. (Jason Baietto)

-Added DNS_THROUGH_NIS in Makefile to accommodate sites which resolve
 DNS through their NIS server and have no local /etc/resolv.conf.

-Include bsdinstall, a shell script written by Phil Hochstetler,
 phil@sequent.com, which simulate BSD's install for SYSV systems. 

=======================================
Beta release of version 4.2 of SOCKS.CSTC, dated March 21, 1994

-Added code to allow use of filenames in the *=userlist field.
 The filenames must be a complete path (starting with /). Userids
 and comments can be used in such files. Updated the man pages
 sockd.conf.5 and socks.conf.5 to document the new feature.

-Merged in code to show sockd's usage details in the output of
 ps commamd. Only works with non-SYSV hosts. (Matt Cohen)

========================================
Beta release of version 4.2 of SOCKS.CSTC, dated February 22, 1994

-Corrected mistakes in determining privileged/non-privileged port.

-Dereferenced addr in saddrtoname.c. (Anthony Starks)

-Added code to zero out all sockaddr_in structures before using them.
 (Carlos Mora)

-Added code to treat IP address 0.0.0.0 as localhost. (Anthony Shipman)

-Added code to save host and port after a successful direct connect.
 (Ian Dunkin)

-Made the facility and the log levels for syslog configurable in
 socks.h. (Jon Luini)

-Made the optimization flag for cc configurable in Makefile. (Craig Metz)

-Made SendDst() and GetDst() quit when write() or read() returns 0.
 (David Nochlin)

-Added code to use iotcl(...,FIOSSAIOOWN...) in place of
 fcntl(...F_SETOWN...) for hpux. (John Brezak)

=======================================
Beta release of version 4.2 of SOCKS.CSTC, dated February 9, 1994.

Changes since release 4.1

1) Merged in SCO/ODT 2.x and BSDi v1.0 ports by Chris Riney.

2) Merged in PS/2 AIX 1.2.1 port by Craig Metz.

3) Merged in DEC OSF 1.3 port by Alain Mellan.

4) Merged in the code to prevent premature closing of a TCP session
   on the SOCKS server when the server is much faster than the
   client host. Contributed by Andy McFadden.

5) Merged in the code for using environment variable SOCKS_DNAME
   to override the setting of SOCKS_DEFAULT_DNAME. Contributed by
   Jon Luini.

6) It handles non-blocking connect() call correctly, at least for
   the way non-blocking connect()'s are done in Mosaic 2.1. This
   necessitates the addition of Rselect() to the library.

7) You can build libsocks.a with Rbind() which accepts the same
   calling sequence as regular bind(), i.e., without the extra
   last argument.

8) Call to SOCKSinit() is made optional.

9) Rrcmd() is optionally added to the library.

The combined effect of 6) through 9) is that, for most applications,
you can do the SOOCKSification without doing anything to the code
at all. Just add

-Dconnect=Rconnect -Dbind=Rbind -Dgetsockname=Rgetsockname -Dlisten=Rlisten -Daccept=Raccept -Drcmd=Rrcmd -Dselect=Rselect

to cc and make sure the appropriate SOCKS library is used in linking.
I hope this will encourage developers to produce SOCKSified version
of their applications. (By the way, if you really want that, you should
certainly make the effort of letting your friendly software vendors
or developers know about it. Customers's demands count a great deal
in the software market.)

10) In anticipation of client hosts that can't run identd, a new
   filed '?=n' is added to the control line for sockd.conf. This
   enables the use of invoking sockd with -I option to use identd
   in general but have it turned off for some specific client hosts.
   (You can also use '?=I' or '?=i' to turn identd on for a line, I
   just see the use of '?=n' as more likely.)

11) Deliver out-of-band data end to end.

12) Connection to 127.0.0.1 (localhost) is always direct. No more
   need to specify that in /etc/socks.conf.

	Ying-Da Lee	(214)518-3490	(214)518-3552 (FAX)
	Principal Member, Technical Staff
	NEC Systems Laboratory, C&C Software Technology Center /
	ylee@syl.dl.nec.com

