that we asked for to leak to the client should the 304 response be
uncacheable. PR45341 [Graham Leggett]
- *) mod_dav: Send 501 error if unknown Content-* header is received for a PUT
- request (RFC 2616 9.6). PR 42978. [Stefan Fritsch]
-
*) mod_dav: Send 400 error if malformed Content-Range header is received for
a put request (RFC 2616 14.16). PR 49825. [Stefan Fritsch]
PATCHES/ISSUES THAT ARE STALLED
+ * mod_dav: If an unknown Content-* header is received for a PUT request, we
+ must not ignore it but reply with 501 per RFC 2616 9.6.
+ PR: 42978
+ Trunk version of patch:
+ http://svn.apache.org/viewvc?rev=1026746&view=rev
+ Backport version for 2.2.x of patch:
+ Trunk version of patch works
+ +1: rpluem, covener, poirier
+ -1: roy:
+
+This requirement will
+be (or has already been) removed from httpbis because it hinders
+extensibility and breaks content management systems, just as the
+change below causes content-language to be broken. That is why
+we never implemented this requirement when it was added (without
+consensus) to RFC 2616.
+
* core: Support wildcards in both the directory and file components of
the path specified by the Include directive.
Trunk patch: http://svn.apache.org/viewvc?rev=909878&view=rev
return 1;
}
-static const char *dav_validate_content_headers(request_rec *r)
-{
- int i, prefix_len = strlen("content-");
- const apr_array_header_t *arr = apr_table_elts(r->headers_in);
- const apr_table_entry_t *elts = (const apr_table_entry_t *)arr->elts;
-
- for (i = 0; i < arr->nelts; ++i) {
- if (elts[i].key == NULL)
- continue;
- if (strncasecmp(elts[i].key, "content-", prefix_len) == 0
- && strcasecmp(elts[i].key + prefix_len, "length") != 0
- && strcasecmp(elts[i].key + prefix_len, "range") != 0
- /* Content-Location may be ignored per RFC 2616 14.14 */
- && strcasecmp(elts[i].key + prefix_len, "location") != 0
- && strcasecmp(elts[i].key + prefix_len, "type") != 0)
- {
- /* XXX: content-md5? content-language? content-encoding? */
- return apr_psprintf(r->pool, "Support for %s is not implemented.",
- ap_escape_html(r->pool, elts[i].key));
- }
- }
- return NULL;
-}
-
/* handle the GET method */
static int dav_method_get(request_rec *r)
{
mode = DAV_MODE_WRITE_TRUNC;
}
- if ((body = dav_validate_content_headers(r)) != NULL) {
- /* RFC 2616 9.6: We must not ignore any Content-* headers we do not
- * understand.
- * XXX: Relax this for HTTP 1.0 requests?
- */
- return dav_error_response(r, HTTP_NOT_IMPLEMENTED, body);
- }
-
/* make sure the resource can be modified (if versioning repository) */
if ((err = dav_auto_checkout(r, resource,
0 /* not parent_only */,