summaryrefslogtreecommitdiffstats
path: root/xpa/doc/changelog.html
diff options
context:
space:
mode:
Diffstat (limited to 'xpa/doc/changelog.html')
-rw-r--r--xpa/doc/changelog.html806
1 files changed, 806 insertions, 0 deletions
diff --git a/xpa/doc/changelog.html b/xpa/doc/changelog.html
new file mode 100644
index 0000000..c7b146a
--- /dev/null
+++ b/xpa/doc/changelog.html
@@ -0,0 +1,806 @@
+<HTML>
+<HEAD>
+<TITLE>XPA ChangeLog</TITLE>
+</HEAD>
+<BODY>
+<H2>XPA ChangeLog</H2>
+
+<P>
+This ChangeLog covers the XPA 2 implementation. It will be updated
+as we continue to develop and improve XPA. The up-to-date version can be
+found <A HREF="http://hea-www.harvard.edu/RD/xpa/changelog.html">here</A>.
+
+<H2> Public Release 2.1.16 (TBD)</H2>
+<ul>
+<li> Ensure that mingw utilizes Windows error codes instead of *nix codes
+</ul>
+
+<H2> Public Release 2.1.15 (July 23, 2013)</H2>
+<ul>
+<p>
+<li> Added support for large data transfers
+<P>
+<li> XPAGet and XPASet now pass size_t instead of int for lengths
+<p>
+<li> Send and receive callbacks now pass size_t instead of int for lengths
+<p>
+<li> Port to mingw (Windows)
+</ul>
+
+
+<H2> Public Release 2.1.14 (June 7, 2012)</H2>
+<ul>
+<P>
+<li> Fixed several memory leaks in the Tcl wrappers (tcl.c).
+<P>
+<li> Use Tcl stubs library for linking shared Tcl, if available.
+</ul>
+
+<H2> Public Release 2.1.13 (April 14, 2011)</H2>
+<ul>
+<P>
+<li> An atexit handler is no longer installed automatically (it crashes
+Tcl 8.5.8 applications). Call XPAAtExit(void) to install the handler.
+<p>
+<li> Removed permission checking from Find() on cygwin systems. This was broken
+by Windows 7.
+<p>
+<li> Removed addition of -no-cpp-precomp flag from gcc 4.2 and beyond (Mac).
+</ul>
+
+<H2> Public Release 2.1.12 (January 26, 2010)</H2>
+<ul>
+<p>
+<li> Added XPA_HOST environment variable to allow users to specify
+the hostname (and hence, ip) component of the INET method id. This is
+useful, for example, if you want to register an access point using a
+VPN-generated IP instead of the canonical IP.
+<p>
+<li> Fix typo in Tcl binding to xpainfo causing a crash after 2 invocations.
+</ul>
+
+<H2> Public Release 2.1.11 (December 7, 2009)</H2>
+<ul>
+<p>
+<li> Generalized XPANSKeepAlive() to send messages to xpans, proxy xpans, or
+both. The default is to send just to proxies (e.g. chandra-ed).
+<p>
+<li> Changed XPANSKeepAlive() to send an in-band new-line char to
+xpans, changed xpans to handle an in-band new-line as a keep-alive
+message. Necessitated by Cisco routers that clear the URG flag in
+a TCP packet, breaking OOB data transfer for the whole Internet, as
+well as the OOB-based keep-alive implemented in xpans.
+<p>
+<li> In xpans, print warning when the keep-alive option switch is used.
+<p>
+<li> Port to mingw (thanks to B.Schoenhammer)
+<p>
+<li> Change OOB character sent by xpans keepalive to a space, trying to working around cisco routers that force OOB data into the inbound stream.
+<p>
+<li> fix gcc fprintf warning in xpans.c
+</ul>
+
+<H2> Public Release 2.1.10 (September 1, 2009)</H2>
+<ul>
+<p>
+<li> Update mklib and configure.ac to support 64-bit builds on Macs.
+<p>
+<li> Fixed bug in XPAAccess() in which the returned names could have an extra
+(bogus) character when the target is an explicit ip:port or local socket file.
+<p>
+<li> Add setjmp/longjmp support to xalloc.
+<p>
+<li> Add XPASaveJmp(void *env) as a high-level interface to xalloc_savejmp();
+</ul>
+
+<H2> Internal Release 2.1.9</H2>
+<ul>
+<p>
+<li> Fixed a bug that prevented an access point starting with a number
+from being recognized peoperly. NB: a pure number still signifies a
+port on the current machine. Also num:num signifies ip:port, where ip
+can be a pure hex value or the canonical form vvv.xxx.yyy.zzz.
+<p>
+<li> Modified internal Launch() routine to use posix_spawn(), if necessary.
+This is required for OS X 10.5 (leopard), which frowns upon use of fork()
+and exec(). Also modified zprocess routines to use Launch().
+<p>
+<li> Added XPASetFree(xpa, void (*myfree)(void *)) routine to allow callbacks
+to specify a free routine other than malloc free (e.g. Perl garbage collection).
+<p>
+<li> XPACmdAdd() now checks to ensure that it was passed an XPA struct created
+by XPACmdNew().
+<p>
+<li> Change launch.h to xlaunch.h to avoid conflict with OS X.
+</ul>
+
+<H2> Public Release 2.1.8 (1 November 2007)</H2>
+<ul>
+<p>
+<li> A public release to complete current XPA development work.
+</ul>
+
+<H2> Patch Release 2.1.7b[1,2] (Feb 22, 2006; March 8, 2007)</H2>
+<ul>
+
+<p>
+<li> Added a convenience null to the end of the buffers returned by XPAGet.
+
+<p>
+<li> Added code to avoid calling atexit routine if a fork'ed child
+calls exit() instead of _exit().
+
+<p>
+<li> Added XPA_CLIENT_DOXPA environment variable to turn off client
+processing of xpa server requests.
+
+<p>
+<li> Added --version to xpaset, xpaget, xpainfo, xpaaccess, xpans to
+display XPA version and exit.
+
+<p>
+<li> Added support for integrating XPA into a Gtk loop.
+
+<p>
+<li> xpaaccess now returns its answer in the error code as well as to stdout
+(without the -n switch, it returns 1 for a match, with the -n switch,
+the number of matches is returned).
+
+<p>
+<li> Fixed bug which prevented xpans from being started up automatically
+by an xpa server if its pathname contained a space character.
+
+<p>
+<li> Fixed bug in MINGW port of xpans in which an XPA server that
+terminated via an interrupt was not being properly removed from the
+list of registered access points.
+
+<p>
+<li> Added XPA_LOGNAME to override LOGNAME when registering username
+
+<p>
+<li> Upgraded swish-e indexing code to 2.4.5.
+
+</ul>
+
+<H2> Patch Release 2.1.6 (4 May 2005)</H2>
+<ul>
+
+<p>
+<li> Added -P switch to xpans to enable experimental proxy support
+(default is disabled). An argument of 1 processes proxy requests in
+the same thread as xpans requests, while an argument of 2 processes
+proxy requests in a separate thread. (The latter is recommended to
+avoid xpans timeouts, since xpa callback processing can take a long
+time.)
+
+<p>
+<li> Added ability to build shared libraries (done automatically with
+configure --enable-shared) with compilers other than gcc.
+
+<p>
+<li> Made yet another attempt to build shared libraries under OS X.
+
+<p>
+<li> Fixed a server bug in Tcl support under Windows (introduced early
+in 2.1.6) which caused an occasional SEGV.
+
+<p>
+<li> Fixed race condition in cases where 2 or more servers makes client calls
+to one another.
+
+<p>
+<li> Fixed bug in the XPA handler routine in which an access point was
+turned off if an error occurred in that routine (as opposed to the
+user-defined callback routine).
+
+<p>
+<li> Fixed race condition when "ack=false" flag (or -n) is used with XPASet()
+(or xpaset).
+
+<p>
+<li> Added defensive code to XPA handler to ensure that the passed XPA record
+is valid.
+
+<p>
+<li> Tcl/XPA servers such as ds9 were not turning off select() on the
+xpa channels inside an xpa callback, as required. This is now fixed.
+
+<p>
+<li> Added timestamps to most server and client error messages if the
+XPA_TIMESTAMP_ERRORS variable is set. This is useful when XPA errors are
+being logged in an error log (e.g. Web/CGI use).
+
+<p>
+<li> Generated PostScript and PDF versions of the help pages.
+
+<p>
+<li> Moved OPTIONS section before (often-lengthy) DESCRIPTION section in
+man pages.
+
+<p>
+<li> All memory allocation now performs error checking on the result.
+
+<p>
+<li> Removed some compiler warnings that surfaced when using gcc -O2.
+
+<p>
+<li> Updated configure.ac to better support Tcl in Panther with Apple
+Frameworks.
+
+</ul>
+
+<H2> Patch Release 2.1.5 (12 January 2004)</H2>
+<ul>
+
+<p>
+<li> Fixed bug in XPAPoll(). Erroneously, no requests were being
+processed when maxreq==0. Now, all pending events are processed, as
+per the documentation.
+
+<p>
+<li> Added ack=false to XPAInfo() (and corresponding -n to xpainfo)
+so that client does not wait for a response from the server. This is
+essential in cases where XPA servers wish to send info messages to
+one another without causing a race condition.
+
+<p>
+<li> Generated man pages from the html pages. These are installed
+automatically at build time.
+
+<p>
+<li> The xpans program with Unix sockets now uses a lock file to signal
+that it is running, in order to avoid a potential (but rare) race
+condition at startup.
+
+<p>
+<li> Code that calls Unix-type bind() now manipulate umask() to ensure that
+all users have write permissions to the socket file (OS X apparently uses
+these permissions while previous platforms ignore them).
+
+<p>
+<li> Configure now checks for socklen_t type (OS X does not define it).
+
+<p>
+<li> Added an atexit function to run XPAFree. The aim here is to delete Unix
+socket files on exiting.
+
+<p>
+<li> Under Windows, the Tcl event-handling code now blocks for 1/1000 of a
+second instead of not blocking at all (which inadvertently used 100% of cpu).
+
+<p>
+<li> Upgraded Tcl/Tk support to 8.4.
+
+<p>
+<li> Made another round of checks was made through all instances of
+strcat, strcpy, etc. to look for potential buffer overflows. Changed
+all instances of sprintf() to snprintf().
+
+<p>
+<li> Class and name designators are now limited to 1024 characters, for
+no particular reason.
+
+<p>
+<li> The obsolete $SAORD_BIN variable was being added to the path when
+searching for xpans. This is no longer the case.
+
+<p>
+<li> Fixed non-ANSI compiler errors in both xpa.c and xpans.c.
+
+<p>
+<li> Fixed minor problems to support compilation with g++.
+
+<p>
+<li> Ported to Intel icc and gcc 3.3 compilers.
+
+<p>
+<li> Upgraded autoconf to 2.57. Included in this upgrade is a change that
+makes gcc the default compiler (use "configure CC=cc" to change this).
+Also, by default, the Tcl shared object is no longer automatically built
+if the Tcl libraries are used. Use the --enable-tclshlib switch in
+configure to enable this feature.
+
+<p>
+<li> Changed license from public domain to GNU GPL.
+
+</ul>
+
+<H2> Patch Release 2.1.4 (24 March 2003)</H2>
+<ul>
+
+<p>
+<li> Made inet method unique, even when hosts are behind a firewall using
+the same ports (on different local machines).
+
+<p>
+<li> The initial connection from an xpa server to a local xpans now is
+controlled by a timeout (default 5 sec, controlled by XPA_CONNECT_TIMEOUT
+variable). This should prevent a hang on connect() if the network
+is not set up correctly.
+
+<p>
+<li> Fixed rare race condition when an XPA server callback performed its own
+XPAGet or XPASet call to another XPA server.
+
+<p>
+<li> Use POSIX O_NONBLOCK for non-blocking I/O in fcntl call if it
+exists, instead of O_NDELAY.
+
+</ul>
+
+<H2> Patch Release 2.1.3 (26 September 2002)</H2>
+<ul>
+
+<p>
+<li> Added -k [sec] switch to xpans to support sending one-byte keepalive
+messages from xpans to registered xpa servers.
+
+<p>
+<li> Added XPANSKeepAlive routine (and Tcl equivalent) to allow
+xpa servers to send a one-byte keepalive message to xpans.
+
+</ul>
+
+<H2> Patch Release 2.1.2 (18 July 2002)</H2>
+<ul>
+
+<p>
+<li> The "-help" reserved command now also displays the XPA version, if
+no explicit sub-commands are specified.
+
+<p>
+<li> Change internal state of xpans proxy to save ip:port value of a
+server behind a NAT firewall. This is required to give some hope of
+distinguishing multiple instances of ds9 running behind NAT.
+
+</ul>
+
+<H2> Patch Release 2.1.1 (20 June 2002)</H2>
+<ul>
+
+<p>
+<li> Added a version check between xpans and an access point,
+performed when it gets registered by an XPA server. If the server
+has a version greater than the xpans version, a warning is issued by
+both programs.
+
+<p>
+<li> Added a boolean XPA_NSREGISTER environment variable to allow an
+XPA server to skip xpans registration. The default is to register with
+the name server. If set to "false", the access point still is set up
+but it is not registered with an xpans. It can be registered later on
+(using -remote or -proxy, for example).
+
+<p>
+<li> Fixed bug in which xpans was still listening on any interface when
+XPA_METHOD was localhost (instead of just listening on localhost).
+
+</ul>
+
+<H2> Public Release 2.1.0 (22 April 2002)</H2>
+
+<P>
+New features include:
+
+<ul>
+<p>
+<li> Support for proxy access to XPA servers (e.g. ds9) situated
+behind a firewall (useful for NVO-type applications).
+
+<p>
+<li> Improved support for allowing remote machines access rights to the
+XPA access points (useful for NVO-type applications).
+
+<p>
+<li> Ability for XPAAccess() routine and xpaaccess program to contact XPA
+ directly.
+
+<p>
+<li> Support for a clipboard access point that allows clients to store ASCII
+state information in an XPA-enabled server.
+
+<p>
+<li> Improved support for Windows platform, as well as new support for Mac OSX.
+</ul>
+
+<H2> Pre-Release 2.1.0e (2 April 2002)</H2>
+<UL>
+
+<P>
+<LI> Removed the environment variable generated by each XPA access
+point (of the form XPA_name=method). The putenv() call was causing ds9
+to crash under both Linux and LinuxPPC during a socket operation. We
+suspect a bug in putenv but cannot prove it and this feature is not
+essential, so ...
+
+</UL>
+
+<H2> Pre-Release 2.1.0e (1 April 2002)</H2>
+<UL>
+
+<P>
+<LI> Fixed an uninitialized variable in xpamb which prevented it from
+working at all on some systems.
+
+<P>
+<LI> Changed xpamb switch from "-add" to "-data" (to store named data).
+
+<P>
+<LI> Changed how xpamb works with xpaget so that xpamb can return data
+from XPA access points as well as from stored data. (Previous versions
+only returned stored data.) Now, you can retrieve stored data
+explicitly using the -info and/or -data switches. For example:
+<PRE>
+ xpaget xpamb -info foo
+</PRE>
+will return info about the previously stored data named foo. If
+neither switch is present, then the name is assumed to be an XPA access
+point.
+</UL>
+
+<H2> Pre-Release 2.1.0e (25 March 2002)</H2>
+<UL>
+
+<P>
+<LI> Changed symbol for default port from "*" to "$port" to avoid
+a syntactical conflict between class:* and machine:* when processing an
+XPA access point class:name specification. Thus, the default inet
+method now is '$host:$port' instead of '$host:*'.
+
+</UL>
+
+<H2> Pre-Release 2.1.0e (19 March 2002)</H2>
+<UL>
+
+<P>
+<LI> Removed timeout check when reading data (in clients using xpaget
+and servers filling the data buffer). We have more and more cases
+where we need to wait a long time to retrieve data (e.g., slow
+networks or receiving data being compressed on the fly).
+
+<P>
+<LI> Moved call to sigaction(SIGCHLD,...) out of XPAOpen(), so that it
+is only executed when needed by XPAGet()/XPASet() routines called from
+within xpans/proxy. But then changed logic to use a double fork() instead
+of sigaction() to prevent zombies (Stevens Adv. Programming p 202).
+
+<P>
+<LI> Each XPA access point now generates an environment variable of the
+form XPA_name=method so that children can communicate with the parent access
+point more easily.
+
+<P>
+<LI> Added version option to Tcl xparec:
+<PRE>
+ if [catch { xparec "" version } version] {
+ puts "pre-2.1.0e"
+ } else {
+ puts [split $version .]
+ }
+</PRE>
+to help differentiate between XPA versions within Tcl code.
+
+</UL>
+
+<H2> Pre-Release 2.1.0e (14 February 2002)</H2>
+<UL>
+<P>
+<LI> Fixed client handling of out-of-sync messages.
+</UL>
+
+<H2> Pre-Release 2.1.0e (11 February 2002)</H2>
+<UL>
+
+<P>
+<LI> Fixed client.c/xopen() so that it does not open an extra socket.
+
+<P>
+<LI> Fixed xpainfo/xopen() to prevent client from hanging waiting for ack.
+
+<P>
+<LI> Modified stest to generate xpaaccess points xpa, xpa1, c_xpa, and
+i_xpa (or more generally, <name>, <name>1, c_<name>, i<name>) to allow
+more flexible testing of templates. Also added -a for testing XPAAccess().
+
+</UL>
+
+<H2> Beta Release 2.1.0b10 (31 January 2002)</H2>
+<UL>
+
+<P>
+<LI> Added support for Mac OSX/Darwin to configure file.
+
+</UL>
+
+<H2> Beta Release 2.1.0b9 (26 January 2002)</H2>
+<UL>
+
+<P>
+<LI> Fixed bug in client library that caused XPAAccess() call to hang.
+
+</UL>
+
+<H2> Beta Release 2.1.0b8 (4 January 2002)</H2>
+<UL>
+
+<P>
+<LI> Made modifications to Makefile.in to make releases easier.
+
+<P>
+<LI> Added instructions to Makefile.in so that xpa.h will always have
+correct #defines for XPA_VERSION, XPA_MAJOR_VERSION, XPA_MINOR_VERSION,
+and XPA_PATCH_LEVEL.
+
+</UL>
+
+<H2> Beta Release 2.1.0b7 (21 December 2001)</H2>
+<UL>
+
+<P>
+<LI> Added -proxy switch to -remote sub-command to allow remote access
+through a firewall, using xpans as a proxy server. The support for proxy
+processing required a change to the client/server protocol. This means
+that new xpa servers will not work with old xpa clients (although new
+xpa clients will work with old xpa servers). For details about proxy
+firewall support, see http://hea-www.harvard.edu/RD/xpa/inet.html.
+
+<P>
+<LI> Fixed Tcl support for XPA under Windows/Cygwin by re-writing
+the code used to add XPA to the Tcl event loop. This fix makes ds9
+support for XPA much more stable under Windows.
+
+<P>
+<LI> Added the shutdown() call to XPA under Cygwin/Windows before
+closing send() sockets. It appears that a Cygwin recv() socket call
+does not always sense when the other end closes the socket using
+close(). This measure must be considered a hack, since the actual
+problem was never resolved.
+
+<P>
+<LI> Added code to protect accept() and select() calls from interrupts.
+
+<P>
+<LI> Extended syntax of the environment variable XPA_NSINET to:
+<PRE>
+ setenv XPA_NSINET host:port[,port[,port]]
+</PRE>
+to allow specification of the XPA access point port for xpans,
+as well as the proxy data port.
+
+<P>
+<LI> Modified xpans log file so that it contains the xpaset commands
+required to reconnect with xpa servers.
+
+<P>
+<LI> xpans now deletes its Unix socket files.
+
+</UL>
+
+<H2> Beta Release 2.1.0b6 (29 October 2001)</H2>
+<UL>
+
+<P>
+<LI> Implemented a reserve public access point named -clipboard so
+that clients can store ASCII state information on any number of named
+clipboards. Clipboards of the same name created by clients on
+different machines are kept separate. The syntax for creating a
+clipboard is:
+<PRE>
+ [data] | xpaset [server] -clipboard add|append [clipboard_name]
+ xpaset -p [server] -clipboard delete [clipboard_name]
+ xpaget [server] -clipboard [clipboard_name]
+</PRE>
+Use "add" to create a new clipboard or replace the contents of an existing
+one. Use "append" to append to an existing clipboard.
+
+</UL>
+
+<H2> Beta Release 2.1.0b5 (22 October 2001)</H2>
+<UL>
+
+<P>
+<LI> Use FD_SETSIZE instead of getdtablesize() to determine how many files
+to check during select();
+
+<P>
+<LI> Under Cygwin, the launch() routine now uses the Cygwin spawnvp()
+instead of fork()/exec() where possible (i.e., if no stdfiles are
+being redirected). This is recommended by Cygwin's (skimpy) on-line
+documentation and seems to fix the problems ds9 had when starting xpans
+automatically.
+
+<P>
+<LI> Added error check to select() call in xpans.
+
+</UL>
+
+<H2> Beta Release 2.1.0b4 (24 September 2001)</H2>
+<UL>
+
+<P>
+<LI> The launch() now can return an error code if the execv() system
+call fails (something system() does not do).
+
+<P>
+<LI> INET socket calls between xpa clients and servers now will use
+localhost if they are on the same machine. This protects against
+Linux systems where the hostname is hardwired (wrongly) in a DHCP
+environment.
+
+</UL>
+
+<H2> Beta Release 2.1.0b3 (6 September 2001)</H2>
+<UL>
+
+<P>
+<LI> Modified xpans so that, in the case of a firewall, it tries to
+correct the specified ip:port by matching against the ip found in
+the socket packet at accept() time.
+
+<P>
+<LI> Replaced system() call used to start xpans automatically with
+a special launch() call, which performs execvp() directly without going
+through sh. (launch() works under DOS and has fewer security problems.)
+
+<P>
+<LI> Fixed bug in xpans in which its xpa port was always being set to 14286.
+
+</UL>
+
+<H2> Beta Release 2.1.0b2 (17 August 2001)</H2>
+<UL>
+
+<P>
+<LI>Added support for -remote command, which registers the access
+point in the XPA name server of the specified remote server, and gives
+the remote server access rights to the access point. This is used, for
+example, to give data servers xpa access to ds9 so that data can be
+sent to ds9 as a result of a CGI-based Web query.
+
+<P>
+<LI>Reserved commands (except "-help" and "-version") now can only be
+executed on the machine on which the xpa service is running (not
+through -remote servers).
+
+<P>
+<LI>Fixed bug in xpans in which a bad telnet command could hang the program.
+
+<P>
+<LI>Added -s [security file] to xpans to allow logging of all external
+connections.
+
+</UL>
+
+<H2> Beta Release 2.1.0b1 (6 August 2001)</H2>
+<UL>
+<P>
+<LI> The xpaaccess client program and XPAAccess() client subroutine
+were modified so that an access-type query can directly contact the
+xpa servers matching the requested xpa template, instead of just
+querying the name server for registered access points. This avoid the
+race condition in which an access point is registered but is not yet
+available, perhaps because the server has not yet entered its event
+loop. Note that the calling sequence of the XPAAccess() routine was
+changed to return all matching access points and their availability
+status (instead of just returning the number of registered access
+points). Because of this, we are calling this a minor release instead
+of a patch.
+
+<P>
+<LI> Added support for XPA_PORT and XPA_PORTFILE environment variables
+to allow specification of the port to be used by the command channel
+(and data channel, if an optional second port is specified) for a given
+access point.
+
+<P>
+<LI> Added -m switch to xpaget, xpaset, xpainfo, xpaaccess to allow
+override of the XPA_METHOD environment variable.
+
+<P>
+<LI> Changed the default name of the ACL file from xpa.acl to acls.xpa.
+
+<P>
+<LI> Fixed bug in which it was not possible to send a "set ACL"
+command to an XPA server which did not have a receive callback (i.e.,
+did not allow xpaset). The xpans program is one such server. It now is
+possible to set the ACL on xpans.
+
+<P>
+<LI> We have discovered that Tcl support for datachan and cmdchan is
+broken under Windows due to an unexplained incompatibility between
+Cygwin sockets and Win32 sockets. We therefore have removed datachan
+and cmdchan from the Windows/Tcl support until further notice.
+
+<P>
+<LI> Extended the behavior of the XPA_DEFACL environment variable so that
+it can support more than one acl, using a list of semi-colon delimited
+controls such as: setenv XPA_DEFACL '*:* $host +; *:foo1 otherhost +'.
+
+<P>
+<LI> Fixed bug in which the class:name specifier "*:*" was erroneously
+trying to access the xpans name server, instead of accessing all
+access points.
+
+<P>
+<LI> Support TMPDIR and TMP environment variables as well as XPA_TMPDIR.
+
+</UL>
+
+<H2> Patch Release 2.0.5 (10 November 2000)</H2>
+<UL>
+<P>
+<LI> Added support for Tcl on Windows where there is no select()-based
+event loop (i.e., where there is no Tcl_CreateFileHandler call in Tcl)
+<P>
+<LI> Minor fixes in Makefile for installing on Windows
+<P>
+<LI> Minor compiler fixes from gcc -Wall.
+</UL>
+
+<H2> Patch Release 2.0.4 (20 September 2000) </H2>
+<UL>
+<P>
+<LI> Removed extraneous include of varargs.h from find.c.
+<P>
+<LI> Ported to SGI C compiler, which caught lots of unused variables, etc.
+<P>
+<LI> Ported to Cygwin/Windows, which required that we change socket read()
+and write() calls to recv() and send() respectively. Also had to ensure that
+we only did socket I/O on sockets (no fileio).
+</UL>
+
+<H2> Patch Release 2.0.3 (15 June 2000) </H2>
+<UL>
+<P>
+<LI> Fixed the client XPASet() and XPASetFd() calls to handle the specified
+max number of connections (they were ignoring this argument, leading to
+memory overwrites).
+<P>
+<LI> Fixed Makefile.in so that CFLAGS and LDFLAGS are not hard-wired values.
+<P>
+<LI> Fixed word.h to load malloc.h and stdlib.h only if they exist.
+<P>
+<LI> Documentation fixes to programs.html (in xpaaccess) and client.html
+(XPANSLookup).
+<P>
+<LI> Added explicit typecast to strlen() argument to MAX #define in
+XPAClientStart (strlen() is unsigned in Linux, which can break MAX).
+<P>
+<LI> Removed bogus Imakefile from directory.
+<P>
+<LI> Changed directory name to include patch level (i.e., xpa-2.0.3).
+</UL>
+
+<H2> Patch Release 2.0.2 (9 September 1999)</H2>
+<UL>
+<P>
+<LI> Fixed server mode (-s) in the xpaset program by properly cleaning up
+the input buffers (sending commands and data in server mode was broken).
+</UL>
+
+<H2> Patch Release 2.0.1 (6 August 1999)</H2>
+<UL>
+<P>
+<LI> Fixed the Tcl binding code (tcl.c) for 64-bit machines (Dec Alpha)
+(erroneously used %x instead of %p when converting pointers to ASCII).
+<P>
+<LI> Got rid of a few compiler warnings on 64-bit machines (a few are
+unavoidable since we must cast int to void * and back when passing around
+client data).
+</UL>
+
+<H2> Public Release 2.0 (27 May 1999)</H2>
+<UL>
+<P>
+<LI> "a new day with no mistakes ... yet"
+</UL>
+
+<HR>
+<P>
+<A HREF="./help.html">Index to the XPA Help Pages</A>
+
+<HR>
+<H5>Last updated: 22 April 2002</H5>
+</BODY>
+</HTML>