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/08/27 00:16:54 UTC

cvs commit: httpd-2.0/server core.c

nd          2004/08/26 15:16:54

  Modified:    .        Tag: APACHE_2_0_BRANCH CHANGES STATUS
               include  Tag: APACHE_2_0_BRANCH http_core.h
               server   Tag: APACHE_2_0_BRANCH core.c
  Log:
  Satisfy directives now can be influenced by a surrounding <Limit>
  container.
  
  PR: 14726.
  Reviewed by: Jeff Trawick, Bill Stoddard
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.988.2.337 +3 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.988.2.336
  retrieving revision 1.988.2.337
  diff -u -u -r1.988.2.336 -r1.988.2.337
  --- CHANGES	26 Aug 2004 21:53:22 -0000	1.988.2.336
  +++ CHANGES	26 Aug 2004 22:16:52 -0000	1.988.2.337
  @@ -1,5 +1,8 @@
   Changes with Apache 2.0.51
   
  +  *) Satisfy directives now can be influenced by a surrounding <Limit>
  +     container.  PR 14726.  [Andr� Malo]
  +
     *) mod_rewrite now officially supports RewriteRules in <Proxy> sections.
        PR 27985.  [Andr� Malo]
   
  
  
  
  1.751.2.1022 +1 -7      httpd-2.0/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/STATUS,v
  retrieving revision 1.751.2.1021
  retrieving revision 1.751.2.1022
  diff -u -u -r1.751.2.1021 -r1.751.2.1022
  --- STATUS	26 Aug 2004 21:53:23 -0000	1.751.2.1021
  +++ STATUS	26 Aug 2004 22:16:52 -0000	1.751.2.1022
  @@ -198,12 +198,6 @@
                         a correctness fix; just a perf. fix.  We'd send the EOS
                         later without it.
   
  -    *) Allow Satisfy directives to be influenced by <Limit>.
  -       PR: 14726
  -         include/http_core.h: r1.81
  -         server/core.c: r1.266
  -       +1: nd, trawick, stoddard
  -
       *) Provide TLS/SSL upgrade functionality in mod_ssl allowing an unsecure
          connection to be upgraded to a secure connection upon request by the
          client.  The full patch file is available at http://www.apache.org/~bnicholes/
  
  
  
  No                   revision
  No                   revision
  1.70.2.8  +1 -1      httpd-2.0/include/http_core.h
  
  Index: http_core.h
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/include/http_core.h,v
  retrieving revision 1.70.2.7
  retrieving revision 1.70.2.8
  diff -u -u -r1.70.2.7 -r1.70.2.8
  --- http_core.h	25 Mar 2004 02:07:28 -0000	1.70.2.7
  +++ http_core.h	26 Aug 2004 22:16:53 -0000	1.70.2.8
  @@ -422,7 +422,7 @@
     
       /* Authentication stuff.  Groan... */
       
  -    int satisfy;
  +    int *satisfy; /* for every method one */
       char *ap_auth_type;
       char *ap_auth_name;
       apr_array_header_t *ap_requires;
  
  
  
  No                   revision
  No                   revision
  1.225.2.26 +20 -6     httpd-2.0/server/core.c
  
  Index: core.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/server/core.c,v
  retrieving revision 1.225.2.25
  retrieving revision 1.225.2.26
  diff -u -u -r1.225.2.25 -r1.225.2.26
  --- core.c	15 Aug 2004 22:42:14 -0000	1.225.2.25
  +++ core.c	26 Aug 2004 22:16:53 -0000	1.225.2.26
  @@ -98,6 +98,7 @@
   static void *create_core_dir_config(apr_pool_t *a, char *dir)
   {
       core_dir_config *conf;
  +    int i;
   
       conf = (core_dir_config *)apr_pcalloc(a, sizeof(core_dir_config));
   
  @@ -114,7 +115,10 @@
   
       conf->hostname_lookups = HOSTNAME_LOOKUP_UNSET;
       conf->do_rfc1413 = DEFAULT_RFC1413 | 2; /* set bit 1 to indicate default */
  -    conf->satisfy = SATISFY_NOSPEC;
  +    conf->satisfy = apr_palloc(a, sizeof(*conf->satisfy) * METHODS);
  +    for (i = 0; i < METHODS; ++i) {
  +        conf->satisfy[i] = SATISFY_NOSPEC;
  +    }
   
   #ifdef RLIMIT_CPU
       conf->limit_cpu = NULL;
  @@ -347,8 +351,10 @@
       /* Otherwise we simply use the base->sec_file array
        */
   
  -    if (new->satisfy != SATISFY_NOSPEC) {
  -        conf->satisfy = new->satisfy;
  +    for (i = 0; i < METHODS; ++i) {
  +        if (new->satisfy[i] != SATISFY_NOSPEC) {
  +            conf->satisfy[i] = new->satisfy[i];
  +        }
       }
   
       if (new->server_signature != srv_sig_unset) {
  @@ -680,7 +686,7 @@
       conf = (core_dir_config *)ap_get_module_config(r->per_dir_config,
                                                      &core_module);
   
  -    return conf->satisfy;
  +    return conf->satisfy[r->method_number];
   }
   
   /* Should probably just get rid of this... the only code that cares is
  @@ -1516,15 +1522,23 @@
   static const char *satisfy(cmd_parms *cmd, void *c_, const char *arg)
   {
       core_dir_config *c = c_;
  +    int satisfy = SATISFY_NOSPEC;
  +    int i;
   
       if (!strcasecmp(arg, "all")) {
  -        c->satisfy = SATISFY_ALL;
  +        satisfy = SATISFY_ALL;
       }
       else if (!strcasecmp(arg, "any")) {
  -        c->satisfy = SATISFY_ANY;
  +        satisfy = SATISFY_ANY;
       }
       else {
           return "Satisfy either 'any' or 'all'.";
  +    }
  +
  +    for (i = 0; i < METHODS; ++i) {
  +        if (cmd->limited & (AP_METHOD_BIT << i)) {
  +            c->satisfy[i] = satisfy;
  +        }
       }
   
       return NULL;