Hi,


I'am coding a module for apache 2.0 in reverse proxy mode.
Inside this module, i have a post_read_request hook which return HTTP_OK or HTTP error codes like 403 or 500. For some reason, i have also error codes not for apache but for my log analyser, which are written in the error log.
for example, 3 or 4 same error codes, i will return an error 403. So the client will receive the same error page for all this internal error codes.


My aim is to insert my own document depending to the internal error code corresponding.
I coded a filter doing what follow:


Receiving the filename in f->ctx
Opening the file on hard drive.
Creating a file bucket and insert it in the HEAD of the brigade.
Creating an EOS bucket and insert it in the end of the brigade
Then, i remove my filter
pass the brigade to next filter
return status of ap_pass_brigade.

i declared this filter as an output filter, and declare it also as an output_filter_handle

Then i did a function to insert this filter when i encouter the internal error code, doing the following things:

ap_run_insert_filter(r);
ap_add_output_filter_handle (my error document filter handle);
creating a brigade
passing the empty brigade to the output filter.

( i looked how mod_cache do to insert the cached document).

So now, when my module is running:

in my post_read_request hook:

i see the internal error code, i launch the function inserting my custom error document.
Then i return the Apache error code (403).


The client receive my custom error document, and it seems to work ...
but if i do a refresh on the client browser, i will receive the apache error document for error 403.
So 1/2 times i receive the custom.


I think it's because when i return the 403 error code in my post_read_request hook, it's inserting another filter after my custom error document filter.
But it was really that, the client should receive the custom error document + apache error document both.


I also tryied to destroy the brigade received in my filter, and to create a new one with the file bucket and eos bucket i pass to the next filter. But the behaviour is the same.

Is there a way to cancel the error document filter inserting the apache error document ?
does somebody see what i could do and if it's possible to do what i want ?


Best regards,

Estrade Matthieu



_____________________________________________________________________
GRAND JEU SMS : Pour gagner un NOKIA 7650, envoyez le mot IF au 61321
(prix d'un SMS + 0.35 euro). Un SMS vous dira si vous avez gagné.
Règlement : http://www.ifrance.com/_reloc/sign.sms



Reply via email to