Skip to content

Commit

Permalink
Revert mis-commit 1541372
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1541373 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
William A. Rowe Jr committed Nov 13, 2013
1 parent 5518607 commit 1226f1b
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 50 deletions.
3 changes: 0 additions & 3 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

Changes with Apache 2.4.7

*) core: draft-ietf-httpbis-p1-messaging-23 corrections regarding
TE/CL conflicts. [Yann Ylavic <ylavic.dev gmail com>, Jim Jagielski]

*) mod_authn_socache: Support optional initialization arguments for
socache providers. [Chris Darroch]

Expand Down
2 changes: 1 addition & 1 deletion STATUS
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK:
https://svn.apache.org/viewvc?view=revision&revision=1541270
https://svn.apache.org/viewvc?view=revision&revision=1541368
2.4.x patch (plus CHANGES entry above):
http://people.apache.org/~wrowe/httpd-2.4-r1524192-r1524770-TE-CL-v2.patch
http://people.apache.org/~wrowe/httpd-2.4-r1524192-r1524770-TE-CL.patch
+1:
[wrowe asks] Where is verification of (!keepalive)? Do we know the
connection will be closed anytime in the near future?
Expand Down
28 changes: 12 additions & 16 deletions modules/http/http_filters.c
Original file line number Diff line number Diff line change
Expand Up @@ -259,29 +259,25 @@ apr_status_t ap_http_filter(ap_filter_t *f, apr_bucket_brigade *b,
lenp = apr_table_get(f->r->headers_in, "Content-Length");

if (tenc) {
if (strcasecmp(tenc, "chunked") == 0 /* fast path */
|| ap_find_last_token(f->r->pool, tenc, "chunked")) {
if (!strcasecmp(tenc, "chunked")) {
ctx->state = BODY_CHUNK;
}
else if (f->r->proxyreq == PROXYREQ_RESPONSE) {
/* http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-23
* Section 3.3.3.3: "If a Transfer-Encoding header field is
* present in a response and the chunked transfer coding is not
* the final encoding, the message body length is determined by
* reading the connection until it is closed by the server."
/* test lenp, because it gives another case we can handle */
else if (!lenp) {
/* Something that isn't in HTTP, unless some future
* edition defines new transfer encodings, is unsupported.
*/
ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, f->r, APLOGNO(01586)
"Unknown Transfer-Encoding: %s;"
" using read-until-close", tenc);
tenc = NULL;
}
else {
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, f->r, APLOGNO(01585)
ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, f->r, APLOGNO(01585)
"Unknown Transfer-Encoding: %s", tenc);
return bail_out_on_error(ctx, f, HTTP_NOT_IMPLEMENTED);
}
else {
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, f->r, APLOGNO(01586)
"Unknown Transfer-Encoding: %s; using Content-Length", tenc);
tenc = NULL;
}
}
if (lenp) {
if (lenp && !tenc) {
char *endstr;

ctx->state = BODY_LENGTH;
Expand Down
36 changes: 6 additions & 30 deletions server/protocol.c
Original file line number Diff line number Diff line change
Expand Up @@ -997,8 +997,6 @@ request_rec *ap_read_request(conn_rec *conn)
}

if (!r->assbackwards) {
const char *tenc;

ap_get_mime_headers_core(r, tmp_bb);
if (r->status != HTTP_OK) {
ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, APLOGNO(00567)
Expand All @@ -1010,34 +1008,12 @@ request_rec *ap_read_request(conn_rec *conn)
goto traceout;
}

tenc = apr_table_get(r->headers_in, "Transfer-Encoding");
if (tenc) {
/* http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-23
* Section 3.3.3.3: "If a Transfer-Encoding header field is
* present in a request and the chunked transfer coding is not
* the final encoding ...; the server MUST respond with the 400
* (Bad Request) status code and then close the connection".
*/
if (!(strcasecmp(tenc, "chunked") == 0 /* fast path */
|| ap_find_last_token(r->pool, tenc, "chunked"))) {
ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, APLOGNO(02539)
"client sent unknown Transfer-Encoding "
"(%s): %s", tenc, r->uri);
r->status = HTTP_BAD_REQUEST;
conn->keepalive = AP_CONN_CLOSE;
ap_send_error_response(r, 0);
ap_update_child_status(conn->sbh, SERVER_BUSY_LOG, r);
ap_run_log_transaction(r);
apr_brigade_destroy(tmp_bb);
goto traceout;
}

/* http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-23
* Section 3.3.3.3: "If a message is received with both a
* Transfer-Encoding and a Content-Length header field, the
* Transfer-Encoding overrides the Content-Length. ... A sender
* MUST remove the received Content-Length field".
*/
if (apr_table_get(r->headers_in, "Transfer-Encoding")
&& apr_table_get(r->headers_in, "Content-Length")) {
/* 2616 section 4.4, point 3: "if both Transfer-Encoding
* and Content-Length are received, the latter MUST be
* ignored"; so unset it here to prevent any confusion
* later. */
apr_table_unset(r->headers_in, "Content-Length");
}
}
Expand Down

0 comments on commit 1226f1b

Please sign in to comment.