Received: by taz.hyperreal.com (8.6.12/8.6.5) id TAA16383; Wed, 21 Feb 1996 19:07:56 -0800 Received: from relay-2.mail.demon.net by taz.hyperreal.com (8.6.12/8.6.5) with SMTP id TAA16285; Wed, 21 Feb 1996 19:07:24 -0800 Received: from post.demon.co.uk ([158.152.1.72]) by relay-2.mail.demon.net id bl20299; 21 Feb 96 23:20 GMT Received: from aaaaaaaa.demon.co.uk ([158.152.178.85]) by relay-3.mail.demon.net id aa15695; 21 Feb 96 16:53 GMT Received: (from andrew@localhost) by aaaaaaaa.demon.co.uk (8.6.12/8.6.9) id QAA00954 for new-httpd@hyperreal.com; Wed, 21 Feb 1996 16:48:49 GMT From: Andrew Message-Id: <199602211648.QAA00954@aaaaaaaa.demon.co.uk> Subject: */* && DECLINED versus fixups()... To: new-httpd@hyperreal.com Date: Wed, 21 Feb 1996 16:48:48 +0000 (GMT) X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8891-1 Content-Transfer-Encoding: 7bit Content-Length: 1390 Sender: owner-new-httpd@apache.org Precedence: bulk Reply-To: new-httpd@hyperreal.com Sigh, ok, so in an ideal world we can use a handler for type */* which always DECLINEDs and it'll effectively run a little chunk of module code before sending the headers and data out of the server. In the real world however, each module that does this will have to coexist with others (see http_config.c:invoke_handler()) and will just have to pray that none of the others invokes a handler first. The 'clever' way round this is to ensure that the modules which rely on */* && DECLINED aways get called before the ones which intend to return OK, and this assumes that the guy who built the Configuration knows what day it is, and which order to define the modules. The real world precludes any 'clever'ness on the part of the user however and if the modules are to have any surety of working then they should find more robust ways of ensuring that they get invoked at the right time. From my point of view this implies a pre-send() hook, invoked after the fixup() hook and before the data gets flushed to the browser. So we're back to having to cludge up the API to get it to do what we want. Not to worry, I rolled back contrib/module's mod_cern_meta.c and mod_expires.c to use the fixup() behaviour instead of */* handlers. Vesion numbers have been incremented still, so people who make a point of looking at the numbers will be sure to change to the working (older) spec. Ay.