home *** CD-ROM | disk | FTP | other *** search
- Version 1.0 -- Dec 91. Original source created.
-
- Version 2.0 -- Dec 91. Added man pages. Server bug fix. In 1.0, files
- in a directory that is protected from deletion can still
- be written over. In 2.0, it is prohibited as well.
-
- Version 2.1 -- Jan 1, 92.
-
- 1) The maximum length of a name in pre-2.1 server is
- both limited by the 1k-byte udp packet size and, in
- some cases more severely, by the OS it is running in.
- On some systems, the OS imposes a limite of 14 chars.
- For those systems, the server can now be made to hash
- long names into short ones. The effect is transparent
- to the clients except when two long names gets hashed
- into the same value. In that case, they will refer
- to the same file during downloading, and they will
- displace each others during uploading.
-
- 2) Since directories, unlike files, have undisputable
- ownership, removal of a directory owned by a client
- should depends only on the ownership of the directory
- itself, and not on that of its parent directory. In
- pre-2.1 server, the client must have delete permission
- to the parent directory before it is allowed to delete
- the subdirectory. In 2.1, the permission is not needed.
-
- Version 2.2 -- Feb 15, 92.
-
- 1) The fput and fgetcmd utilities will now accept a list of
- files from its standward input. See their man pages for
- this expanded usage. This is useful if you don't want
- file names to show on 'ps' output.
-
- 2) The retransmit timer for client code has been changed
- to use an adaptive algorithm. In pre-2.2 versions of
- FSP, clients will retransmit if it has not received a
- response from the server after a delay of 3 seconds.
- In version-2.2, two separate delays are used. The
- "busy" delay is used when waiting for a reply for the
- first try and the second try. Any time a second try
- is necessary, the delay is increased by 50%. Every
- first try brings the delay 12.5% closer to the initial
- delay setting (3 seconds by default, settable by the
- FSP_DELAY variable). For the third try and beyond,
- the "idle" delay is used. For each try, the delay is
- doubled.
-
- 3) Makes available FSP request code space 0x80 - 0xff for
- future user extensions. Each such extension will begin
- with a code byte in that range, and followed by a control
- block, which is likely to be different from the existing
- one. The basic operations of FSP will not require the
- use of such extensions.
-
- Note: 2.2 does not involve changes to the server itself.
- The server is been checked out and added to by a
- few people on the net. I will wait until the
- modifications stabilize before I consolidate them.
-
- Version 2.3 -- Mar 9, 92
-
- 1) The bsd_src/glob.c file has a bug in blkfree function
- in that it tries to free something that is actually
- on the stack of the glob function. The last call to
- free has been commented out to fix the bug.
-
- 2) The fspd has a bug whoes only visible manifestation
- is the that protection can't be changed. The fix has
- required a moderate amount of code change in fspd.
-
- 3) .FSP_NO_DEL and .FSP_NO_ADD mechanism has been replaced
- by .FSP_OK_DEL and .FSP_OK_ADD mechanism. Thus by
- default, a directory is no delete and no add.
-
- 4) fprocmd is modified to relax option checking, allowing
- arbitrary option characters be passed to the fsp server.
-
- 5) A fls bug is fixed so that a "fls /" in a directory other
- than the root directory will not cause an error.
-
- 6) A -DDIRENT switch is added in Makefile to help support
- those machines that does not have /usr/include/dirent.h.
-
- Version 2.3a -- March 20, 1992
-
- 1) In a few places, non-critical errors of the form:
- if(errno = EINTR) ....
- was made. It obviously should have been == instead.
- The problem is fixed.
-
- 2) In the previous versions there is a potential problem
- such that if the first reply packet is dropped or is
- messed up, making a retransmit necessary, fspd will
- make the client utility wait for a 1 minute timeout.
- A potential loop hole for this happening has been
- closed by modifying server_lib.c where the packet key
- is checked.
-
- Version 2.4 -- March 27, 1992
-
- 1) fgrab/fgrabcmd client utility is added. It is like
- fget except it also deletes the named files in such a
- way that if there are multiple fgrabs for the same
- file, only one will succeed. One bug/mis-feature of
- fgrab is that when fgrab is terminated abnormally, the
- file is not restored. This command is useful for things
- like sharing bone files for modified versions of nethack.
-
- 2) FSP now allows multiple client programs to run at the
- same time if one of the three multiplexing mechanisms
- are chosen during compile time. It is likely that at
- least one of them will work for your system. The
- multiplexing is done at the client side, and does not
- allow the client machine to issue request messages at
- a higher rate compared to the previous versions. The
- FSP_LOCALPORT variable is no longer needed. However,
- if used, it will force serialization of client programs,
- which might be desireable if none of the multiplexing
- mechanisms are suitable for your machine. In order to
- accommodate this change, the server code has been
- changed to store temporary upload files with a different
- name from the previous version. The names now have to
- identify sender's port as well as sender's internet id.
- Change is necessary to keep it under 14-character limit
- of some OS.
-
- 3) Progress report mechanism enabled by FSP_TRACE variable
- now try to update the kbyte display more promptly.
-
- 4) fcat/fcatcmd will now turn off FSP_TRACE during its
- file transfer if its stdout is a tty.
-
- Version 2.5 -- April 8, 1992
-
- 1) A bug introduced during the last release --- fspd will
- not timeout and exit when running under inetd mode.
- This bug is now fixed. It was introduced because it
- is more convienent at one time for it not to exit when
- it is still being debugged. The patch to stop it from
- exiting was not removed before release time.
-
- 2) A very rarely seen bug in some OS is circumvented. UDP
- packet's headers contain a checksum field. If the
- checksum option is disabled, the OS will set the
- checksum field to 0 before sending, and will not check
- the checksum field when message is received. If the
- option is enabled, the OS will stuff the checksum into
- the checksum field. When a packet is received, the
- checksum field is checked. If the checksum field is 0,
- then the OS assume that the sender does not have option
- enabled, and therefore the checking is skipped.
-
- Problem arises when a packet's computed checksum is
- zero. Some OS will stuff 0xffff into the checksum
- field before sending such a message to distinguish it
- from the case for which checksum is disabled. Other
- OS couldn't recognize 0xffff as an indication that the
- actual checksum could be either 0 or 0xffff, and
- subsequently reject the message. The client can thus
- get stuck forever in retransmitting a request that
- happens to have 0 for the computed checksum, but
- 0xffff for the checksum field.
-
- To get around the problem, the sequence number field
- of the request message (which has meaning only to the
- client software), is partitioned such that 2 of the
- bits reflect the retry sequence, and the remaining 14
- bits reflect the request sequence. This will ensure
- that if one request got ignored because it happens to
- have a checksum of 0, the next retry will result in
- a packet that does not have a checksum of 0. The only
- file affected here is client_lib.c.
-
- 3) In response to those who have severely limited UDP
- packet sizes, the environment variable FSP_BUF_SIZE
- is supplied to set the data size of file and directory
- information transfers. The default is 1024. You cannot
- set it to be bigger than 1024, but you can set it to
- be smaller if you find that your system cannot pass
- UDP packets that includes 1024 bytes of data. This
- requires changes both in the server and the client
- code. The first parameter field of get-file and
- get-directory requests contains the path of the file
- or directory. The second parameter field was unused,
- but it is now used to hold the number of bytes to read.
- This change is backward compatible in the sense that
- if the second field is empty (old client code), the
- new server code will default to 1024. Changes to the
- client code is confined to client_util.c.
-
- Version 2.6 -- July 6, 1992
-
- 1) client_lock.c is fixed so that perror is always
- followed by exit. Previously, if System-V shared
- memory mechanism is chosen for locking control in
- the Makefile, but the mechansim has not in fact
- been configured into the UNIX kernel, the client
- utilities would die of a segmentation fault error.
- The error message will now be more reasonable.
-
- 2) mechanism is added so FSP server can put directory
- cache files in a special directory other than the one
- for which the files are intended. Previously a
- .FSP_CONTENT file is created in each directory the
- fspd process controls. Through variables in the
- Makefile, provider of fsp service can now elect to put
- cache files together in one single directory, and put
- a cap on the total number of such files that can exist
- simultaneously. The fsp server will create a cache
- file in the cache directory when it couldn't find one
- already exist in the directory being listed by the
- client. Changed are minor and invovles the routines
- server_get_dir, server_get_dir_2 [new] in "server_file.c";
- the variable declaration section of "server_main.c", and
- Makefile.
-
- 3) a line in util_cd is changed, and a line in get_dir_blk
- is added in the file "client_util.c" to prevent fls from
- sending some spurious requests to the fsp server.
-
- 4) Makefile is changed to allow the option of combining all
- client utilities into one actual binary files. This is
- necessary for space saving reasons on some versions of
- UNIX. The various small main C files for the utilities
- had to be changed as well to accomodate this change.
-
- 5) fver now will take an optional argument. If none is
- supplied, it prints the version string of the server.
- If one is supplied, it prints the versioin string of
- the client FSP software.
-
- Version 2.6.1 -- Aug 31, 1992
-
- 1) Small changes to Makefile. In 2.6, "make" will fail if
- you needed to define LIB, or if your command shell is not
- /bin/sh, and you want to merge client utilities. Version
- 2.6.1 fixed them. Only Makefile is changed, everything
- else is identical to 2.6.
-
- Version 2.6.2 -- Sep 2, 1992
-
- 1) bsd_src/cmp.c was changed so that flscmd can sort its
- output by date correctly on all systems. This particular
- version of the BSD source made assumptions about what
- the comparison functions should return for the qsort
- routine, but those assumptions were not true for all
- systems.
-
- Version 2.6.3 -- Sep 19, 1992
-
- 1) client_lock.c is modified to fix a compilation phase
- bug that occur when NOLOCKING option is used in the
- Makefile. This affects only the client code.
-
- 2) server_file.c is modified so that upload uses the
- directory cache directory instead of the top directory.
- This is needed for those sites that want the top
- directory be write protected. (good for ftp sites).
-
- Version 2.6.4 -- Dec 12, 1992.
-
- 1) Make main makefile pass CC and CFLAGS definitions to
- bsd_src's Makefile
-
- 2) Add util_cd2 to client_util and make bsd_src/ls.c use
- it. This remove some of the spurious GET_DIR requests.
- Also, there is a bug in client_util's util_cd routine
- in that it always requests 1K worth of directory info
- no matter what FSP_BUF_SIZE setting is used. Causeing
- fsp clients to hang under situations where FSP_BUF_SIZE
- is limited by the network (slip, usually).
-
- 3) function server_interrupt in server_lib.c was defined
- to be of type void to avoid complaint from some compilers.
- There are several other minor fixes in functin variable
- declarations in several files for the same reason.
-
- What needs to be done EVENTUALLY
-
- Somebody should make a tar equivalent that read and write remote fsp
- archives. This will allow transfer of whole directory in one command.
-
- Sources should be make to pass lint with as little problem as possible.
-