- From: Anselm Baird_Smith <abaird@www43.inria.fr>
- Date: Tue, 22 Oct 1996 10:03:15 +0200 (MET DST)
- To: Alexandre Rafalovitch <alex@access.com.au>
- Cc: www-jigsaw@w3.org
Alexandre Rafalovitch writes: > Ok, it seems I isolated the problem described in a post "new Add Realm > Problem with 1a3 under OS2". Looks like it has nothing to do with OS2 at > all, but is a subtle bug of Jigsaw. > > Basicaly, the hang happens when keep-alive is set to false and then Add > Realm is attempted. > If keep-alive is true, no problems, with keep-alive set to false, Jigsaw > hangs. It does not depend on browser either. I used Netscape2.02 on Mac and > Lynx on Unix with the same result (can I have credits for that hour I spent > debugging Jigsaw? :-} ). > > The hang itself happens because of the exception rised deep within Jigsaw > bowels that propogates up to the Thread level and kills at least one of the > clients, possibly more. This was not really the problem, the problem was in fact due to a last minute hack (before releasing, that's never good) trying to solve a problem with HTTP/1.0 PUT. Anyway, the fix is more general, find enclosed a patch ... Note there is still a FIXME in the patched code, which as stated needs to be fix (0.9 POST will fail right now, BTW thi probably explains why 0.9 PUT failed - I'll send another patch...) Alex, thanks for your time, whenever jigsaw.w3.org comes up I will maintain a list of contributors there ;-) Anselm. =================================================================== RCS file: /afs/w3.org/CVS-Repository/WWW/Jigsaw/src/classes/w3c/jigsaw/http/Request.java,v retrieving revision 1.15 diff -u -r1.15 Request.java --- Request.java 1996/09/13 19:54:48 1.15 +++ Request.java 1996/10/22 07:56:45 @@ -36,8 +36,10 @@ } } - protected Client client = null ; - protected MimeParser parser = null; + protected Client client = null; + protected MimeParser parser = null; + protected InputStream in = null; + boolean is_proxy = false; /** @@ -219,23 +221,26 @@ public InputStream getInputStream() throws IOException { + if ( in != null ) + return in; // Find out which method is used to the length: int len = getContentLength(); if ( len >= 0 ) { - return new ContentLengthInputStream(parser.getInputStream(), len); - } - // No content length, try out chunked encoding: - String te[] = getTransferEncoding() ; - if ( te != null ) { - for (int i = 0 ; i < te.length ; i++) { - if (te[i].equals("chunked")) - return new ChunkedInputStream(parser.getInputStream()); + in = new ContentLengthInputStream(parser.getInputStream(), len); + } else { + // No content length, try out chunked encoding: + String te[] = getTransferEncoding() ; + if ( te != null ) { + for (int i = 0 ; i < te.length ; i++) { + if (te[i].equals("chunked")) + in = new ChunkedInputStream(parser.getInputStream()); + } } } // Everything has failed, we assume the connection will close: // FIXME CLOSE THE CONNECTION ! // return parser.getInputStream(); - return null; + return in; } /**
Received on Tuesday, 22 October 1996 05:01:29 UTC