Version History
---------------

2.17.01 - Was dropping the connection if you tried to rcp multiple files
          to the Windows system.

2.17 - Changed the way rcp's are handled from Sun Solaris systems.  In previous
       versions, RSHD/95 spoofed the special (non-standard) rcp initialization
       command from Solaris (/usr/lib/sunw,rcp) and ignored the non-standard ACL
       records Solaris sends.  Some users experienced abnormal termination of
       multi-file rcp copies from Solaris systems because the Solaris system
       was resetting the connection at the TCP/IP level while sending the ACL
       stuff.  There are some Sun documents that show this as a bug that was
       supposedly correct in Solaris, but even after updating, some users still
       had the problem.  RSHD/95 now acts like other non-Solaris Unix systems
       when servicing the Solaris rcp.  When the non-standard Solaris rcp init
       command is received, RSHD/95 sends back a "command not found" error.
       The Solaris rcp then catches this and acts like a standard rcp.

       To go back to the previous method of handling Sun rcp's, create the
       following registry entry (or change it if it exists):

       HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHD95\Setup\DisableSunRCP

       Create this as a String Value and set it to a value of "0" to use the
       previous Sun rcp handling.  Set to a value of 1 to use the new method.
       The default value is "1" when the entry does not exist (it normally
       does not exist).

     - There are now one minute timeouts on rcp send and receive operations.
       During an rcp, if no data is received in one minute or a send is not
       acknowledged within one minute, it is assumed that the connection is
       broken and the rcp will be terminated.  Previously, the TCP/IP stack
       default was used.  Note that the one minute timeout is not for the
       entire file - it is for one individual send or receive operation within
       the file.  If your network is extremely slow and it possible that data
       cannot be sent or received in one minute, you can increase the timeout
       with the following registry entries:

       HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHD95\Setup\RCPSendTimeout
       HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHD95\Setup\RCPRecvTimeout

       Create these as new String Values and set them to the number of seconds
       required for a timeout.  Setting them to "0" uses the TCP/IP default.

     - You can now set a registry option that allows you to overwrite files
       with rcp if another process has them opened for reading.  Normally,
       RSHD/95 would not allow this because it would detect that the file was
       in use and return an error to the rcp command.  In our view this should
       not normally be permitted.  However, at times it may be desired.  To
       allow the overwriting of files opened for reading by other processes,
       create the following registry entry:
      
       HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHD95\Setup\RCPAllowOpens

       Create as a new String Value and set to a value of "1" to allow the
       open files to be overwritten or "0" to disallow it.  Keep in mind that
       this only allows files opened *non-exclusively* and for *reading* by
       another process to be overwritten.

     - There is a registry entry that can be set that affects the way RSHD/95
       closes TCP/IP connections.  Normally, RSHD/95 closes the rsh/rcp 
       connection gracefully (normally).  This leaves the connection(s) in
       a TCP/IP TIME_WAIT state (seen with netstat).  This is normal.  If
       you create the following registry entry:

       HKEY_LOCAL_MACHINE\SOFTWARE\DenicompSystems\WRSHD95\Setup\KillTimeWait

       RSHD/95 will do an "abortive" close and will effectively avoid the
       TIME_WAIT state on the connection(s).  Create this as a new String Value
       and set it to a number greater than zero (0).  The value used indicates
       the number of seconds RSHD/95 should wait before doing the abortive
       close.  When the connection is aborted, it is likely that some data
       may not make it to the client (such as the tail end of stdout or the
       end of a file rcp'd).  This delay gives the data an opportunity to reach
       the client before the connection is aborted.  You will experience a
       pause (of the number of seconds specified) after each rsh/rcp command.

       This option is UNSUPPORTED - it may or may not work for you.  Use at
       your own discretion.

     - Corrected a problem with the error message returned to rcp when
       the disk was full.  It was incorrectly reporting an error number of 0.

     - Added new CTRLRSHD.EXE utility.  This is a console application that
       gives command-line control over the RSHD/95 service.  Options are:

           ctrlrshd stop     -- Stops RSHD/95
           ctrlrshd start    -- Starts RSHD/95
           ctrlrshd install  -- Sets up Windos to start RSHD/95 automatically
           ctrlrshd remove   -- Stops RSHD/95 from starting automatically

2.16 - Was combining stdout and stderr onto stdout, so stderr output was not
       sent back to rsh separately.

2.15 - (Interim release) Some previous versions were combining stderr onto
       stdout instead of sending them separately.

2.15 - (Interim release) Added ability to uninstall through Add/Remove Programs
       in the Control Panel.

2.15 - Corrected a problem with rcp when automatic ASCII conversion is used.
       When copying files from the Win95 system, if the file did not end with a
       LF or CR/LF, the last character of the file was not transmitted.

     - Corrected a problem with the usage of an environment variable file.
       If a variable substitution was fairly long (e.g. PATH=%PATH%;...)
       and the line contained multiple substitutions, it was causing
       RSHD/95 to abort with a GPF-type error.

     - Corrected another problem with the usage of an environment variable file.
       If you used a variable substitution (e.g. PATH=%PATH%;...) and the
       variable to be used in the substitution (to the right of the =) appeared
       last in the environment returned by Windows 95 to RSHD/95, nothing was
       substituted for the variable.

     - Added "PATH" to the list of default internal commands.

     - RCP server portion will now handle files with sizes greater than 2 GB.
       RCP of files with a size over 2 GB will only work if the rcp client
       (and client operating system) also supports this (i.e. it allows a 64-bit
       file size intead of a 32-bit file size).

     - Added two registry options: ConnRecvBuf and ConnSendBuf.  These will
       tell RSHD/95 to set the TCP/IP socket option SO_RCVBUF and SO_SNDBUF
       respectively if they are found in the RSHD/95 registry options.  If
       these are not found, the Win95 default is used (8192 bytes).  You can set
       these to increase the TCP/IP send/receive buffers, although the effect
       will depend on your network.  They have minimal effect in our testing.
       They would affect redirected stdin/stdout for rsh and rcp copies.  They
       may be added to the Control Panel applet at a later date.

     - When running at a message level of 99, it was trying to create a file
       in the \temp directory on the current drive and could abort with an
       access violation exception if this directory did not exist and an rcp
       was executed.

     - "wrshd95 /v" was not displaying the version number.  It now does in
       a message box.

2.14 - Internal release

2.13 - Only allowed environment variables of 256 bytes or less.  Increased
       to allow up to 1024 bytes per variable.

     - You can now create the following registry entry:

   \HKEY_LOCAL_SYSTEM\Software\DenicompSystems\WRSHD95\Setup\KeyEscapeChar

       to change the default "escape" character for keystroke strings (create
       as type String (REG_SZ)).

       By default, the escape character is a backslash (\).  Any character
       after the backslash is not interpreted by RSHD/95.  This is to allow
       you to send the characters "[" and ">", which are special inside of
       keystroke strings.  These must be prefixed by a backslash if you want
       to send them to the remote application.  This also means that you
       must use two backslashes to send a single backslash.  This can be
       inconvenient if you send full path names.  So you can set the above
       registry entry to some other character, which will be used as the
       escape character instead of the backslash.  Keep in mind that if you
       need to send the new escape character in a keystroke string, you must
       include it twice.

2.12 - Added [SK2] option in keystroke string to allow alternate method of
       sending keystrokes to applications.  For example, this would use
       the alternate method:

                rsh win95 "<[SK2]%Fx~>" myapp

       Only use [SK2] if the standard method does not work for some reason.

2.11 - When checking the security file, it was granting access if EITHER
       the remote user OR the local user was given permission.  It now only
       grants access if BOTH users are given permission.

       Normally, the remote user and local user are the same (they are the
       user ID of your login on the remote system).  However, if you use the
       -l option of rsh or the user@host:file specification in rcp, the local
       user will be the login user and the remote user will be the user
       specified on the command line.

2.10 - If there is no Security File, Request Log, Deny Log, and Error Log
       specified, it will no longer look up the hostname of the client PC.
       This can speed things up, especially if using DNS and your DNS server
       is slow or is not functioning.

     - You can also disable the lookup of the client hostname by setting
       the following registry entry to "1":

  \HKEY_LOCAL_SYSTEM\Software\DenicompSystems\WRSHD95\Setup\DisableHostLookup

       This entry may need to be added (create as type String (REG_SZ)).

       By setting this entry to "1", you can still have a Security File
       and/or log files and avoid the hostname lookup.  However, the
       logs will only reflect the IP address of clients and you can only
       use IP addresses in the Security File.

2.09 - The internal commands allowed using the "<[INTERNAL]>" rsh extension
       would not work if you checked the option to run all commands through
       the command shell.

2.08 - Now allows wildcards in the security file.  You can use "*" (matches
       multiple characters), "?" (matches a single character), "[]" (matches
       a list or range of characters), and "[!]" (matches characters NOT in
       a list or range of characters).  Wildcards can be used anywhere in
       the name or IP address in the security file.  For example, 89.5.6.*,
       joe@*.netcom.com.

     - Some internal error messages that should have been returned to rsh
       were not being returned properly.  The rsh command would report
       that the connection was reset or some other socket error.

     - Was not properly handling things when an environment variable
       file was specified, but the file did not exist.  It now does and
       uses the inherited environment when the file does not exist.

     - You can now run "wrshd95 /v" to display the current version number.

2.07 - Socket usage can be re-enabled by setting the following registry entry
       to the value "0":

       \HKEY_LOCAL_SYSTEM\Software\DenicompSystems\WRSHD95\Setup\UsePipes

       This entry may need to be added (create as type String (REG_SZ)).

2.06 - Corrected a problem with rcp where it would hang if you tried to
       rcp a zero-length file from the Win95 system with ASCII conversion
       enabled.

     - Added registry options (which must be set using REGEDT32) to allow
       disabling of the Nagle algorithm on the sockets used by RSHD/95.
       The entries are:  ListenNoDelay, ConnNoDelay, StderrNoDelay.  Setting
       these to the string (REG_SZ) "1" will disable Nagle.  Setting to "0"
       will enable.  It is enabled by default.  The entries must be placed
       in: \HKEY_LOCAL_MACHINE\Software\DenicompSystems\WRSHD95\Setup.

     - Added an option to the rsh command that allows you to disable Nagle
       for specific commands.  The option is specified like the window type
       options:  "<[NODELAY]>".  For example:

               rsh win95 "<[NODELAY]>" command

2.05 - Now redirects standard input also.  Previously, it only sent
       stdout/stderr back to the rsh command.  It will now read stdin from rsh.

2.04 - Internal release.

2.03 - Now turns on "keepalive" option by default.

2.02 - Was not processing multiple environment variable files if they
       were specified.

     - Could abort on very long commands if a message file was specified.

2.01 - Corrected a problem that could occur when an rsh or rcp was
       aborted with an interrupt key before the connection was fully
       negotiated.  It would continually attempt to establish the
       stderr channel with the now-disconnected rsh or rcp until
       it reached a certain limit.

2.00 - Capture of stdout/stderr is done in "real time" instead of being
       buffered until the end of the command.

     - RCP spoofing prefixes for Sun and VAX VMS are recognized internally,
       so they do not need to be specified in the Control Panel.

     - An incompatibility with Sun's RCP has been corrected.

     - Can specify a home directory for RCP copies.

     - Can specify an initial working directory for RSHD/95.

     - Can specify a file containing environment variables, which will
       be set for commands execute through RSHD/95.

     - Can specify a default command interpreter for internal commands.

     - Can specify a list of "internal" commands and the default command
       interpreter will be used for these commands.

     - Can disable rsh servicing, incoming rcp servicing, or outgoing
       rcp servicing.

     - Can limit rsh to executing a list of specified commands.

     - Can specify that the command interpreter is to be prefixed to
       every command.

     - Special commands available to shutdown or reboot the system
       using rsh.  Use:

            rsh win95 "<[INTERNAL]>" shutdown
       or
            rsh win95 "<[INTERNAL]>" reboot

       "<[INTERNAL]>" can be abbreviated to "<[INT]>".

     - If the default window type is Minimized or Hidden and keystrokes
       are specified in the rsh command, the default window type is
       overridden and the program will be run in a normal window so
       that it receives the keystrokes.

     - In the RSHD/95 Control Panel applet, you can press <F1> to view
       help on the options available.

1.91 - Was not changing time of the files created when the -p option
       of the RCP command was used to preserve file access/modification
       times.

     - Added more detailed messages at message level 4 when processing
       the Security File entries to aid in debugging.

     - The RSHD/95 setup program will now stop and delete the RSHD/95
       service if it exists before copying files, so it is not necessary
       to stop the service before reinstalling.

1.90 - New Control Panel Applet, using tabbed dialogs for easier use.

     - The Listen Backlog parameter now defaults to 100 instead of 5.
       Microsoft has increased the maximum limit from 5 to 100.

     - Previously, Windows 95 specific errors were returned to the client
       as Win95 error numbers with no description.  Now, if an Win95 specific
       error occurs, RSHD/95 will attempt to get the error description
       from Windows 95 and return the description to the client.

     - There is now an option in the Control Panel applet to disable
       the detection of "internal" DOS commands, such as DIR and TYPE.
       This is useful if you are not using the standard Win95 command
       interpreter and you do not wand "command.com /c" to be prefixed to
       these commands.

1.83 - When checking the Security File, the comparison of host names and
       user names is now not case sensitive.

     - If you are using a Mesassge File, RSHD/95 will now output the
       value of the PATH environment variable when RSHD/95 starts in
       the file.

1.82 - When reading the options from the registry (specified in the Control
       Panel), the service was requiring full access to the registry options,
       including write access, even though it did not write.

     - Leading spaces in Control Panel options will be ignored.  Previously,
       if you accidentally placed a leading space in front of an option
       in the Control Panel applet, its value would be ignored by RSHD/95.

     - You will no longer receive an "End Task" dialog box if you log out
       while a program is being run through RSHD/95.  Previously, if a
       long-running program was run through RSHD/95 (by an rsh command)
       and the user on the workstation running RSHD/95 logged out, Win95 would
       display a dialog box asking if you want to wait for the task to
       end or end the task before it would allow you to log out.  (If you
       pressed the End Task button, it would not end the program however.)

1.81 - Corrected a memory/handle leak problem.

1.80 - Added ability to specify the default window type of commands run
       through rsh.  Specified in the Control Panel applet.

     - Now recognizes "internal" commands (DIR, TYPE, etc.) and prefixes
       with "cmd /c" automatically.  Previously, this had to be specified
       in the rsh command.

1.71 - Added ability to specify the IP address for listening for connections.
       This can be used if the host is multi-homed (has mulitple IP addresses)
       and you only want to listen on one.

1.70 - Initial Release

