Simple Apache module cannot get configuration object

Discussion in 'Apache' started by usfish817, Jul 24, 2009.

  1. #1
    Hi All,

    I am trying to write a simple apache module, and this module works on Apache 2.0 but not on Apache 2.2. The problem happens in ap_get_module_config (bolded in the code). Any clue about the possible cause?

    Thanks in advance
    
    #include <httpd.h>
    #include <http_config.h>
    #include <http_core.h>
    #include <http_main.h>
    #include <http_protocol.h>
    #include <ap_compat.h>
    #include <stdio.h>
    
    typedef struct {
      const char* conf_path;
      bool model;
      bool limit;
    } my_config;
    
    extern "C" module AP_MODULE_DECLARE_DATA my_module;
    
    static const char*
    setpath(cmd_parms *parms, void *dummy, const char *arg) {
      my_config *cfg = (my_config *)
        ap_get_module_config(parms->server->module_config, &my_module);  [B]// Here, value of ap_get_module_config always null.[/B]
      cfg->conf_path = arg;
      return NULL;
    }
    
    static void*
    make_conf(apr_pool_t *p, server_rec *s)  {
      my_config *cfg =
        (my_config *)apr_palloc(p, sizeof(my_config));
      cfg->conf_path = NULL;
      cfg->model = TRUE;
      cfg->limit = TRUE;
      return (void *)cfg;
    }
    
    static const command_rec com_table[] = {
      {"directive name", (cmd_func)setpath,
       NULL, RSRC_CONF, TAKE1,
       "hello message"},
      {NULL}
    };
    
    extern "C" {
    module my_module = {
        STANDARD20_MODULE_STUFF,
        NULL,                   /* create per-directory config structures */
        NULL,                   /* merge per-directory config structures  */
        make_conf, /* create per-server config structures    */
        NULL,                   /* merge per-server config structures     */
        com_table,     /* command handlers */
        NULL          /* register hooks */
     };
    };
    
    Code (markup):

     
    usfish817, Jul 24, 2009 IP