Thu Jul 29 16:05:59 1999  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>

	* PROTOTYPE/JAWS/IO.cpp (transmit_file): Added some fixes so this
	  code will compile on NT.  Thanks to Brian Jones
 	  <bjones@edgemail.com> for reporting this problem and to James Hu
 	  for fixing it.

Tue Jun 22 13:42:51 1999  David L. Levine  <levine@cs.wustl.edu>

        * remora/app/Makefile: replaced rm -f with $(RM).

Tue Mar 16 01:08:05 1999  Nanbor Wang  <nanbor@cs.wustl.edu>

        * server/Makefile:
        * server/jaws.dsp: Updated makefiles to build shared library.

        * server/svc.conf: Added example settings for using HTTP_Server as
          a dynamic service.

        * server/HTTP_Server.{h,cpp}: Added macros to build dynamic
          HTTP_Server service.

        * server/main.cpp (main): Since we use static service in JAWS, we
          must open the service configure without ignoring the static
          svcs.  Thanks to Bill Rizzi <rizzi@softserv.com> for pointing
          this out.

Mon Feb 01 17:04:39 1999  David L. Levine  <levine@cs.wustl.edu>

        * clients/WebSTONE/conf/paths.{pl,sh}.old:
          removed these apparently useless files.

Sat Jan 02 08:44:48 1999  David L. Levine  <levine@cs.wustl.edu>

        * server/HTTP_Request.cpp,Parse_Headers.cpp: initialized
          third param to strtok_r with 0.  DU 4.0 cxx was complaining
          about it, with ACE_NDEBUG.  According to the strtok_r
          man page on DU 4.0, it must be initialized to 0 on the
          first call to strtok_r.

Fri Sep 25 23:29:14 1998  David L. Levine  <levine@cs.wustl.edu>

        * server/IO.cpp (receive_file,transmit_file): changed
          NOMAP to ACE_NOMAP.  Thanks to Dann Corbit
          <DCorbit@SolutionsIQ.com> for reporting this.

Thu Sep 17 18:53:05 1998  Carlos O'Ryan  <coryan@cs.wustl.edu>

        * server/IO.cpp:
        * PROTOTYPE/JAWS/IO.cpp:
          Revert back to iovec. Also added some missing casts.

Wed Sep 16 22:53:06 1998  Carlos O'Ryan  <coryan@cs.wustl.edu>

        * server/IO.cpp:
        * PROTOTYPE/JAWS/IO.cpp:
          Use ACE_IO_Vector instead of iovec, because it is more
          protable.

Tue Aug 25 10:18:16 1998  David L. Levine  <levine@cs.wustl.edu>

        * clients/Caching/URL_Properties.cpp: removed explicit
          ACE_Auto_Basic_Array_Ptr <char> instantiation because it's
          now in libACE.  This file doesn't compile with g++/Solaris,
          but the Makefile doesn't build it anyways.

Fri Jul 31 18:31:32 1998  Gonzalo Diethelm  <gonzo@tango.cs.wustl.edu>

        * PROTOTYPE/HTTP_10.cpp
        * PROTOTYPE/HTTP_10_Parse.cpp
        * PROTOTYPE/HTTP_10_Read.cpp
        * PROTOTYPE/HTTP_10_Request.cpp
        * PROTOTYPE/HTTP_10_Write.cpp
        * PROTOTYPE/HTTP_Policy.cpp
        * PROTOTYPE/main.cpp
        * PROTOTYPE/JAWS/Assoc_Array.cpp
        * PROTOTYPE/JAWS/Concurrency.cpp
        * PROTOTYPE/JAWS/Data_Block.cpp
        * PROTOTYPE/JAWS/IO.cpp
        * PROTOTYPE/JAWS/IO_Acceptor.cpp
        * PROTOTYPE/JAWS/IO_Handler.cpp
        * PROTOTYPE/JAWS/Pipeline.cpp
        * PROTOTYPE/JAWS/Pipeline_Handler.cpp
        * PROTOTYPE/JAWS/Pipeline_Tasks.cpp
        * PROTOTYPE/JAWS/Policy.cpp
        * PROTOTYPE/JAWS/Reaper.cpp
        * PROTOTYPE/JAWS/Server.cpp
        * PROTOTYPE/JAWS/Waiter.cpp
        * clients/Blobby/Blob.cpp
        * clients/Blobby/Blob_Handler.cpp
        * clients/Blobby/Options.cpp
        * clients/Blobby/blobby.cpp
        * clients/Caching/ID_Generator.cpp
        * clients/Caching/Local_Locator.cpp
        * clients/Caching/Locator_Request_Reply.cpp
        * clients/Caching/URL_Array_Helper.cpp
        * clients/Caching/URL_Locator.cpp
        * clients/Caching/URL_Properties.cpp
        * clients/Caching/http_client.cpp
        * clients/Caching/http_handler.cpp
        * clients/Caching/test_URL.cpp
        * server/HTTP_Config.cpp
        * server/HTTP_Handler.cpp
        * server/HTTP_Helpers.cpp
        * server/HTTP_Request.cpp
        * server/HTTP_Response.cpp
        * server/HTTP_Server.cpp
        * server/IO.cpp
        * server/JAWS_Concurrency.cpp
        * server/JAWS_Pipeline.cpp
        * server/JAWS_Pipeline_Handler.cpp
        * server/Parse_Headers.cpp
        * server/main.cpp
        * stress_testing/benchd.cpp
        * stress_testing/connection.cpp
        * stress_testing/cp.cpp
        * stress_testing/http_tester.cpp
        * stress_testing/stats.cpp
        * stress_testing/util.cpp
        Added ACE_RCSID to these files.

Thu Feb 19 22:14:09 1998  Alexander Babu Arulanthu  <alex@merengue.cs.wustl.edu>

        * server/JAWS_Concurrency.cpp (put): Modified line number 11 to
        get away with a compilation error.

Wed Feb 18 12:31:28 1998  Carlos O'Ryan  <coryan@cs.wustl.edu>

        * server/JAWS_Pipeline.cpp:
          Removed extra definitions for default arguments.

Sun Feb 15 08:05:28 1998  David L. Levine  <levine@cs.wustl.edu>

        * server/JAWS_Pipeline.h: added missing ; at end of constructor
          declaration.

Wed Jan  7 17:26:43 1998  James C Hu  <jxh@cs.wustl.edu>

        * server/Pipeline.cpp: Put base class initialization of
          JAWS_Protocol_Filter ahead of data members.

Fri Jan  2 16:28:00 1998  Nanbor Wang  <nw1@cs.wustl.edu>

        * clients/Caching/http_handler.cpp:
        * clients/Blobby/Blob.cpp: Added missing explicit template
          instantiations.

Mon Dec 29 20:20:36 1997  James C Hu  <jxh@cs.wustl.edu>

        * clients/Caching/http_handler.cpp: Idem to previous change.

Mon Dec 29 18:50:02 1997  James C Hu  <jxh@cs.wustl.edu>

        * server/IO.cpp: Idem to previous change, but fixes to improve
          compatibility and portability to Windows NT.

Thu Dec 18 15:37:36 1997  James C Hu  <jxh@cs.wustl.edu>

        * server/IO.cpp: Modified to account for changes in ACE_Filecache
          to not map file on NT.

Tue Dec 16 09:29:11 1997  David L. Levine  <levine@cs.wustl.edu>

        * server/Makefile: expanded rules.bin.GNU, but without
          $(VOBJS), to avoid make warnings.

        * client/WebSTONE/src/nsapi-includes/base/systems.h:
          #ifdef linux, not LINUX.

Fri Dec 12 03:06:16 1997  James C Hu  <jxh@cs.wustl.edu>

        * server/Parse_Headers.cpp:  Many things have been touched, but
          only a few things have significantly changed.  I originally
          attempted to change the implementation entirely to use
          Hash_Map_Manager instead, but it was getting more complicated
          than I wanted, so I went back to debugging.

          - Trailing whitespace has been removed.
          - A couple of debug messages have been added the
            Headers::parse_header_line ().
          - Method declarations had to be changed to account for the
            fact that the Map_Item class (which had previously
            been declared inside of Headers_Map) is now in global
            scope and has been renamed to Headers_Map_Item.
          - The no_value_ data member and the char* cast operator of
            Map_Item have been removed.
          - The assignment operator for Map_Item has been made a bit
            tidier in its memory management (say no to memory
            leaks!).
          - Debugged the Headers_Map data structure.  This involved
            the following:
            . Re-implementation of strcasecmp (red-herring).
            . Re-implementation of Headers::compare ().  This is
              needed because empty table entries need to compare as
              infinity against real strings, so that real strings get
              inserted correctly.
            . Debugging the Headers_Map::find () method by
              implementing first a linear search, and then my own binary
              search.  It turns out the C library ::bsearch() does work,
              but I will leave in my implementation for now, since
              ::bsearch () is not in ACE_OS yet.
            . Re-implementation of Headers::place ().  The old one
              was badly written.  The new one is more efficient, and
              less error prone.  This method turned out to be the main
              problem.  It was the reason that binary search was
              previously failing (but linear search worked).  The
              reason?  It was corrupting memory, believe it or not.
              No longer!

          In addition, Headers::place () had a serious bug in which a call
          to ACE_OS::free () was added, but included the ++ operator on
          the pointer from the previous line.  Ug.

        * server/Parse_Headers.h: See comments for HTTP_Request.cpp.

        * server/HTTP_Request.cpp: Removed extraneous whitespace.  It's
          not what you think Doug!  Just trailing whitespace at the end of
          lines that somehow get added on when people use LoseNT editors.
          Also, changes were made to Parse_Headers which made it necessary
          to explicitly use the value () accessor method when examining
          parsed headers.  There use to be a operator char* () method.

        * server/HTTP_Response.cpp: See comments for HTTP_Request.cpp.

        * server/HTTP_Helpers.cpp: Added a comment to
          HTTP_Helper::fixyear ().

Tue Dec  9 01:19:09 1997  James C Hu  <jxh@cs.wustl.edu>

        * stress_testing/util.cpp: Off by one errors when parsing a URL.
          Did I write this code?  I don't think so.  Thanks to Valik
          Solorzano Barboza <valik@geodan.nl> for pointing this out.

Thu Nov 20 00:36:34 1997  James C Hu  <jxh@cs.wustl.edu>

        * server/Pipeline.h: Added methods and members so that the
          pipeline can be both push and pull driven.

        * server/Pipeline.cpp: Made the pipeline a doubly linked list of
          components, so that it can be operated as push-driven or
          pull-driven pipelines.

Wed Nov 19 05:10:38 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>

        * server/HTTP_Handler.h: Added the keyword "virtual" on the open()
          method which is inherited from ACE_Sevice_Handler.  Perhaps this
          will fix a bug with BORLANDC reported by Valik Solorzano Barboza
          <valik@xs4all.nl>.

Mon Nov 17 07:34:09 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>

        * server/Parse_Headers.cpp (end_of_line): Replaced a const char *
          with a char * to work with the new ACE_OS::strchr() signature.
          Thanks to James for finding this.

Tue Nov 11 19:52:38 1997  James C Hu  <jxh@cs.wustl.edu>

        * server/Pipeline.{h,cpp}: The beginning of a new Pipeline
          framework has been added.

Sun Oct 12 16:21:32 1997  Carlos O'Ryan  <coryan@macarena.cs.wustl.edu>

        * clients/Caching/Makefile:
        * stress_testing/Makefile:
          There is no need to set LDLIBS to add local object files
          anymore, using FILES is enough.

Fri Oct 10 18:41:47 1997  Carlos O'Ryan  <coryan@macarena.cs.wustl.edu>

        * clients/Blobby/Makefile:
          Fixed problem that made compilation fail.

Thu Sep 11 10:40:38 1997  Carlos O'Ryan  <coryan@polka.cs.wustl.edu>

        * server/HTTP_Request.cpp:
          I checked the use of MAXNAMELEN vs. MAXPATHLEN; all buffers
          intended to keep full filenames should have at least
          MAXPATHLEN+1 chars.
          Only buffers that will keep basenames (without any directories)
          should have MAXNAMELEN+1 bytes.
          I also added a new macro ACE_MAX_FULLY_QUALIFIED_NAME_LEN which
          is the maximum number of characters for a fully qualified
          internet hostname.
          There remain one obscure usage of these macros in ace/Malloc.h
          and Local_Naming_Space_T.{h,cpp}, but a quick fix broke
          something, I will try again soon.

Tue Sep  9 22:08:36 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * server/HTTP_Server.{cpp,h}:  Changes which answer questions
          brought up in design review.  Mostly additional comments.  Also
          changes to have a task spawn a number of threads rather than
          iterating through calls to the activate method.

Fri Aug 29 11:07:43 1997 James C Hu  <jxh@lambada.cs.wustl.edu>

        * server/*.{cpp,h}:  Changes to make JAWS comply with ACE
          coding standards.  In particular, broke up CGI method in
          HTTP_Request, remove dependency on static object in
          HTTP_Config, and answered all questions from Doug.

Tue Aug 26 21:34:11 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>

        * clients/Caching/ID_Generator.h: Made some minor changes to
          the programming style.

Sun Aug 10 13:44:14 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>

        * server/HTTP_Helpers.cpp (HTTP_date): We can't use
          ACE_Thread_Mutex directly in the code since that breaks
          platforms that lack threads.

Wed Aug  6 16:45:48 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * server/main.cpp: Added another signal handler so I can kill JAWS
          when purifying.

Mon Aug  4 00:07:24 1997  Nanbor Wang  <nw1@cumbia.cs.wustl.edu>

        * server/main.cpp (main): Service configurator now doesn't return
          -1 when errors occur.  Therefore, we check for not success
          instread of fail when opening the service contifurator.

Mon Jul 28 04:54:01 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>

        * server/Parse_Headers.cpp (place): Reformatted the same
          stuff again...

Mon Jul 28 01:48:40 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * server/README: Updated the README file to reflect new features
          and server flags.

        * server/Parse_Headers.cpp (place): Fixed a compile error found by
          David Levine.  I don't know why this was compiling for me.

Sun Jul 27 21:56:12 1997  Douglas C. Schmidt  <schmidt@tango.cs.wustl.edu>

        * server/Parse_Headers.cpp (place): Reformatted a few things
          to make them easier to read.

Fri Jul 25 02:05:20 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * server/HTTP_Server.cpp: Changes to allow the thread creation
          flags to be specified from the command line.  Removed some code
          that was used to track down memory leaks.

        * server/HTTP_Helpers.{h,cpp}: Added another method
          HTTP_date (char *), so that a buffer to which the date will be
          written to can be passed into the HTTP_date routine.

        * server/HTTP_Response.cpp: Changed some code so that the baseline
          implementation can be created at compile time.

        * server/IO.cpp: Changed some code so that the baseline
          implementation can be created at compile time.

        * server/main.cpp: Changed the signal handler to wait for threads
          to die.  However, this code will remain dormant for now, until
          we design a nice way to shut down a thread pool.

        * server/svc.conf: Changes to add some other entries people can
          try.

        * server/Makefile: Changes to allow JAWS to be built with static
          linking only, to ease the process of using Purify and Quantify.
          Dynamic linking will be re-configured in the future when we have
          all the memory leaks worked out.

Mon Jul 22 16:55:00 1997  Chris Cleeland <cleeland@cs.wustl.edu>

        * Changed references to WRAPPER_ROOT to ACE_ROOT in every
          place except ChangeLog entries.

Mon Jul 21 15:09:03 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * server/HTTP_Server.{h,cpp}: Got rid of Solaris specific
          debugging code (thr_create, thr_join).

Fri Jul 11 02:15:12 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * server/HTTP_Response.cpp: Changes so that the HEADER is not
          rebuilt all the time.

        * server/IO.cpp (JAWS_Synch_IO::transmit_file): Changed to use
          writev () instead of multiple send ()s.

Thu Jul 10 01:53:48 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * server/HTTP_Helpers.{h,cpp}: Changed so that creating the date
          header is less expensive.

        * server/HTTP_Response.cpp: Changes to match above.

        * clients/Caching/README: Added to the repository.

        * clients/Caching/http_handler.{h,cpp}: Added some comments to the
          code.  Also, moved the code to check to see if the file is in
          cache already into the connector, so that a connect is not
          done if the file is cached.  This required a filename ()
          accessor method to be added to the handler.

Wed Jul  9 13:08:00 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * clients/Caching/http_handler.cpp (svc): Added code to check to
          see if the file is already cached before trying to cache it.

        * clients/Caching/http_client.cpp (main): Added a comment block at
          the top of the file.

        * server/HTTP_Handler.cpp and IO.cpp: Changes that were needed
          since JAWS_File is now integrated into ACE (as ACE_Filecache).

        * server/HTTP_Server.*: Attempting to track down memory leak.
          This code may be in a state a flux for the next week or so.

Mon Jul  7 23:40:13 1997  Nanbor Wang  <nw1@cumbia.cs.wustl.edu>

        * clients/WebSTONE/src/webclient.c: Removed a bunch of THREAD
          storage class decorators from function makeload() because auto
          variables can't be declared as TSS.  Also #ifdef random number
          generation code so it uses rand_r on Solaris() and rand() on NT.

        * clients/WebSTONE/src/rexec.c: Modified prototypes for
          PassOutputThread() and PassErrorThread() to avoid warnings from
          MSVC.  Still need more refinement on this one. ;(

        * clients/WebSTONE/src/webmaster.c: Added prototype for
          HostEntCpy() and a null statement to avoid warning from MSVC.

        * clients/WebSTONE/src/gendata/genrand.mak:
        * clients/WebSTONE/src/master/webmaster.mak:
        * clients/WebSTONE/src/client/webclient.mak: Updated file paths
          and dependencies.

Sat Jul  5 14:19:20 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>

        * Renamed the client directory "clients" to reflect the fact that
          we've got multiple client tests now.  Also, moved the original
          contents of the client directory into a new clients/Blobby
          directory and added Caching and WebSTONE.

        * Moved the ChangeLog from the ./server directory into the ./JAWS
          directory since we want to apply ChangeLog entries to all
          aspects of JAWS, not just the server.

        * HTTP_Server.cpp (open): Added THR_DETACHED as a flag to
          activate().  This should prevent a memory leak that was
          occurring since no thread was ever "joining" the threads that
          were spawned.

Thu Jul  3 23:33:47 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * HTTP_Response.cpp (~HTTP_Response): changed delete to delete [],
          removing a major memory leak from JAWS.  Still to find is a
          memory lead associated with thread per request.  Nanbor's fix is
          about what I did to EMPTY_HEADER too.

        * JAWS_File.cpp: David points out I need to add specializations
          for the GNU C++ compiler.

Thu Jul  3 22:38:04 1997  Nanbor Wang  <nw1@cumbia.cs.wustl.edu>

        * HTTP_Response.cpp (build_headers): Added explicit cast for
          EMPTY_HEADER from (const char *) to (char *) in order to make
          MSVC happy.  This is probably very badly styled.  But
          HTTP_HEADER is only used in places that require (const char *),
          so I think it's safe to do so.

Thu Jul  3 15:34:30 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * HTTP_Response.cpp (HTTP_Response): Moved a call to delete out of
          constructor into the destructor where it belongs.

Thu Jul  3 12:28:44 1997  Sumedh Mungee  <sumedh@lindy.cs.wustl.edu>

        * Parse_Headers.cpp: Line 137, Changed pt to ptr (it was a typo)

Wed Jul  2 22:33:52 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * JAWS_File.{h,cpp}: Fixed deadlock bug, since RW_MUTEX's are not
          recursive (drat!).

Wed Jul  2 21:03:12 1997  Douglas C. Schmidt  <schmidt@flamenco.cs.wustl.edu>

        * Made a major pass through all the code and made the style
          consistent with that found in ACE.

Wed Jul  2 14:33:27 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * JAWS_File.cpp: Added double check locking pattern to the fetch
          routine of the virtual filesystem.  This slows things down
          considerably for files which change frequently and for cache
          misses in general, but it should be correct.

Wed Jul  2 14:59:29 1997  Nanbor Wang  <nw1@cumbia.cs.wustl.edu>

        * HTTP_Helpers.cpp (HTTP_decode_string): Added cast from strtol to
          char explicitly to prevent NT from complaining.

Wed Jul  2 14:33:27 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * JAWS_File.{h.cpp}: Modifications to support RW_MUTEX for both
          the virtual filesystem and the low level ACE_File.  Next major
          change will be to re-implement the virtual filesystem to use a
          hash table ala ACE_Hash_Map_Manager.

Wed Jul  2 00:23:22 1997  James C Hu  <jxh@polka.cs.wustl.edu>

        * HTTP_Server.{h,cpp}: Changed parsing of options to use
          mnemonic names rather than numbers.  Added a new thread
          strategy, THROTTLE.  This is thread-per-request until some
          maximum number.  Unfortunately, it does not become thread-pool
          at this point... yet :-).  Added a new option to pass in a
          backlog value.

        * svc.conf: adjusted to account for the changed options.

        * README: changed to explain new svc.conf options.

        * JAWS_File.cpp: Changed it so that when the file is added to the
          cache, it is also acquired.  When it is removed from the cache,
          it is released.  This is so that the reference count is at least
          one while the file is in the cache.  Also, fixed the virtual
          filesystem by giving it a simple replacement strategy if the
          table is full.  For now, it will replace the largest file in the
          cache with the request for the current file.

Tue Jul  1 19:13:44 1997  Nanbor Wang  <nw1@cumbia.cs.wustl.edu>

        * JAWS_File.cpp (JAWS_File): Changes the creation method of a
          cached copy from using plain file copy to using mmap and memcpy.
          This avoid the extra complexity caused by FILE_FLAG_OVERLAPPED.

Sat Jun 28 11:55:38 1997  James C Hu <jxh@tango.cs.wustl.edu>

        * HTTP_Handler.cpp (open): fixed a typo

        * HTTP_Handler.cpp (cgi): fixed a bug, strdup fails on NULL

Sat Jun 28 16:14:38 1997  Sumedh Mungee  <sumedh@cumbia.cs.wustl.edu>

        * HTTP_Handler.cpp (open): Changed socket send-buffer to 64k

Wed Jun 25 01:11:50 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>

        * JAWS_File.cpp: Removed initialization of vfs_ (see below) and
          changed all references of vfs_ to
          JAWS_Virtual_Filesystem::instance ().  Thanks to Detlef Becker
          <detlef.becker@med.siemens.de> for pointing this out.
          (init): Added initialization of reference_count_ to 0.

        * JAWS_File.h: Removed private member JAWS_Virtual_Filesystem vfs_
          since JAWS_Virtual_Filesystem is a singleton already.  Caching
          it doesn't seem to win much and depends on the order of static
          variables initialization, which is non-portable.

Fri Jun 13 02:42:39 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>

        * jaws.{mdp,mak}: Updated to incoporate latest changes.

Thu Jun  5 14:13:22 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * HTTP_Server.cpp: Added more informative comments to the
          asynch_thread_pool() method due to comments posed by Mehul
          (MehulM@spa-marketing.com).

Wed Jun  4 23:00:47 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * JAWS_File.cpp (JAWS_File): Fixed a bug where JAWS_File wanted
          the file to have write permissions before openning it.  This is
          now only true if the file is to be written to.

Wed Jun  4 22:30:41 1997  Nanbor Wang  <nw1@dingo.wolfpack.cs.wustl.edu>

        * main.cpp (main): Changed SIGCLD to SIGCHLD for better
          portability.

        * IO.cpp (transmit_file): The third argument passed
          ACE_Asynch_Transmit_File::Header_And_Trailer() should be an
          address (&).

Mon Jun  2 16:35:18 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * HTTP_Helpers.cpp: Serious bug in base64 decoder routine
          squashed.  Didn't initialize an array with 0's.  The original
          source had them declared static.  Also, changed sizeof alphabet_
          to strlen (alphabet_), because original code had alphabet_ as an
          array, but my translation has alphabet_ as a pointer.

        * HTTP_Response.cpp: Added some code to check to see if the
          decoder returns 0.  If it does, flag this as a failed
          authorization attempt.

        * HTTP_Handler.cpp: Added a "\r\n" to the confirmation message in
          receive_file_complete () method.

        * HTTP_Request.cpp: In parse_request_line (), created conditional
          expressions in the debugging print statement so that a null
          string will not cause the server to crash.

        * HTTP_Response.cpp:
          (1) cgi_resposnse () no longer has to wait for the process to
          die.  The fix to ACE_Process of closing down child handles was
          enough to get the connection to die on its own.
          (2) Mike (mrm@cisco.com) pointed out that the output for CGI
          responses was not create.  The fix was to output a small header
          before execing the CGI program.

        * test.cgi: a sample cgi program to use when testing the JAWS
          server.

Sat May 31 13:34:14 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * *.h, *.cpp: Changed include lines from "apps/JAWS/server/..." to
          "..." to avoid dependencies on the WRAPPER_ROOT tree.

        * jaws.auth:  This file is added to be a sample authorization
          file.  This is the file which JAWS is currently hardcoded to use
          to verify authenticated PUT requests.

        * HTTP_Response.cpp:  Added code to normal_response () and to
          error_response () to better handle authentication.  Now, all PUT
          methods are required to be authenticated.  The strategy now is
          very simple, there is only one authorization file and only one
          realm of authorization.  This will be easy to bring up to spec
          later, though.

        * HTTP_Helpers.h:  Added alphabet_ data member for the
          decode/encode base64 methods.

        * HTTP_Helpers.cpp:  Added HTTP_decode_base64 and
          HTTP_encode_base64 methods.  HTTP_encode_base64 is currently not
          used, but HTTP_decode_base64 is being used for Basic
          authentication.

        * *.h, *.cpp: Changed include lines from "JAWS/server/..." to
          "apps/JAWS/server/..." to fix an error reported by Rob Payne
          <repayne@jeeves.net>.  This was really due to a bug in the
          platform_macros.GNU file not adding INCLDIRS to the CCFLAGS
          during compilation, but in the case other platforms have the
          same problem, changing the source is a better fix.

Fri May 30 23:19:03 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * README: updated to better reflect the status of JAWS.

        * main.cpp (handler): Added a signal handler for SIGINT, and also
          set SIG_IGN for SIGCLD.  The first handler calls exit (0) if
          SIGINT is received, so that static destructors are called.  The
          second is so that zombies are not formed.

        * HTTP_Response.cpp (cgi_response): Debugging.  (1) The CGI
          program spewed output on the server side instead of the client.
          (2) The CGI program had environment variable being set even
          though there was no associated value.  (3) The client connection
          was not being closed after the CGI program executed.  Problem
          (1) was fixed by using set_handles () in cgi_options.  Problem
          (2) was fixed by testing to see if the header had an associated
          value before assigning it to the environment.  Problem (3) was
          fixed by sending an empty confirmation message after waiting for
          the CGI process to exit.

        * HTTP_Request.cpp (cgi): Debugging.  It was not looking for a
          ".cgi" extension during the stage of determining if a URI is a
          CGI script.  This will later be fixed when a full mime-type
          facility is implemented.

Fri May 23 00:45:24 1997  James C Hu  <jxh@lambada.cs.wustl.edu>

        * JAWS/server: Debugged HTTP/0.9 GET requests, and HTTP/1.0 PUT
          requests.  Both work now, with minor problems: e.g. the
          Content-type header doesn't really work (always sends text/html
          as the content type).  What it should do is see if the request
          included a content type header, and use it, otherwise, resort to
          some file suffix and mimetype matching algorithm.

        * Parse_Headers.h (complete_header_line): Added comments
          explaining the new return values of -1, 0 and 1 (see comments
          for Parse_Headers.cpp below).

        * Parse_Headers.cpp (complete_header_line): modified so that it
          returns three values instead of two.  -1 means that an end of
          line was encountered, but nothing after it yet to verify if it
          is really a complete header line.  0 means the read cut off in
          the middle of a line (no end of line character found).  1 means
          the line is verified to be a complete header line.

        * HTTP_Request.cpp (parse_request): Changed the test so that an
          HTTP/0.9 request would be sent immediately after being issued.
          This involved changes to Parse_Headers.

        * JAWS_File.cpp (acquire): Changes involved adding some debugging
          statements to understand why PUT was not working.  Discovered a
          bug in how ACE_Mem_Map was being used.

        * HTTP_Request.cpp (content_length): Changed to extract value from
          the headers, if available.

Thu May 22 16:22:03 1997  James C. Hu  <jxh@pride.cs.wustl.edu>

        * HTTP_Request.cpp (cgi_env): Added a cast so that a warning
          generated by SGI C++ compiler goes away.

        * Makefile: Reordered the way the files are compiled/linked so
          that useless warnings about object files not resolving any
          symbols go away.

Wed May 21 15:33:33 1997  James C Hu  <jxh@polka.cs.wustl.edu>

        * JAWS_File.{h,cpp}: Added some comments.  Will add a copy ()
          method soon, after I move my workspace over to lambada.

        * JAWS_Tilde.{h,cpp}: This class is being implemented but has not
          been added to the repository yet, since JAWS as yet does not use
          it, and it is still being developed.  This will be a cache of
          the expansions from ~foo to the home directory of foo.

Tue May 20 22:49:24 1997  James C Hu  <jxh@polka.cs.wustl.edu>

        * JAWS_File.{h,cpp}: New class created to replace the old kludgy
          VFS thingy.  This new cached virtual filesystem is way cool: a
          file which is being retrieved can be simultaneously replaced
          without causing either reader or writer to wait.  Reference
          counts are maintained now, which was missing in VFS.  Also,
          there is no longer a dependency on the JXH_List template now,
          which is a plus.

        * IO.cpp: Changes to adapt to the new virtual filesystem.  The
          changes all involved simplifications to the programming
          interface.

        * HTTP_Handler.cpp: Changes required to deal with the more
          generic error responses returned from the JAWS_File/JAWS_IO
          interface.  This generality will make it easier to adapt
          JAWS_File and JAWS_IO into ACE.

        * test_JAWS_File.cpp: A test program written to see if the new
          virtual filesystem works the way I expect it to.
