Received: (from majordom@localhost) by hyperreal.org (8.8.5/8.8.5) id CAA29735; Fri, 1 Aug 1997 02:55:28 -0700 (PDT) Received: from colin.muc.de (root@colin.muc.de [193.174.4.1]) by hyperreal.org (8.8.5/8.8.5) with SMTP id CAA29698 for ; Fri, 1 Aug 1997 02:55:18 -0700 (PDT) Received: from en by colin.muc.de with UUCP id <86098-1>; Fri, 1 Aug 1997 11:54:38 +0200 Received: by en1.engelschall.com (Sendmail 8.8.2) for new-httpd@apache.org id LAA15389; Fri, 1 Aug 1997 11:53:53 +0200 (MET DST) Message-Id: <199708010953.LAA15389@en1.engelschall.com> Subject: [STATUS] Apache 1.2.2 (Fri 1-Aug-1997 11:53 MET DST) To: new-httpd@apache.org Date: Fri, 1 Aug 1997 11:53:53 +0200 From: rse@engelschall.com (Ralf S. Engelschall) Organization: Engelschall, Germany. X-Home: http://www.engelschall.com/ X-Mailer: ELM [version 2.4ME+ PL32 (25)] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=ELM870429233-15376-0_ Content-Transfer-Encoding: 7bit Sender: new-httpd-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org --ELM870429233-15376-0_ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit STATUS for Apache 1.2.2 ======================= Patches already committed: (see ``src/CHANGES'' file for more details) o PR#813,814: obscure proxy stuff (case on Host:, etc.) o PR#797: fix mod_include logging a little... o PR#832: solaris -HUP problem with slack fd o PR#378 part 1: Fix handling of request body in core o API Symbol APACHE_RELEASE provides numeric form o PR#094: revisited o PR#848: treat container like others in mod_info. o PR#815: wrong length in get_client_block() o PR#875: MSIE 4.0 PR2 workaround ("downgrade-1.0") o PR#421,868: mod_auth_anon logs multiple times o PR#777/+++: final sync of mod_rewrite for Apache 1.2.2 o mod_include: handle_else was being used to handle endif. o merging in of all essential documentation changes from 1.3 o merging of updated mod_rewrite documentation after final sync o PR#748: mod_imap infinite loop for references above serverroot Patches available: (see appended MIME-part ``patches.txt'' for diff snippets) o [patch.multdir] Dean's patch for the case where multiple s match and all are applied Status: Dean +1, RSE +1 o [patch.solarisdup] Dean's patch for the solaris which superseeds "PR#832: solaris -HUP problem with slack fd" ** Marc has also found a way for Solaris with slacking ** ** We have to wait for a final solution which really works... ** Status: Dean +1, RSE +0, Ken +1 => ** WAITING IN QUEUE BECAUSE WE ARE STILL NOT SURE WHICH FIX SHOULD BE TAKEN: - the existing already comitted one? - this one which superseeds the existing one? - or a (still not available) patch based on Marc's new way? ** o [patch.chunkerr] Dean's "[PATCH] 1.2.2: obscure chunking error": While chunking, it is possible to exit bwrite() or bflush() without having started the next chunk. It should only happen when there's a write error ... but in some cases it would return without setting the error flags. Status: Dean +1, RSE +0 => ** STILL NEEDS TESTING ** TODO-list: (still not done) o checking of open PR's for Apache 1.2.2 Ralf S. Engelschall rse@engelschall.com www.engelschall.com --ELM870429233-15376-0_ Content-Type: text/plain Content-Disposition: attachment; filename=patches.txt Content-Description: patches.txt Content-Transfer-Encoding: 7bit ====[patch.chunkerr]============================================ |From: dgaudet@arctic.org (Dean Gaudet) |Subject: [PATCH] 1.2.2: obscure chunking error |Date: 29 Jul 1997 15:27:43 +0200 |Message-ID: Ok I think these are obscure. While chunking, it is possible to exit bwrite() or bflush() without having started the next chunk. It should only happen when there's a write error ... but in some cases it would return without setting the error flags. This patch, already committed to 1.3 as part of my writev combining patch, is for 1.2.2. Um I know that the number of people who grok buff.c well enough to figure out if this is right are limited. If someone could apply it to a server and then try a bunch of CGI/SSI access from a 1.1 client (such as MSIE 4.0pr2, without java so that you don't have to downgrade-1.0 force-response-1.0 it) I'd appreciate it. I slept on it a few days and it still seems to be the right fix. Or point a libwww-5.1 spider at it. Those are the only 1.1 clients I know of. Dean Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.286.2.31 diff -u -r1.286.2.31 CHANGES --- CHANGES 1997/07/20 18:39:42 1.286.2.31 +++ CHANGES 1997/07/29 07:02:56 @@ -1,5 +1,8 @@ Changes with Apache 1.2.2 - + + *) In some obscure cases involving partially failed writes while doing + HTTP/1.1 chunking apache would omit the chunk header. [Dean Gaudet] + *) The proxy didn't treat the "Host:" keyword of the host header as case- insensitive. The proxy would corrupt the first line of a response from an HTTP/0.9 server. [Kenichi Hori ] PR#813,814 Index: buff.c =================================================================== RCS file: /export/home/cvs/apache/src/buff.c,v retrieving revision 1.26 diff -u -r1.26 buff.c --- buff.c 1997/05/29 05:21:15 1.26 +++ buff.c 1997/07/29 07:02:58 @@ -750,6 +750,9 @@ return i; } + /* in case a chunk hasn't been started yet */ + if( fb->flags & B_CHUNK ) start_chunk( fb ); + /* * Whilst there is data in the buffer, keep on adding to it and writing it * out @@ -776,13 +779,17 @@ /* it is just too painful to try to re-cram the buffer while * chunking */ - i = (write_it_all(fb, fb->outbase, fb->outcnt) == -1) ? - -1 : fb->outcnt; - } - else { - do i = write(fb->fd, fb->outbase, fb->outcnt); - while (i == -1 && errno == EINTR && !(fb->flags & B_EOUT)); + if (write_it_all(fb, fb->outbase, fb->outcnt) == -1) { + /* we cannot continue after a chunked error */ + doerror (fb, B_WR); + return -1; + } + fb->outcnt = 0; + break; } + do { + i = write(fb->fd, fb->outbase, fb->outcnt); + } while (i == -1 && errno == EINTR && !(fb->flags & B_EOUT)); if (i <= 0) { if (i == 0) /* return of 0 means non-blocking */ errno = EAGAIN; @@ -861,7 +868,6 @@ while (fb->outcnt > 0) { - /* the buffer must be full */ do i = write(fb->fd, fb->outbase, fb->outcnt); while (i == -1 && errno == EINTR && !(fb->flags & B_EOUT)); if (i == 0) { ====[patch.multdir]============================================ |Date: Fri, 1 Aug 1997 01:01:22 -0700 (PDT) |From: Dean Gaudet |Subject: cvs commit: apache/src http_request.c dgaudet 97/08/01 01:01:22 Modified: src http_request.c Log: Fix a bug introduced by a bug fix during the 1.2 betas: if there are multiple s that match, all are applied... that's the bug that was fixed during 1.2bX. But it didn't reset this_conf to NULL, so as soon as one match was found, it would be merged over and over again. Revision Changes Path 1.67 +2 -1 apache/src/http_request.c Index: http_request.c =================================================================== RCS file: /export/home/cvs/apache/src/http_request.c,v retrieving revision 1.66 retrieving revision 1.67 diff -u -r1.66 -r1.67 --- http_request.c 1997/07/20 18:52:41 1.66 +++ http_request.c 1997/08/01 08:01:21 1.67 @@ -349,7 +349,7 @@ core_dir_config *core_dir = (core_dir_config *)get_module_config(per_dir_defaults, &core_module); int overrides_here; - void *this_conf = NULL, *htaccess_conf = NULL; + void *this_conf, *htaccess_conf = NULL; char *test_dirname_tail; int j; @@ -380,6 +380,7 @@ (core_dir_config *)get_module_config(entry_config, &core_module); entry_dir = entry_core->d; + this_conf = NULL; if (entry_core->r) { if (!regexec(entry_core->r, test_dirname, 0, NULL, (j == num_sec) ? 0 : REG_NOTEOL)) { ====[patch.solarisdup]============================================ |From: dgaudet@arctic.org (Dean Gaudet) |Subject: [PATCH] solaris sockets |Date: 29 Jul 1997 00:19:15 +0200 |Message-ID: I think the comment in the patch speaks for itself. I'll mail this to all the PR submitters. This is against 1.2.1 without the previous patch applied. Dean [The previous patch can be seen with ``cvs diff -r1.149.2.4 -r1.149.2.5 http_main.c'' and has to be backed out from Apache 1.2.2-dev when we include this one -- rse] --- apache_1.2.1-dist/src/http_main.c Sun Jun 29 11:08:37 1997 +++ apache_1.2.1/src/http_main.c Mon Jul 28 11:35:36 1997 @@ -1982,7 +1982,27 @@ exit(1); } + /* Solaris, at least versions 2.4, 2.5 and 2.5.1, even with various + * levels of tcp/ip patches available as of July 28, 1997, completely + * botches up if you do any form of dup() on a socket. If that dupped + * socket is then put into listen() and accept()s at least one + * connection, then Bad Things happen. Things work fine until the + * socket is close()d. At that point, no matter what SO_REUSEADDR was + * set to, nothing can rebind the same address/port, you'll get + * "Address in use" errors. This takes about 5 minutes to timeout. + * + * So we do no slacking on solaris sockets. If you can live with those + * restrictions (which essentially means you have to use SIGUSR1 and + * not SIGHUP to restart the server, and should you ever need to stop + * the server you'll have at least a 5 minute wait before you can + * restart it) then you can remove this #ifndef. You'll get yourself + * another 120ish virtual hosts (assuming you're using Listen for each + * of them) before you run into another Solaris problem: the 256 + * FILE * limitation. + */ +#ifndef SOLARIS2 s = ap_slack(s, AP_SLACK_HIGH); +#endif note_cleanups_for_fd(pconf, s); /* arrange to close on exec or restart */ --ELM870429233-15376-0_--