I incorrectly posted this question on http-dev.
I have a written a simple module for 2.0 where I wish to read configuration
only from the main server config.
I get a segfault when it walks the configuration though. I have created an
even simpler example which I will include at the end.
Basically when apache is reading the configuration from the conf file and it
gets to my setting, it fails. In ap_walk_config_sub (config.c) the
section_vector is always null.
My module only implements the ap_hook_fixups method. (Not sure if that
matters)
Thanks for your consideration.
Brian
--------------------------- begin mod_jcp_test.c -------------------------
#include "httpd.h"
#include "http_config.h"
#include "http_core.h"
#include "http_log.h"
#include "http_protocol.h"
#include "http_request.h"
/* Apache 2.1+ */
#include "ap_provider.h"
#include "apr.h"
#include "apr_lib.h"
#include "apr_buckets.h"
#include "apr_strings.h"
#include "apr_hash.h"
#define APR_WANT_STRFUNC
#include "apr_want.h"
/* apache module name */
module AP_MODULE_DECLARE_DATA mod_jcp_test;
/* config structure */
typedef struct {
char * szHeaderValue;
} server_config;
static apr_status_t ap_headers_fixup(request_rec *r)
{
server_config *conf=NULL;
char *szHeaderVariableName = "JCPPORTAL";
/* Do not run in subrequests */
if (r->main) {
return DECLINED;
}
/* get apache config */
conf = ap_get_module_config(r->server->module_config, &mod_jcp_test);
apr_table_setn(r->headers_in, szHeaderVariableName, conf->szHeaderValue);
return OK;
}
static void register_hooks(apr_pool_t* pool)
{
ap_hook_fixups(ap_headers_fixup, NULL, NULL, APR_HOOK_LAST);
}
static void *create_server_config(apr_pool_t *p, server_rec *s)
{
server_config *conf = apr_pcalloc(p, sizeof(server_config));
conf->szHeaderValue= apr_pstrdup(p,"FredFlinstone");
return conf;
}
static const command_rec Mod_jcp_test_cmds[] =
{
AP_INIT_TAKE1("Mod_jcp_test_header_value", ap_set_string_slot,
(void *)APR_OFFSETOF(server_config, szHeaderValue),
OR_ALL, "Some text to stick in the header."),
{NULL}
};
/* apache module structure */
module AP_MODULE_DECLARE_DATA mod_jcp_test =
{
STANDARD20_MODULE_STUFF,
NULL, /* dir config creater */
NULL, /* dir merger --- default is to override */
create_server_config, /* server config */
NULL, /* merge server config */
Mod_jcp_test_cmds, /* command apr_table_t */
register_hooks /* register hooks */
};
--------------------------- end mod_jcp_test.c -------------------------