If the concensus says "Please don't Extend Options", I will provide this
patch as a directive.

Phil
ps. Now if we could just get a concensus.....

> -----Original Message-----
> From: William A. Rowe, Jr. [SMTP:[EMAIL PROTECTED]]
> Sent: Wednesday, May 02, 2001 10:42 PM
> To:   [EMAIL PROTECTED]; Dietz, Phil E.
> Subject:      Re: [RFC] InodeEtag option
> 
> Folks,
> 
>   I thoroughly support this patch (as an Options flag or as a stand-alone
> indicator) for 1.3.20.  I'm +1 on (finally) extending the Options byte,
> but
> +1 on the alternative since folks object.
> 
> Rodent: Extending Options has been nixed in the past [no opinion]
> Joshua: Options is already overloaded, confusing [a -.5, perhaps?]
> Marc:   Options is depreciated NCSA compatibility cruft
> 
> Phil, I can't find your original patch (sans Options.) I'd suggest the
> directive ETagIdentity flag (on or off, default of on for most platforms, 
> perhaps an IFDEF for win32/os2 to off.)
> 
> Bill
> 
> ----- Original Message ----- 
> From: "Dietz, Phil E." <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, February 26, 2001 3:44 PM
> Subject: [RFC] InodeEtag option
> 
> 
> > OK, I converted my ETag patch to use Options.  Of note:
> > 
> > - the allow_options_t size increased to a long because all 8 bits of
> char
> > were in use.
> > - if InodeEtag is not present in Options, it uses inodes like the
> current
> > behaviour.
> > - the patch below is beta and against version 1.3.17.  Newer ones
> against
> > 1.3.19 to follow.
> > 
> > I will test with Insure later this week.
> > Phil Dietz
> > 
> > Patch Version 1.0:
> > 
> > --- ../apache_1.3.17/src/main/http_protocol.c   Thu Jan 18 07:25:07 2001
> > +++ src/main/http_protocol.c    Mon Feb 26 11:56:23 2001
> > @@ -656,16 +656,30 @@
> >       * we send a weak tag instead of a strong one, since it could
> >       * be modified again later in the second, and the validation
> >       * would be incorrect.
> > +     *
> > +     * The use of the inode is controlled with the InodeEtag Option.
> > +     * Disabling allows browser-side cacheing (304s) to happen more
> often
> > +     * when serving default_handler objects from web farms with > 1
> unit.
> >       */
> >      
> >      weak = ((r->request_time - r->mtime > 1) && !force_weak) ? "" :
> "W/";
> >  
> >      if (r->finfo.st_mode != 0) {
> > -        etag = ap_psprintf(r->pool,
> > +        
> > +       if (ap_allow_options(r) & OPT_INODE_ETAG) {
> > +            etag = ap_psprintf(r->pool,
> >                      "%s\"%lx-%lx-%lx\"", weak,
> >                      (unsigned long) r->finfo.st_ino,
> >                      (unsigned long) r->finfo.st_size,
> >                      (unsigned long) r->mtime);
> > +       } 
> > +       else {
> > +            etag = ap_psprintf(r->pool,
> > +                    "%s\"%lx-%lx\"", weak,
> > +                    (unsigned long) r->finfo.st_size,
> > +                    (unsigned long) r->mtime);
> > +       }
> > +
> >      }
> >      else {
> >          etag = ap_psprintf(r->pool, "%s\"%lx\"", weak,
> > 
> > 
> > --- ../apache_1.3.17/src/main/http_core.c       Mon Jan 15 12:04:57 2001
> > +++ src/main/http_core.c        Mon Feb 26 14:28:40 2001
> > @@ -1298,6 +1298,9 @@
> >         else if (!strcasecmp(w, "RunScripts")) { /* AI backcompat. Yuck
> */
> >             opt = OPT_MULTI|OPT_EXECCGI;
> >         }
> > +       else if (!strcasecmp(w, "InodeEtag")) {
> > +           opt = OPT_INODE_ETAG;
> > +       }
> >         else if (!strcasecmp(w, "None")) {
> >             opt = OPT_NONE;
> >         }
> > 
> > --- ../apache_1.3.17/src/include/http_core.h    Mon Jan 15 12:04:33 2001
> > +++ src/include/http_core.h     Mon Feb 26 14:43:18 2001
> > @@ -84,7 +84,8 @@
> >  #define OPT_INCNOEXEC 32
> >  #define OPT_SYM_OWNER 64
> >  #define OPT_MULTI 128
> > -#define OPT_ALL (OPT_INDEXES|OPT_INCLUDES|OPT_SYM_LINKS|OPT_EXECCGI)
> > +#define OPT_INODE_ETAG 256
> > +#define OPT_ALL
> > (OPT_INDEXES|OPT_INCLUDES|OPT_SYM_LINKS|OPT_EXECCGI|OPT_INODE_ETAG)
> >  
> >  /* options for get_remote_host() */
> >  /* REMOTE_HOST returns the hostname, or NULL if the hostname
> > @@ -178,7 +179,7 @@
> >  
> >  /* Per-directory configuration */
> >  
> > -typedef unsigned char allow_options_t;
> > +typedef unsigned long allow_options_t;
> >  typedef unsigned char overrides_t;
> >  
> >  typedef struct {
> > 
> > 

Reply via email to