On Sun, Nov 16, 2008 at 00:51, Jos Ewert <[EMAIL PROTECTED]> wrote:
> Hi,
>
> Im trying to modify mod_fcgid to suit my needs, but I have a problem with
> reading my newly added config directive.
> For some reason it sets the config in my setter right but in the getter it
> always reads the default value.
>
> Whats even stranger is that I used this with mod_fcgid 1.10 too and it works.
>
> e.g.
> set :
> &config : 7092232, &config->homedir : 7101472
> get:
> &config : 7100440, &config->homedir : 7845640
>
> to set the value I use:
>
> ##########
> const char *set_homedir(cmd_parms *cmd, void *dirconfig,
> const char *uid, const char *gid)
> {
>
> server_rec *s = cmd->server;
> fcgid_server_conf *config =
> ap_get_module_config(s->module_config, &fcgid_module);
>
> struct passwd *pw;
> if((pw = getpwuid(ap_uname2id(uid))) == NULL){
> fprintf(stderr,
> "Critical Error: You have specified an invalid user in
> SuexecUserGroup.\n");
> exit(1);
> } else {
> config->homedir = strdup(pw->pw_dir);
> return NULL;
> }
> }
> #########
>
> To get the config:
> ###########
>
> char *get_homedir(request_rec * r)
> {
> server_rec *s = r->server;
> fcgid_server_conf *config =
> ap_get_module_config(s->module_config, &fcgid_module);
> return config->homedir;
> }
>
> ###########
> I removed all the debugging stuff I added to make it more readable.
>
> if you want to take a look at the whole file + the other 2 I modified:
> http://pastebin.com/f4c834a94
>
>
> Any ideas what could have gone wrong?
r->server in get_homedir points to the server object corresponding to
the virtual host of the request. I _guess_ it is different from the
global server object. So, the ap_get_module_config in set_* and the
ap_get_module_config in get_* could give you two distinct config
objects.
S