Mailing List Archive

New patches and preliminary build...
Well, I finally packaged up some of my changes (including a lot of the
minor one-line bug fixes, and some more major stuff) into individual
patches.

In order to make sure that they all worked, I really had to test them
in the context of a relatively unmodified server (there's a lot of
gratuitous changes in my working sources, and I wanted to be sure
before passing code out). The only way to do that was to apply the
patches to unmodified sources and see what happened. As long as I was
doing that anyway, I threw in some other patches as well. The
finished product passes the smoke test, at least on SunOS; everything
on my server-test page works except for those few things which rely on
*.doit scripts; I'm making it available as well. (I had to build the
thing anyway; I might as well tar it up).

The patches are at ftp://ftp.ai.mit.edu/pub/users/rst/httpd-patches
--- see below for an itemized list and description of each. The
test server is at ftp://ftp.ai.mit.edu/pub/users/rst/apache-pre.tar.Z
(it identifies itself to clients as Apache/0.001).

This server includes all performance enhancements I'm aware of, and
all bugfixes for which I've seen code. (I believe that's all the
bugfixes on the list except for the XBITHACK fixes, and the HP-UX
SIGCHLD fix --- I could easily have faked up a fix for the latter, but
it would be harder to see if it worked. There's also a bug on the
list --- the blanks-in-MIME-headers glitch --- for which I'm not aware
of any fix as yet).

The base code I used was NCSA 1.3 --- the security fixes were applied
as patches (and are included in the patch list below). Note that a
few of the patches do interfere with each other --- the first lines of
code executed by a child process after fork() seem to be a popular
place to patch --- those patches are *'d below. (There's no
*functional* interference, but changes are mushed together close
enough that patch(1) gets confused). Also, the portability fix for
drtr's initgroups patch has to be applied after that patch itself.

The complete list is as follows:

Mine: [*'ed patches interfere with each other]:

patch.nscache --- nameserver cache (if -DNSCACHE set in makefile)
[.Note: this patch does *not* change the Makefile;
you have to do that yourself if you want to]
patch.open_locale --- Don't do open_local() & tzset() on each connection
*patch.linger --- Don't set SO_LINGER on sockets to clients
patch.redir_kill_children --- don't kill_children() if they sent Location:
(it causes more problems than it cures)
*patch.profiling --- optional profiling support (conditional on -DPROFILED
in Makefile)
patch.allow_then_deny --- Don't allow by default with Order allow_then_deny
patch.listen --- raise listen() queue length to 128
patch.apache_id --- Set server name to Apache/0.001, not NCSA/1.3

(see also drtr-initgroups-port, which is a new patch of mine to fix
portability problems with one of drtr's).

Stuff I got from other people:

patch.pioch-timefmt --- Nicolas' patch for <!--#config timefmt-->
patch.drtr-read --- Dave's fix for one-character reads
*patch.drtr-initgroups --- Dave's fix for the initgroups() problem
(also fixes numeric "User" bugs)
patch.drtr-initgroups-port --- My portability fix for drtr-initgroups;
SunOS has limits.h, but it doesn't set LOGNAME_MAX
patch.security-CERT --- CERT security patch
patch.security-NCSA --- NCSA security patch
patch.status_302 --- Rob's patch for treating scripts return Status: 302
as usual, rather than faking up its own MIME hdr&body

Cliff --- I honestly lost track of the note where you said what your
incoming directory is, but if you'll say again, I'll transfer those
patches which are original with me into that directory.

rst
Re: New patches and preliminary build... [ In reply to ]
The incoming directory is ftp://ftp.hyperreal.com/httpd/incoming

Send those sources in!

Cliff
Re: New patches and preliminary build... [ In reply to ]
On Sat, 11 Mar 1995, Robert S. Thau mentioned two paches in apache-pre:
> patch.security-CERT --- CERT security patch
> patch.security-NCSA --- NCSA security patch

I changed httpd.h from

#define MAX_STRING_LEN HUGE_STRING_LEN

to

#if defined(MEMHOGBUTSECURE)
#define MAX_STRING_LEN HUGE_STRING_LEN
#else
#define MAX_STRING_LEN 256
#endif

and added a comment to the top of the Makefile appropriately.

Brian

--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--
brian@hotwired.com brian@hyperreal.com http://www.hotwired.com/Staff/brian/
Re: New patches and preliminary build... [ In reply to ]
Date: Sat, 11 Mar 1995 17:06:05 -0800 (PST)
From: Brian Behlendorf <brian@wired.com>
Precedence: bulk
Reply-To: new-httpd@hyperreal.com

On Sat, 11 Mar 1995, Robert S. Thau mentioned two paches in apache-pre:
> patch.security-CERT --- CERT security patch
> patch.security-NCSA --- NCSA security patch

I changed httpd.h from

#define MAX_STRING_LEN HUGE_STRING_LEN

to

#if defined(MEMHOGBUTSECURE)
#define MAX_STRING_LEN HUGE_STRING_LEN
#else
#define MAX_STRING_LEN 256
#endif

and added a comment to the top of the Makefile appropriately.

Would it be possible for someone who has actually experienced swap
space trouble with the CERT patch to try it again after the speed bums
in apache-pre are added to the server? I suspect the load on the swap
disk may get a whole lot lighter once the server processes themselves
start going away more quickly (so you have fewer of them on the
machine at any one time).

NB on my pokey Sparc 2 (albeit one with nontrivial amounts of RAM, but
64MB isn't a *whole* lot these days) the CERT patch caused no swapping
trouble; however, this was in a server with all of the apache-pre
speed bums in some form.

rst