/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
apache konf handler problem
Fra : Hroi Sigurdsson


Dato : 16-05-01 20:30

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

 
 
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408891
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste