dgaudet     98/02/11 17:09:47

  Modified:    src      CHANGES
               src/modules/standard mod_autoindex.c mod_mime.c
                        mod_negotiation.c
  Log:
  Old clients really don't want to see "Content-Encoding: gzip".  So now we
  preserve the encoding given by the AddEncoding directive.  This allows us,
  for example, to move forward with things like "AddEncoding deflate .df",
  while preserving backwards brokenness with "AddEncoding x-gzip .gz".
  
  Submitted by: [EMAIL PROTECTED]
  Reviewed by:  Dean Gaudet
  
  Revision  Changes    Path
  1.626     +4 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.625
  retrieving revision 1.626
  diff -u -r1.625 -r1.626
  --- CHANGES   1998/02/09 13:25:40     1.625
  +++ CHANGES   1998/02/12 01:09:41     1.626
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b5
   
  +  *) Preserve the content encoding given by the AddEncoding directive
  +     when the client doesn't otherwise specify an encoding.
  +     [Ronald Tschalaer <[EMAIL PROTECTED]>]
  +
     *) WIN32: Append a '.' to extensionless executables in spawn[lv]e*
        replacements, which makes them work.
        [Sam Robb <[EMAIL PROTECTED]>, Ben Laurie]
  
  
  
  1.67      +0 -6      apache-1.3/src/modules/standard/mod_autoindex.c
  
  Index: mod_autoindex.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_autoindex.c,v
  retrieving revision 1.66
  retrieving revision 1.67
  diff -u -r1.66 -r1.67
  --- mod_autoindex.c   1998/02/06 09:11:39     1.66
  +++ mod_autoindex.c   1998/02/12 01:09:44     1.67
  @@ -178,9 +178,6 @@
            to = "^^DIRECTORY^^";
       if (cmd->info == BY_ENCODING) {
        str_tolower(to);
  -     if (to[0] == 'x' && to[1] == '-') {
  -         to += 2;
  -     }
       }
   
       push_item(((autoindex_config_rec *) d)->alt_list, cmd->info, to, 
cmd->path, alt);
  @@ -207,9 +204,6 @@
            to = "^^DIRECTORY^^";
       if (cmd->info == BY_ENCODING) {
        str_tolower(to);
  -     if (to[0] == 'x' && to[1] == '-') {
  -         to += 2;
  -     }
       }
   
       push_item(((autoindex_config_rec *) d)->icon_list, cmd->info, to, 
cmd->path,
  
  
  
  1.31      +0 -2      apache-1.3/src/modules/standard/mod_mime.c
  
  Index: mod_mime.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_mime.c,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- mod_mime.c        1998/02/06 09:11:39     1.30
  +++ mod_mime.c        1998/02/12 01:09:44     1.31
  @@ -127,8 +127,6 @@
   {
       if (*ext == '.')
           ++ext;
  -    if ((enc[0] == 'x' || enc[0] == 'X') && enc[1] == '-')
  -        enc += 2;
       table_set(m->encoding_types, ext, enc);
       return NULL;
   }
  
  
  
  1.70      +16 -6     apache-1.3/src/modules/standard/mod_negotiation.c
  
  Index: mod_negotiation.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_negotiation.c,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- mod_negotiation.c 1998/02/10 05:54:02     1.69
  +++ mod_negotiation.c 1998/02/12 01:09:45     1.70
  @@ -1463,6 +1463,7 @@
       int i;
       accept_rec *accept_recs = (accept_rec *) neg->accept_encodings->elts;
       char *enc = variant->content_encoding;
  +    char *x_enc = NULL;
   
       if (!enc || is_identity_encoding(enc)) {
           return;
  @@ -1479,19 +1480,28 @@
   
       /* Go through each of the encodings on the Accept-Encoding: header,
        * looking for a match with our encoding
  -     */
  +     * Prefer non- 'x-' prefixed token (e.g. gzip over x-gzip) */
  +    if (enc[0] == 'x' && enc[1] == '-') {
  +        enc += 2;
  +    }
       for (i = 0; i < neg->accept_encodings->nelts; ++i) {
           char *name = accept_recs[i].type_name;
  -        int off = 0;
  -
  -     if (name[0] == 'x' && name[1] == '-')
  -            off = 2;
   
  -        if (!strcmp(name+off, enc)) {
  +        if (!strcmp(name, enc)) {
               variant->encoding_quality = 1;
               variant->content_encoding = name;
               return;
           }
  +
  +        if (name[0] == 'x' && name[1] == '-' && !strcmp(name+2, enc)) {
  +            x_enc = name;
  +        }
  +    }
  +
  +    if (x_enc != NULL) {
  +        variant->encoding_quality = 1;
  +        variant->content_encoding = x_enc;
  +        return;
       }
   
       /* Encoding not found on Accept-Encoding: header, so it is
  
  
  

Reply via email to