Version 4.3 beta2 of SOCKS, dated June 6, 1996
-Fixed #include's for SunOS 4.1.3/4 and others. (<firstname.lastname@example.org>
-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
-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, <email@example.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 <firstname.lastname@example.org>)
-Added '-DSYSTYPE_SVR4' to OTHER_CFLAGS for irix 4 in Makefile.
(Ted E. Keller <email@example.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 <firstname.lastname@example.org>)
-Added #include <sys/stat.h> in sockd.c for FreeBSD. (Chris Inacio
-Corrected zombies problem with satnad-alone sockd. (Simon Lockhart
<email@example.com>, Ian Dunkin <firstname.lastname@example.org>, Chuck Murcko
<email@example.com>, David Mischel <firstname.lastname@example.org>)
-Corrected a problem in DoNewBind() of lib/Rconnect.c in which socket
'new' is used before it is created. (david higgins <email@example.com>)
-Corrected a typo in read_cconf.c where it should be '=' rather than
'=='. (Andrew Morrow <firstname.lastname@example.org>)
-Moved the line #including "socks.h" to the end of the #include's.
Caused some problems otherwise on some systems. (Stanley Hu
-Made it possible to do ftp-globbing for AIX 3.2. (Quentin Fennessy
-Corrected a parameter in setsockopt() in id_open.c for BSDI. (Shin
-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
-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 <email@example.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
-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
-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,
-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
-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.
-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 126.96.36.199 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
-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,
firstname.lastname@example.org, 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.
-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.
-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.
-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
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
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 /