You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Rob Hartill <ro...@imdb.com> on 1996/06/16 02:30:45 UTC

mod_actions.c handles DefaultType "incorrectly" (fwd)

not acked.


Date: Sat, 15 Jun 1996 17:38:03 -0500
Message-Id: <19...@pluto.mixi.net>
From: "Todd R. Eigenschink" <ei...@pluto.mixi.net>
To: apache-bugs@apache.org
Subject: mod_actions.c handles DefaultType "incorrectly"

I've come across what I would call a bug in mod_actions.c in Apache
1.1b[23] (Linux, although I'd expect the same problem on all host
types).  If not a bug, I'd call it a design misfeature.

For an application I'm working on, I'd like files with no extension in
a certain directory to be treated as application/x-httpd-newsarticle.
They should be processed with a given script that will add a header
and footer.

I used the following .htaccess:

    DefaultType application/x-httpd-newsarticle
    Action      application/x-httpd-newsarticle   /cgi-bin/news/index.pl


When I tried to load one of the files, I'd get a Save As dialog from
Netscape, and it would know that the content-type was
application/x-httpd-newsarticle.  So why wasn't the script being run?

It took a while, but I learned a lot about Apache modules in the
process of figuring it out.

Since the default type is just that--a default value--the content_type
field of the request_rec struct is not being set.  invoke_handler()
uses the content_type field if it's present, and if not, uses
default_type(r), where r is the request_rec.

The handler for the action module catches */*, and then goes searching
through it's own handlers, looking only at the content_type field.
Since r->content_type is NULL, nothing ever matches.  I modified one
line (well, two) in mod_actions.c so that default content types would
be processed correctly.


Is this a bug, or a conscious decision?


Here's a patch.

*** mod_actions.c	Sat Jun 15 12:27:05 1996
--- mod_actions.c.orig	Sat Jun 15 12:25:33 1996
***************
*** 171,178 ****
          return DECLINED;
  
      /* Second, check for actions (which override the method scripts) */
!     if (action && (t = table_get(conf->action_types,
! 				 action ? action : default_type(r)))) {
          script = t;
  	if (r->finfo.st_mode == 0) {
  	    log_reason("File does not exist", r->filename, r);
--- 171,177 ----
          return DECLINED;
  
      /* Second, check for actions (which override the method scripts) */
!     if (action && (t = table_get(conf->action_types, action))) {
          script = t;
  	if (r->finfo.st_mode == 0) {
  	    log_reason("File does not exist", r->filename, r);



Todd
--
Todd R. Eigenschink		Midwest Internet Exchange, Inc.
eigenstr@mixi.net		http://www.mixi.net/
System Manager			(219) 483-2040

----- End of forwarded message from Todd R. Eigenschink -----

-- 
Rob Hartill (robh@imdb.com)
The Internet Movie Database (IMDb)  http://www.imdb.com/
           ...more movie info than you can poke a stick at.

Re: mod_actions.c handles DefaultType "incorrectly" (fwd)

Posted by Alexei Kosut <ak...@nueva.pvt.k12.ca.us>.
On Sat, 15 Jun 1996, Todd R. Eigenschink wrote:

[...]

> The handler for the action module catches */*, and then goes searching
> through it's own handlers, looking only at the content_type field.
> Since r->content_type is NULL, nothing ever matches.  I modified one
> line (well, two) in mod_actions.c so that default content types would
> be processed correctly.
> 
> Is this a bug, or a conscious decision?

It's probably a bug. Thanks for the patch, we'll consider it for the
next release.

Thanks for using Apache!

-- 
________________________________________________________________________
Alexei Kosut <ak...@nueva.pvt.k12.ca.us>      The Apache HTTP Server
URL: http://www.nueva.pvt.k12.ca.us/~akosut/   http://www.apache.org/