Re: [MP2] Handler feauters in a filter?

2002-12-03 Thread Stas Bekman
Issac Goldstand wrote:

I'm writing a filter in which two lines of data are to be appended to the
content going back.  However, I'd like to test for a 404, and if found set
the response to 200.  Can this be done from the output filters?  Or am I
going to have to do something more complex with a handler?


Haven't tried this yet, but you can either write a connection filter 
which rewrites the headers if they were sent already, or insert your 
filter just before the one that generates the headers. Since you want to 
add something to the end, the former case is probably the best. I 
suggest that you ask for the best way at the httpd-dev list, as it's a 
pretty generic httpd topic and that list has real filter experts. Then 
once you figure out from them what's the best way to go (and share with 
us :) implementing it in perl is a piece of cake.

The big problem is mod_proxy (or any other module, for that matter) - it's
not as simple as checking the file on disk - the content could be coming
from a proxy or from another content-handler.

Any ideas?
  Issac



--


__
Stas BekmanJAm_pH -- Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide --- http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com




Re: [MP2] Handler feauters in a filter?

2002-12-03 Thread Issac Goldstand
Implemented it in C:

  if (f-r-status==HTTP_NOT_FOUND) // If this is so, we need to revamp the
request_rec
  {
   f-r-status=HTTP_OK; // Spoof HTTP_OK
   f-r-status_line=200 OK;

APR_BRIGADE_INSERT_TAIL(ctx-bb,apr_bucket_eos_create(f-c-bucket_alloc));
// Add an EOS to the new bb
   ap_pass_brigade(f-next,ctx-bb); // and pass the new bb to the next
filter
   return APR_SUCCESS;
  }

Not sure how to translate that to mod_perl's API (the first half is easy and
understandable in C, I think, though...)

This was *my* solution - I'm not sure if it's the best way to do it...
I'm sure that as I delve deeper into Apache 2, I'll find better solutions...

  Issac

- Original Message -
From: Stas Bekman [EMAIL PROTECTED]
To: Issac Goldstand [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Sent: Tuesday, December 03, 2002 3:43 PM
Subject: Re: [MP2] Handler feauters in a filter?


 Issac Goldstand wrote:
  I'm writing a filter in which two lines of data are to be appended to
the
  content going back.  However, I'd like to test for a 404, and if found
set
  the response to 200.  Can this be done from the output filters?  Or am I
  going to have to do something more complex with a handler?

 Haven't tried this yet, but you can either write a connection filter
 which rewrites the headers if they were sent already, or insert your
 filter just before the one that generates the headers. Since you want to
 add something to the end, the former case is probably the best. I
 suggest that you ask for the best way at the httpd-dev list, as it's a
 pretty generic httpd topic and that list has real filter experts. Then
 once you figure out from them what's the best way to go (and share with
 us :) implementing it in perl is a piece of cake.

  The big problem is mod_proxy (or any other module, for that matter) -
it's
  not as simple as checking the file on disk - the content could be coming
  from a proxy or from another content-handler.
 
  Any ideas?
Issac


 --


 __
 Stas BekmanJAm_pH -- Just Another mod_perl Hacker
 http://stason.org/ mod_perl Guide --- http://perl.apache.org
 mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
 http://modperlbook.org http://apache.org   http://ticketmaster.com





Re: [MP2] Handler feauters in a filter?

2002-12-03 Thread Stas Bekman
Issac Goldstand wrote:

Implemented it in C:

  if (f-r-status==HTTP_NOT_FOUND) // If this is so, we need to revamp the
request_rec
  {
   f-r-status=HTTP_OK; // Spoof HTTP_OK
   f-r-status_line=200 OK;

APR_BRIGADE_INSERT_TAIL(ctx-bb,apr_bucket_eos_create(f-c-bucket_alloc));
// Add an EOS to the new bb
   ap_pass_brigade(f-next,ctx-bb); // and pass the new bb to the next
filter
   return APR_SUCCESS;
  }

Not sure how to translate that to mod_perl's API (the first half is easy and
understandable in C, I think, though...)


It works exactly the same, just add $ before 'f' :) Though you don't say 
where in the filter chain do you insert it and how do you configure it 
(i.e. what filter type).

This was *my* solution - I'm not sure if it's the best way to do it...
I'm sure that as I delve deeper into Apache 2, I'll find better solutions...


Hence my suggestion to ask at the httpd-dev list.

__
Stas BekmanJAm_pH -- Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide --- http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com




[MP2] Handler feauters in a filter?

2002-12-02 Thread Issac Goldstand
I'm writing a filter in which two lines of data are to be appended to the
content going back.  However, I'd like to test for a 404, and if found set
the response to 200.  Can this be done from the output filters?  Or am I
going to have to do something more complex with a handler?

The big problem is mod_proxy (or any other module, for that matter) - it's
not as simple as checking the file on disk - the content could be coming
from a proxy or from another content-handler.

Any ideas?
  Issac