You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by mi...@apache.org on 2020/07/03 12:44:54 UTC

svn commit: r1879472 - in /httpd/httpd/trunk: CHANGES docs/manual/developer/new_api_2_6.xml docs/manual/mod/core.xml docs/manual/new_features_2_6.xml include/ap_mmn.h include/http_core.h include/util_md5.h server/core.c server/util_md5.c

Author: minfrin
Date: Fri Jul  3 12:44:53 2020
New Revision: 1879472

URL: http://svn.apache.org/viewvc?rev=1879472&view=rev
Log:
core: Remove support for the Content-MD5 header, removed in RFC7231.
Functions ap_md5digest() and ap_md5contextTo64() removed, and
ContentDigest directive.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/docs/manual/developer/new_api_2_6.xml
    httpd/httpd/trunk/docs/manual/mod/core.xml
    httpd/httpd/trunk/docs/manual/new_features_2_6.xml
    httpd/httpd/trunk/include/ap_mmn.h
    httpd/httpd/trunk/include/http_core.h
    httpd/httpd/trunk/include/util_md5.h
    httpd/httpd/trunk/server/core.c
    httpd/httpd/trunk/server/util_md5.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Fri Jul  3 12:44:53 2020
@@ -1,6 +1,10 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.1
 
+  *) core: Remove support for the Content-MD5 header, removed in RFC7231.
+     Functions ap_md5digest() and ap_md5contextTo64() removed, and
+     ContentDigest directive. [Graham Leggett]
+
   *) mod_dav: Allow other DAV modules to use dav_get_resource().
      [Graham Leggett]
 

Modified: httpd/httpd/trunk/docs/manual/developer/new_api_2_6.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/developer/new_api_2_6.xml?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/docs/manual/developer/new_api_2_6.xml (original)
+++ httpd/httpd/trunk/docs/manual/developer/new_api_2_6.xml Fri Jul  3 12:44:53 2020
@@ -71,8 +71,9 @@
     <title>If your module uses these existing APIs...</title>
 
     <dl>
-      <dt><code>ap_fillmein()</code></dt>
-      <dd>This is no longer available;</dd>
+      <dt><code>ap_md5digest()</code> / <code>ap_md5contextTo64</code></dt>
+      <dd>These functions are no longer available. Use the equivalent functions
+          from APR if needed.</dd>
 
     </dl>
   </section>

Modified: httpd/httpd/trunk/docs/manual/mod/core.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/core.xml?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/docs/manual/mod/core.xml (original)
+++ httpd/httpd/trunk/docs/manual/mod/core.xml Fri Jul  3 12:44:53 2020
@@ -669,48 +669,6 @@ variables</description>
 </directivesynopsis>
 
 <directivesynopsis>
-<name>ContentDigest</name>
-<description>Enables the generation of <code>Content-MD5</code> HTTP Response
-headers</description>
-<syntax>ContentDigest On|Off</syntax>
-<default>ContentDigest Off</default>
-<contextlist><context>server config</context><context>virtual host</context>
-<context>directory</context><context>.htaccess</context>
-</contextlist>
-<override>Options</override>
-<status>Experimental</status>
-
-<usage>
-    <p>This directive enables the generation of
-    <code>Content-MD5</code> headers as defined in RFC1864
-    respectively RFC2616.</p>
-
-    <p>MD5 is an algorithm for computing a "message digest"
-    (sometimes called "fingerprint") of arbitrary-length data, with
-    a high degree of confidence that any alterations in the data
-    will be reflected in alterations in the message digest.</p>
-
-    <p>The <code>Content-MD5</code> header provides an end-to-end
-    message integrity check (MIC) of the entity-body. A proxy or
-    client may check this header for detecting accidental
-    modification of the entity-body in transit. Example header:</p>
-
-    <example>
-      Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
-    </example>
-
-    <p>Note that this can cause performance problems on your server
-    since the message digest is computed on every request (the
-    values are not cached).</p>
-
-    <p><code>Content-MD5</code> is only sent for documents served
-    by the <module>core</module>, and not by any module. For example,
-    SSI documents, output from CGI scripts, and byte range responses
-    do not have this header.</p>
-</usage>
-</directivesynopsis>
-
-<directivesynopsis>
 <name>DefaultRuntimeDir</name>
 <description>Base directory for the server run-time files</description>
 <syntax>DefaultRuntimeDir <var>directory-path</var></syntax>

Modified: httpd/httpd/trunk/docs/manual/new_features_2_6.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/new_features_2_6.xml?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/docs/manual/new_features_2_6.xml (original)
+++ httpd/httpd/trunk/docs/manual/new_features_2_6.xml Fri Jul  3 12:44:53 2020
@@ -34,8 +34,13 @@
   <section id="core">
     <title>Core Enhancements</title>
     <dl>
-      <dt>Fill me in</dt>
-      <dd></dd>
+      <dt>ContentDigest directive and Content-MD5 header</dt>
+      <dd>The <code>ContentDigest</code> directive and support for the the
+          <code>Content-MD5</code> header has been removed from the server,
+          corresponding with the removal of this header from
+          <a href="https://tools.ietf.org/html/rfc7231#appendix-B">
+          RFC7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and
+          Content.</a></dd>
 
     </dl>
   </section>

Modified: httpd/httpd/trunk/include/ap_mmn.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/ap_mmn.h?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/include/ap_mmn.h (original)
+++ httpd/httpd/trunk/include/ap_mmn.h Fri Jul  3 12:44:53 2020
@@ -651,6 +651,8 @@
  * 20200702.1 (2.5.1-dev)  Add pool arg to mpm_register_poll_callback and
  *                         mpm_register_poll_callback_timeout hooks
  * 20200702.2 (2.5.1-dev)  Add dav_get_resource().
+ * 20200703.0 (2.5.1-dev)  Remove ap_md5digest(), ap_md5contextTo64(),
+ *                         ContentDigest directive.
  */
 
 #define MODULE_MAGIC_COOKIE 0x41503235UL /* "AP25" */

Modified: httpd/httpd/trunk/include/http_core.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/http_core.h?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/include/http_core.h (original)
+++ httpd/httpd/trunk/include/http_core.h Fri Jul  3 12:44:53 2020
@@ -553,8 +553,6 @@ typedef struct {
 #define HOSTNAME_LOOKUP_UNSET   3
     unsigned int hostname_lookups : 4;
 
-    unsigned int content_md5 : 2;  /* calculate Content-MD5? */
-
 #define USE_CANONICAL_NAME_OFF   (0)
 #define USE_CANONICAL_NAME_ON    (1)
 #define USE_CANONICAL_NAME_DNS   (2)

Modified: httpd/httpd/trunk/include/util_md5.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/util_md5.h?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/include/util_md5.h (original)
+++ httpd/httpd/trunk/include/util_md5.h Fri Jul  3 12:44:53 2020
@@ -49,21 +49,6 @@ AP_DECLARE(char *) ap_md5(apr_pool_t *a,
  */
 AP_DECLARE(char *) ap_md5_binary(apr_pool_t *a, const unsigned char *buf, int len);
 
-/**
- * Convert an MD5 checksum into a base64 encoding.
- * @param   p       The pool to allocate out of
- * @param   context The context to convert
- * @return The converted encoding
- */
-AP_DECLARE(char *) ap_md5contextTo64(apr_pool_t *p, apr_md5_ctx_t *context);
-
-/**
- * Create an MD5 Digest for a given file.
- * @param   p       The pool to allocate out of
- * @param   infile  The file to create the digest for
- */
-AP_DECLARE(char *) ap_md5digest(apr_pool_t *p, apr_file_t *infile);
-
 #ifdef __cplusplus
 }
 #endif

Modified: httpd/httpd/trunk/server/core.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/core.c?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/server/core.c (original)
+++ httpd/httpd/trunk/server/core.c Fri Jul  3 12:44:53 2020
@@ -41,7 +41,6 @@
 #include "http_vhost.h"
 #include "http_main.h"     /* For the default_handler below... */
 #include "http_log.h"
-#include "util_md5.h"
 #include "http_connection.h"
 #include "apr_buckets.h"
 #include "util_filter.h"
@@ -84,10 +83,6 @@
 /* valid in core-conf, but not in runtime r->used_path_info */
 #define AP_ACCEPT_PATHINFO_UNSET 3
 
-#define AP_CONTENT_MD5_OFF   0
-#define AP_CONTENT_MD5_ON    1
-#define AP_CONTENT_MD5_UNSET 2
-
 #define AP_FLUSH_MAX_THRESHOLD 65536
 #define AP_FLUSH_MAX_PIPELINED 5
 
@@ -159,7 +154,6 @@ static void *create_core_dir_config(apr_
     conf->override = OR_UNSET|OR_NONE;
     conf->override_opts = OPT_UNSET | OPT_ALL | OPT_SYM_OWNER | OPT_MULTI;
 
-    conf->content_md5 = AP_CONTENT_MD5_UNSET;
     conf->accept_path_info = AP_ACCEPT_PATHINFO_UNSET;
 
     conf->use_canonical_name = USE_CANONICAL_NAME_UNSET;
@@ -286,10 +280,6 @@ static void *merge_core_dir_configs(apr_
         conf->hostname_lookups = new->hostname_lookups;
     }
 
-    if (new->content_md5 != AP_CONTENT_MD5_UNSET) {
-        conf->content_md5 = new->content_md5;
-    }
-
     if (new->accept_path_info != AP_ACCEPT_PATHINFO_UNSET) {
         conf->accept_path_info = new->accept_path_info;
     }
@@ -3394,14 +3384,6 @@ static const char *set_serverpath(cmd_pa
     return NULL;
 }
 
-static const char *set_content_md5(cmd_parms *cmd, void *d_, int arg)
-{
-    core_dir_config *d = d_;
-
-    d->content_md5 = arg ? AP_CONTENT_MD5_ON : AP_CONTENT_MD5_OFF;
-    return NULL;
-}
-
 static const char *set_accept_path_info(cmd_parms *cmd, void *d_, const char *arg)
 {
     core_dir_config *d = d_;
@@ -4784,8 +4766,6 @@ AP_INIT_TAKE1("ServerPath", set_serverpa
   "The pathname the server can be reached at"),
 AP_INIT_TAKE1("Timeout", set_timeout, NULL, RSRC_CONF,
   "Timeout duration (sec)"),
-AP_INIT_FLAG("ContentDigest", set_content_md5, NULL, OR_OPTIONS,
-  "whether or not to send a Content-MD5 header with each request"),
 AP_INIT_TAKE1("UseCanonicalName", set_use_canonical_name, NULL,
   RSRC_CONF|ACCESS_CONF,
   "How to work out the ServerName : Port when constructing URLs"),
@@ -5099,18 +5079,8 @@ static int default_handler(request_rec *
     int errstatus;
     apr_file_t *fd = NULL;
     apr_status_t status;
-    /* XXX if/when somebody writes a content-md5 filter we either need to
-     *     remove this support or coordinate when to use the filter vs.
-     *     when to use this code
-     *     The current choice of when to compute the md5 here matches the 1.3
-     *     support fairly closely (unlike 1.3, we don't handle computing md5
-     *     when the charset is translated).
-     */
-    int bld_content_md5;
 
     d = (core_dir_config *)ap_get_core_module_config(r->per_dir_config);
-    bld_content_md5 = (d->content_md5 == AP_CONTENT_MD5_ON)
-                      && r->output_filters->frec->ftype != AP_FTYPE_RESOURCE;
 
     ap_allow_standard_methods(r, MERGE_ALLOW, M_GET, M_OPTIONS, M_POST, -1);
 
@@ -5187,10 +5157,6 @@ static int default_handler(request_rec *
         ap_set_etag_fd(r, fd);
         ap_set_accept_ranges(r);
         ap_set_content_length(r, r->finfo.size);
-        if (bld_content_md5) {
-            apr_table_setn(r->headers_out, "Content-MD5",
-                           ap_md5digest(r->pool, fd));
-        }
 
         bb = apr_brigade_create(r->pool, c->bucket_alloc);
 

Modified: httpd/httpd/trunk/server/util_md5.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util_md5.c?rev=1879472&r1=1879471&r2=1879472&view=diff
==============================================================================
--- httpd/httpd/trunk/server/util_md5.c (original)
+++ httpd/httpd/trunk/server/util_md5.c Fri Jul  3 12:44:53 2020
@@ -76,91 +76,3 @@ AP_DECLARE(char *) ap_md5(apr_pool_t *p,
 {
     return ap_md5_binary(p, string, (int) strlen((char *)string));
 }
-
-/* these portions extracted from mpack, John G. Myers - jgm+@cmu.edu */
-
-/* (C) Copyright 1993,1994 by Carnegie Mellon University
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, distribute, and sell this software
- * and its documentation for any purpose is hereby granted without
- * fee, provided that the above copyright notice appear in all copies
- * and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of Carnegie
- * Mellon University not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission.  Carnegie Mellon University makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided "as is" without express or implied
- * warranty.
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-/*
- * Copyright (c) 1991 Bell Communications Research, Inc. (Bellcore)
- *
- * Permission to use, copy, modify, and distribute this material
- * for any purpose and without fee is hereby granted, provided
- * that the above copyright notice and this permission notice
- * appear in all copies, and that the name of Bellcore not be
- * used in advertising or publicity pertaining to this
- * material without the specific, prior written permission
- * of an authorized representative of Bellcore.  BELLCORE
- * MAKES NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY
- * OF THIS MATERIAL FOR ANY PURPOSE.  IT IS PROVIDED "AS IS",
- * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
- */
-
-static char basis_64[] =
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-AP_DECLARE(char *) ap_md5contextTo64(apr_pool_t *a, apr_md5_ctx_t *context)
-{
-    unsigned char digest[18];
-    char *encodedDigest;
-    int i;
-    char *p;
-
-    encodedDigest = (char *) apr_pcalloc(a, 25 * sizeof(char));
-
-    apr_md5_final(digest, context);
-    digest[sizeof(digest) - 1] = digest[sizeof(digest) - 2] = 0;
-
-    p = encodedDigest;
-    for (i = 0; i < sizeof(digest); i += 3) {
-        *p++ = basis_64[digest[i] >> 2];
-        *p++ = basis_64[((digest[i] & 0x3) << 4) | ((int) (digest[i + 1] & 0xF0) >> 4)];
-        *p++ = basis_64[((digest[i + 1] & 0xF) << 2) | ((int) (digest[i + 2] & 0xC0) >> 6)];
-        *p++ = basis_64[digest[i + 2] & 0x3F];
-    }
-    *p-- = '\0';
-    *p-- = '=';
-    *p-- = '=';
-    return encodedDigest;
-}
-
-AP_DECLARE(char *) ap_md5digest(apr_pool_t *p, apr_file_t *infile)
-{
-    apr_md5_ctx_t context;
-    unsigned char buf[4096]; /* keep this a multiple of 64 */
-    apr_size_t nbytes;
-    apr_off_t offset = 0L;
-
-    apr_md5_init(&context);
-    nbytes = sizeof(buf);
-    while (apr_file_read(infile, buf, &nbytes) == APR_SUCCESS) {
-        apr_md5_update(&context, buf, nbytes);
-        nbytes = sizeof(buf);
-    }
-    apr_file_seek(infile, APR_SET, &offset);
-    return ap_md5contextTo64(p, &context);
-}
-