summaryrefslogtreecommitdiffstats
path: root/xpa/doc/changelog.html
blob: c7b146aa7dea0ecac814d40140f9bac0307b0e91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
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>