From: "Will Lowe" <[EMAIL PROTECTED]>
To: "William A. Rowe, Jr." <[EMAIL PROTECTED]>
Sent: Friday, August 24, 2001 1:24 PM
Subject: Re: [PATCH] fix segfaults related to ap_custom_response()


> > I'd be happy to entertain a patch if you can avoid breaking binary compatibility.
> 
> Mr. Rowe,  here's a patch that doesn't break binary compatibility (uses
> r->request_config instead of adding a field to request_rec).  I posted
> it to the list a while back,  but didn't get any response,  so I
> figured I'd send it to you since you're the one who took interest in it
> originally.

I'm still interested in it, but I'm also slaughtered with work at the moment.

I'm certain this is also pertinant to 2.0 - so here is the patch again for anyone
willing to look at the issues, before I get my roundtuit.

Bill



> diff -ur apache_1.3.20/src/main/http_core.c apache_1.3.20-new/src/main/http_core.c
> --- apache_1.3.20/src/main/http_core.c Fri Mar  9 02:10:25 2001
> +++ apache_1.3.20-new/src/main/http_core.c Fri Aug 17 23:27:58 2001
> @@ -581,9 +581,16 @@
>  {
>      core_dir_config *conf;
>  
> -    conf = (core_dir_config *)ap_get_module_config(r->per_dir_config,
> +    /* prefer per-request settings */
> +    conf = (core_dir_config *)ap_get_module_config(r->request_config,
>      &core_module); 
>  
> +    /* but if there aren't any,  try the dir config */
> +    if ( conf == NULL ) {
> +      conf = (core_dir_config *) ap_get_module_config(r->per_dir_config,
> +                                                      &core_module);
> +    }
> +
>      if (conf->response_code_strings == NULL) {
>   return NULL;
>      }
> @@ -1165,8 +1172,14 @@
>  API_EXPORT(void) ap_custom_response(request_rec *r, int status, char *string)
>  {
>      core_dir_config *conf = 
> - ap_get_module_config(r->per_dir_config, &core_module);
> + ap_get_module_config(r->request_config, &core_module);
>      int idx;
> +
> +    if(conf == NULL) {
> +      /* if this doesn't exist,  we'll have to make one */
> +      conf = (core_dir_config*) ap_pcalloc(r->pool, sizeof(core_dir_config));
> +      ap_set_module_config(r->request_config, &core_module, conf);
> +    }
>  
>      if(conf->response_code_strings == NULL) {
>          conf->response_code_strings = 
> 

Reply via email to