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);
-}
-