summaryrefslogtreecommitdiff
path: root/apps/JAWS/ChangeLog
blob: a2834f1133271eef904feb02706b854407341efe (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
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.