Thanks for the quick response Joe. Just to make sure, here is what I did:
<IfModule mod_myfilter.c>
<Location />
SetOutputFilter myfilter
</Location>
</IfModule>
and the code
#include <stdio.h>
#include <httpd.h>
#include <http_protocol.h>
#include <http_config.h>
#include <util_filter.h>
#define MY_FILTER_NAME "myfilter"
static int my_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
{
fprintf(stderr, "mod_myfilter: status = %d, status-line = %s\n",
f->r->status, f->r->status_line);
ap_pass_brigade(f->next, bb);
return APR_SUCCESS;
}
static void my_filter_hooks(apr_pool_t *pool)
{
ap_register_output_filter(MY_FILTER_NAME, my_output_filter, NULL,
AP_FTYPE_RESOURCE);
fprintf(stderr, "mod_myfilter: registered my_output_filter\n");
}
module AP_MODULE_DECLARE_DATA myfilter_module = {
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
NULL,
my_filter_hooks
};
I setup an intentional redirect for testing
Redirect 301 /red.htm http://localhost/green.htm
When I try http://localhost/, should I not see the output from myfilter ?
May be I am doing something wrong ?
Also you indicated I need to hook into ap_hook_insert_error_filter -
would you by any chance have any sample code ?
Rgds
Bhaskar
On 02/29/2012 08:06 PM, Joe Lewis wrote:
On 02/29/2012 06:01 PM, Swaminathan Bhaskar wrote:
Hi
Is there anyway to intercept HTTP 301/302 redirects ? I tried
registering a very simple output filter (AP_FTYPE_RESOURCE) and the
filter function did not get a callback. I would assume all output
goes through the filter chain
Rgds
Bhaskar
Did you hook the ap_hook_insert_error_filter function? For errors,
you need that one.
Joe
--
http://www.silverhawk.net/