Hej allesammen.
Jeg sidder og mosler med et simpelt apache-modul, som nu skal kunne
konfigureres fra httpd.conf.
Da jeg af en eller anden årsag ikke kan sende mails til
new-httpd@apache.org for tiden, tænkte jeg at jeg lige kunne lade jer
gnave på denne.
Mit problem består i at Apache kalder mine command handlere med en null
pointer til server-konfigurations struct'en.
Et minimalt, fjollet eksempel der illustrerer problemet:
#include "httpd.h"
#include "http_config.h"
module MODULE_VAR_EXPORT sheep_module;
typedef struct {
  int enabled;
  int color;
  char *name;
} sheep_server_config;
static void *sheep_server_conf(pool *p, server_rec *r) {
  sheep_server_config *cfg = (sheep_server_config *)
                             ap_pcalloc(p, sizeof(sheep_server_config));
  cfg->enabled      = 0;
  cfg->color        = 0xffffff;
  cfg->name         = "Dolly";
  /* og vi afleverer pænt tilbage til apache */
  return (void *) cfg;
}
static const char *sheep_toggle(cmd_parms *parms, void *mconfig,
                                const int toggled) {
  sheep_server_config *cfg = (sheep_server_config *)mconfig;
  if(mconfig == NULL) {
    /* DET ER HER PROBLEMET LIGGER!! HVOR ER MIN PER-SERVER MODULE CONF
DATA STRUCT?? */
    return "mconfig == NULL 

. No sheep for you";
  } else {
    /* Ville give segfault hvis cfg pegede på noget forkert. */
    cfg->enabled = toggled;
  }
  return NULL;
}
static const command_rec sheep_cmds[] =
  {
    {"Sheep", sheep_toggle, NULL, OR_ALL, FLAG, "Toggle sheep"},
    {NULL}
  };
module MODULE_VAR_EXPORT sheep_module =
  {
    STANDARD_MODULE_STUFF,
    NULL,                       /* initializer */
    NULL,                       /* create per-dir config */
    NULL,                       /* merge per-dir config */
    sheep_server_conf,          /* server config */
    NULL,                       /* merge server config */
    sheep_cmds,                 /* command table */
    NULL,                       /* handlers */
    NULL,                       /* filename translation */
    NULL,                       /* check_user_id */
    NULL,                       /* check auth */
    NULL,                       /* check access */
    NULL,                       /* type_checker */
    NULL,                       /* fixups */
    NULL,                       /* logger */
    NULL,                       /* header parser */
    NULL,                       /* child_init */
    NULL,
    NULL                        /* post read-request */
  };
Loader jeg modulet og tilføjer en Sheep on i httpd.conf og kører httpd
får jeg:
Syntax error on line 666 of /bla/bla/conf/httpd.conf:
mconfig == NULL 

. No sheep for you
Nogen ideer?
-- 
Hroi Sigurdsson