httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <oh...@cox.net>
Subject Confused about modules processing order...
Date Tue, 26 Jun 2012 01:49:03 GMT

Hi,

I have my small prototype module, which I implemented starting with the mod_headers.c source,
working.  The changes that I did to the original source were to add some code in the insert_filter
hook to inject an additional header into the request.

That seems to work ok with a "vanilla" Apache configuration.

I want to be able to make my modified module work together with another module, provided by
Oracle (the Oracle Access Manager webgate, aka "webgate").  

However, after I add the directives into the Apache httpd.conf to enable the webgate, it appears
that, on incoming requests, the webgate processing occurs, but my code in the modified mod_headers
module is not called at all :(!!


Here's the last part of my modified mod_headers.c:

static void register_hooks(apr_pool_t *p)
{
    printf("mod_headers-jl V0.13 - use LIBCURL instead of OAM ASDK-process response from callCurl\n");
    printf("In register_hooks\n");
    ap_register_output_filter("FIXUP_HEADERS_OUT", ap_headers_output_filter,
                              NULL, AP_FTYPE_CONTENT_SET);
    ap_register_output_filter("FIXUP_HEADERS_ERR", ap_headers_error_filter,
                              NULL, AP_FTYPE_CONTENT_SET);
    ap_hook_pre_config(header_pre_config,NULL,NULL,APR_HOOK_MIDDLE);
    ap_hook_post_config(header_post_config,NULL,NULL,APR_HOOK_MIDDLE);
    ap_hook_insert_filter(ap_headers_insert_output_filter, NULL, NULL, APR_HOOK_LAST);
    ap_hook_insert_error_filter(ap_headers_insert_error_filter,
                                NULL, NULL, APR_HOOK_LAST);
    ap_hook_fixups(ap_headers_fixup, NULL, NULL, APR_HOOK_LAST);
    ap_hook_post_read_request(ap_headers_early, NULL, NULL, APR_HOOK_FIRST);
}

module AP_MODULE_DECLARE_DATA headers_module =
{
    STANDARD20_MODULE_STUFF,
    create_headers_dir_config,  /* dir config creater */
    merge_headers_config,       /* dir merger --- default is to override */
    NULL,                       /* server config */
    NULL,                       /* merge server configs */
    headers_cmds,               /* command apr_table_t */
    register_hooks              /* register hooks */
};
                                                              

The code I added is in the "ap_headers_insert_output_filter()" function.


I did an "export SHOW_HOOKS=1" and ran the Apache, and I see this for the modified mod_headers:

Registering hooks for mod_headers.c
mod_headers-jl V0.13 - use LIBCURL instead of OAM ASDK-process response from callCurl
In register_hooks
  Hooked pre_config
  Hooked post_config
  Hooked insert_filter
  Hooked insert_error_filter
  Hooked fixups
  Hooked post_read_request


And for webgate, I see:

Registering hooks for apache2entry_web_gate.cpp
  Hooked post_config
  Hooked handler
  Hooked check_user_id
  Hooked auth_checker


I thought that the handler functions are called almost last part of the processing (content
generation), and my code is hooked to insert_filter, which I thought occurs earlier than content
generation, so shouldn't my code get processed BEFORE Apache attempts to process the webgate
functions?

How can I get my code to process before the webgate does?

Thanks,
Jim

Mime
View raw message