Isect Change Log

### 4/30/2002

- A new directory, gs/, includes test code for allowing Gemstone Smalltalk code to reply back to isectd directly.

### 1/16/2001

- Lots of changes. Please read CHANGES after unpacking the distribution.
- Fixed bug where isectd ignored client's header's 'reply' value. isectd was *always* sending replies. Unsure when this bug was introduced.
- isectd no longer waits to receive worker badges after starting them. This may have contributed to some workers' inability to log on after being started-- isectd was too busy waiting.
- Much improved Smalltalk code, including a new worker that allows clients to submit smalltalk to be executed. Really neat stuff. Expect more updates on this later. When combined with isdclient this gives the ability to have command-line Smalltalk programs. I'm thrilled.
- Fixed bug in python/isdclient.py - it wasn't setting the reply option in the header. This bug was hidden by the bug in isectd above. Once isectd was fixed, the bug in isdclient.py was found.

### 12/4/1999

- isd/connectto.c - strtol() for service now checks if endptr != service to see that *something* was translated.

### 11/3/1999

- isdexecd now accepts the 'stop' command. This proved to be the best way to kill it and a smalltalk implementation of isdexecd.

### 9/27/1999

- This distribution now includes some prototype code for interfacing IBM's Net.Data to isect's IO library. From within Net.Data macros, programmers can now call isdLogin, isdSend, isdRecv, and isdLogout. I'm not experienced enough in Net.Data programming to know if I've defined the interface in the most optimal way. If you are and you have some suggestions for how it can be better implemented, please send me an email.

### 9/27/1999

- isd/isdio.h - prototype for isdLogin changed to use const char *.
- isd/init.c - added to create function in library that's easy to create interfaces to, like smalltalk and Java. If they can call this do-nothing function then they've at least built the interfaces right.

### 9/23/1999

- execd/execd.c - now uses sigaction() instead of signal(), fixing a bug on AIX where isdexecd() would loop on SIGCHLD until core-ing out.
- moved reaper() to top of execd.c, to eliminate having to define it extern.

### 9/23/1999

- Now compiles/links on OS/390 MVS Unix System Services (formerly Open Edition). It does not (yet) interoperate with non-EBCDIC systems. We're still deciding how to detect code-page translations are necessary and where those translations should occur (mainframe CPU cycles are expensive).
- Changes for latest AIX compiler in tabworker (v0.2)

### 9/16/1999

- Development release 1.0.1 is started and includes the writev()/EINTR code mentioned below.
- strtime.c moved from /isd to /lib, which means it moved from libisdio to libisect
- configure.in checking for xti.h and netinet/tcp.h

### 9/15/1999

- configure.in - checking for writev()
- isd/send.c - if writev() exists write both the isdHeader and the message with it. Intended to reduce the number of system calls, improve TCP throughput, defeat Nagle, and generally improve performance.

  The return value from isdSend(), as a result, will be 64 bytes (sizeof isdHeader) larger than usual in the event of successful writev()s. This has not been put into the distribution yet.

  Also, the writev() was inserted inside a do{}while; loop checking for EINTR to make sure silly things like interrupts don't cause write errors.

- isd/recv.c - the recv()s now check for errno == EINTR to avoid unnecessary error returns (as above).
- These changes are not going into the 1.0 release, but will instead go into a 1.0.1 release. At some point we have to stop adding things to 1.0.

### 9/13/1999

- during documentation I discovered I never implemented the 'reject' command so I deleted it from the 'help' in commands.c.
- workerready.c - corrected call to isdLogEvent, to record the worker's ID rather than the structure address.
- documented remaining isectd commands

### 9/07/1999

- isectd/commands.c - fixed a segmentation fault when the 'pause' command was received without any arguments.
- more documentation

### 9/02/1999

- more documentation in the service- and worker-control sections. Probably most significantly, the 'workers' command was documented along with an explanation of the columns returned.

### 8/31/1999

- netcom is moving user home pages and ftp directories into mindspring format (good news). It's required I change a little code in my documentation (bad news). But I'm happy about it because now users can use 'ftp' to download files and the file names will be correct (good news).
- more documentation--although not a lot of meat has been added a substantial amount of form has.

### 8/23/1999

- isectd/startworker.c - created function isdStartWorker() which starts one worker at a time. Also updated isectdproto.h
- isectd/commands.c - cloneworker() now calls isdStartWorker() instead of isdStartWorkers() to avoid multiple attempts to start the same worker.
- lib/tabfuncs.c - changes to tabDebug to handle table entries that are only pointers. Created new functions tabDebugf() and tabDebugPtr().
- Not exactly part of this distribution, but created tabworker-0.1.tar.gz, a table worker that provides a convenient mechanism for storing state information in processes that can't (shouldn't) do it for themselves, which is often the case with browser-enabled applications.

  Documentation is coming soon. It was not made part of the isect distribution because it's an example of an independent worker (config and makefiles) that others might be able to use as a template.

### 8/22/1999

- Included wherever ?alloc()s were called.
- corrected first parameter to select() in workloop.c
- including scripts for testing client logins and responses

### 8/21/1999

- execd/sigchild.c re-installs handlers after handling signals
- demo/startup.sh now does a few more commands to test if isectd is operating correctly.
- isdService, isdWorker, and isdClient all have integer ids, increasing portability where pointers on some architectures can not (should not) be cast to integers.
- isdHeader and isdBadge use int<16 32>_t now instead of short/long
- 1024.c - defaults to 256 and can use ulimit()
- workloop.c - uses isdData.numberOfFiles instead of ulimit()

### 8/19/1999

- exec.c, attach.c, now both use connectto.c which does all the socket stuff for connecting to socket servers. This was done to make sure no inconsistencies existed between clients of isectd and isdexecd.

### 8/16/1999

- realized isdheader->workerid is unused (obsolete)
- isectd.h - isdClient.workerid is now isdClient.worker
- workerids are not sequentially assigned IDs instead of addresses (safer)

### 8/15/1999

- DELETE command enabled (sae)

### 8/12/1999

- isdclient documentation
- incorporated changes from sae

### 8/10/1999

- finished indent'ing for ansi2knr (req. by HP-UX)
- added the demo/ directory to the distribution
- lib/tvfuncs.c fixes for NaN in fmod()

### 8/6-9/1999

- documented connect, recv
- split out isect.texi into multiple files
- added future.texi
- updated doc/Makefile.am

### 8/2/1999

- distribution now includes doc/*html files
- added doc/isect*html files as automake EXTRA_DIST target
- added documentation on isdLogin()
- added documentation on isdLogout()

### 7/30/1999

- created changes.html from CHANGES
- doc/ - edited index.html
- articles/ - created

### 7/22/1999

- acconfig.h - deleted
- configure.in - checking for sys/resource.h and struct rlimit
- deleted check for wait3()
- 1024.c - does nothing if struct rlimit is not available
- sigchild.c - uses waitpid() instead of wait3()

### 7/13/1999

- created acconfig.h

### 7/09/1999

- now using automake to generate Makefile.in for all directories from Makefile.am files.
- configure.in seems to be working
- install directories are /usr/local/bin, /usr/local/lib, and /usr/local/include

### 7/07/1999

- all Makefile.in files are now similar and using LIBTOOL
- am pretty positive I'm not using automake to my best advantage
- added demo directory

### 6/14/1999

- finally have directories reorganized
- autoconfig seems to work
- ./configure seems to work
- major changes in time arithmetic (timebminus and timebaverage replaced)
- all modules name references fixed

### 1/21/1999

- renamed modules in isectd/, fixed module names and references

### 1/20/1999

- started reorganizing directories for CVS check-in. Also started renaming files to be shorter.
- Completed execd/