Received: by taz.hyperreal.com (8.8.3/V2.0) id QAA15712; Sat, 4 Jan 1997 16:58:57 -0800 (PST) Received: from eastwood.aldigital.algroup.co.uk by taz.hyperreal.com (8.8.3/V2.0) with SMTP id QAA15706; Sat, 4 Jan 1997 16:58:53 -0800 (PST) Received: from gonzo.ben.algroup.co.uk ([193.133.15.1]) by eastwood.aldigital.algroup.co.uk (8.6.12/8.6.12) with SMTP id AAA13917 for ; Sun, 5 Jan 1997 00:58:17 GMT Subject: Re: Header Parse API To: new-httpd@hyperreal.com Date: Sat, 4 Jan 1997 23:50:38 +0000 (GMT) From: Ben Laurie In-Reply-To: from "Alexei Kosut" at Jan 4, 97 09:36:06 am Reply-To: ben@algroup.co.uk X-Mailer: ELM [version 2.4 PL24 PGP2] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Message-ID: <9701042350.aa27755@gonzo.ben.algroup.co.uk> Sender: new-httpd-owner@apache.org Precedence: bulk Reply-To: new-httpd@hyperreal.com Alexei Kosut wrote: > > On Sat, 4 Jan 1997, Dean Gaudet wrote: > > > But it does require everything to be recompiled... one thing I mentioned a > > while back is that if the module structure included a size field then it > > would be possible to keep binary compatibility while increasing the number > > of callbacks. During initialization when the module list is collected > > just allocate new structures of the appropriate current size with NULL > > vectors for whatever was missing. > > However, everything needs to be recomiled anyway. Although pretty > much, a module written for 0.8.0 is source-compatible (though not if > it used POST/PUT) with 1.2, it sure as heck isn't > binary compatible. In fact, it won't even load (you'll get a "module > 'mod_whatever,c' is not compatible with this version of Apache" > notice). > > Backwards and forwards binary compatibility is something I was > planning for 2.0. > > Actually, in terms of the module structure itself, I'd like to see the > current system replaced with something someone (I think it was Randy) > proposed a year or so ago. Which is instead of having a structure that > the module writer has to manually fill in with all the slots, instead > just have a single "module setup" function that's called when the > module is first loaded, and which calls other functions which add API > hooks. Something like: > > void setup_example_module (void) { > add_translate_function(translate_example); > add_command_record(&example_cmds); > add_logger_function(log_example_transaction); > } > > and so forth. Seems vaugly like a good idea. *shrug* I really hate to mention this (NOT!), but this exactly what C++ does for you, only considerably more elegantly. Cheers, Ben. -- Ben Laurie Phone: +44 (181) 994 6435 Email: ben@algroup.co.uk Freelance Consultant and Fax: +44 (181) 994 6472 Technical Director URL: http://www.algroup.co.uk/Apache-SSL A.L. Digital Ltd, Apache Group member (http://www.apache.org) London, England. Apache-SSL author