You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by nd...@apache.org on 2004/04/05 19:34:48 UTC

cvs commit: httpd-2.0/modules/metadata mod_headers.c

nd          2004/04/05 10:34:48

  Modified:    .        CHANGES
               modules/metadata mod_headers.c
  Log:
  allow RequestHeader to be conditional
  
  PR: 27951
  Basically submitted by: vincent gryzor.com (Vincent Deffontaines)
  
  Revision  Changes    Path
  1.1447    +3 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.1446
  retrieving revision 1.1447
  diff -u -u -r1.1446 -r1.1447
  --- CHANGES	3 Apr 2004 23:22:18 -0000	1.1446
  +++ CHANGES	5 Apr 2004 17:34:46 -0000	1.1447
  @@ -2,6 +2,9 @@
   
     [Remove entries to the current 2.0 section below, when backported]
   
  +  *) Allow RequestHeader directives to be conditional. PR 27951.
  +     [Vincent Deffontaines <vincent gryzor.com>, Andr� Malo]
  +
     *) Fix segfault in mod_expires, which occured under certain
        circumstances. PR 28047.  [Andr� Malo]
   
  
  
  
  1.52      +11 -21    httpd-2.0/modules/metadata/mod_headers.c
  
  Index: mod_headers.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/metadata/mod_headers.c,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -u -r1.51 -r1.52
  --- mod_headers.c	1 Mar 2004 15:51:25 -0000	1.51
  +++ mod_headers.c	5 Apr 2004 17:34:48 -0000	1.52
  @@ -424,10 +424,6 @@
   
       /* Handle the envclause on Header */
       if (envclause != NULL) {
  -        if (inout == hdr_in) {
  -            return "error: envclause (env=...) only valid on "
  -                "Header and ErrorHeader directives";
  -        }
           if (strncasecmp(envclause, "env=", 4) != 0) {
               return "error: envclause should be in the form env=envar";
           }
  @@ -448,7 +444,7 @@
       return parse_format_string(cmd->pool, new, value);
   }
   
  -/* Handle Header directive */
  +/* Handle all (xxx)Header directives */
   static const char *header_cmd(cmd_parms *cmd, void *indirconf,
                                 const char *args)
   {
  @@ -464,19 +460,11 @@
       hdr = ap_getword_conf(cmd->pool, &s);
       val = *s ? ap_getword_conf(cmd->pool, &s) : NULL;
       envclause = *s ? ap_getword_conf(cmd->pool, &s) : NULL;
  -    outbl = (cmd->info == NULL) ? hdr_out : hdr_err;
  +    outbl = (hdr_inout)cmd->info;
   
       return header_inout_cmd(outbl, cmd, indirconf, action, hdr, val, envclause);
   }
   
  -/* handle RequestHeader directive */
  -static const char *request_header_cmd(cmd_parms *cmd, void *indirconf,
  -                              const char *action, const char *inhdr,
  -                              const char *value)
  -{
  -    return header_inout_cmd(hdr_in, cmd, indirconf, action, inhdr, value, NULL);
  -}
  -
   /*
    * Process the tags in the format string. Tags may be format specifiers 
    * (%D, %t, etc.), whitespace or text strings. For each tag, run the handler
  @@ -680,13 +668,15 @@
                                           
   static const command_rec headers_cmds[] =
   {
  -    AP_INIT_RAW_ARGS("Header", header_cmd, NULL, OR_FILEINFO,
  -                   "an action, header and value followed by optional env clause"),
  -    AP_INIT_RAW_ARGS("ErrorHeader", header_cmd, "", OR_FILEINFO,
  -                     "an action, header and value "
  -                     "followed by optional env clause"),
  -    AP_INIT_TAKE23("RequestHeader", request_header_cmd, NULL, OR_FILEINFO,
  -                   "an action, header and value"),
  +    AP_INIT_RAW_ARGS("Header", header_cmd, (void *)hdr_out, OR_FILEINFO,
  +                     "an action, header and value followed by optional env "
  +                     "clause"),
  +    AP_INIT_RAW_ARGS("RequestHeader", header_cmd, (void *)hdr_in, OR_FILEINFO,
  +                     "an action, header and value followed by optional env "
  +                     "clause"),
  +    AP_INIT_RAW_ARGS("ErrorHeader", header_cmd, (void *)hdr_err, OR_FILEINFO,
  +                     "an action, header and value followed by optional env "
  +                     "clause"),
       {NULL}
   };