diff --git a/include/util_script.h b/include/util_script.h
index 0557c7f..3566bd3 100644
--- a/include/util_script.h
+++ b/include/util_script.h
@@ -225,8 +225,6 @@
  */
 AP_DECLARE(void) ap_args_to_table(request_rec *r, apr_table_t **table);
 
-#define AP_TRUST_CGILIKE_CL_ENVVAR "ap_trust_cgilike_cl"
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/modules/aaa/mod_authnz_fcgi.c b/modules/aaa/mod_authnz_fcgi.c
index 69743f1..1aadcc2 100644
--- a/modules/aaa/mod_authnz_fcgi.c
+++ b/modules/aaa/mod_authnz_fcgi.c
@@ -571,14 +571,6 @@
                                       "parsing -> %d/%d",
                                       fn, status, r->status);
 
-                        /* FCGI has its own body framing mechanism which we don't
-                         * match against any provided Content-Length, so let the
-                         * core determine C-L vs T-E based on what's actually sent.
-                         */
-                        if (!apr_table_get(r->subprocess_env, AP_TRUST_CGILIKE_CL_ENVVAR))
-                            apr_table_unset(r->headers_out, "Content-Length");
-                        apr_table_unset(r->headers_out, "Transfer-Encoding");
-
                         if (rspbuf) { /* caller wants to see response body,
                                        * if any
                                        */
diff --git a/modules/generators/mod_cgi.c b/modules/generators/mod_cgi.c
index 96bb883..7e4b126 100644
--- a/modules/generators/mod_cgi.c
+++ b/modules/generators/mod_cgi.c
@@ -935,18 +935,9 @@
         char sbuf[MAX_STRING_LEN];
         int ret;
 
-        ret = ap_scan_script_header_err_brigade_ex(r, bb, sbuf,
-                                                   APLOG_MODULE_INDEX);
-
-        /* xCGI has its own body framing mechanism which we don't
-         * match against any provided Content-Length, so let the
-         * core determine C-L vs T-E based on what's actually sent.
-         */
-        if (!apr_table_get(r->subprocess_env, AP_TRUST_CGILIKE_CL_ENVVAR))
-            apr_table_unset(r->headers_out, "Content-Length");
-        apr_table_unset(r->headers_out, "Transfer-Encoding");
-
-        if (ret != OK) {
+        if ((ret = ap_scan_script_header_err_brigade_ex(r, bb, sbuf,
+                                                        APLOG_MODULE_INDEX)))
+        {
             ret = log_script(r, conf, ret, dbuf, sbuf, bb, script_err);
 
             /*
diff --git a/modules/generators/mod_cgid.c b/modules/generators/mod_cgid.c
index 4bab59f..2258a68 100644
--- a/modules/generators/mod_cgid.c
+++ b/modules/generators/mod_cgid.c
@@ -1616,18 +1616,9 @@
         b = apr_bucket_eos_create(c->bucket_alloc);
         APR_BRIGADE_INSERT_TAIL(bb, b);
 
-        ret = ap_scan_script_header_err_brigade_ex(r, bb, sbuf,
-                                                   APLOG_MODULE_INDEX);
-
-        /* xCGI has its own body framing mechanism which we don't
-         * match against any provided Content-Length, so let the
-         * core determine C-L vs T-E based on what's actually sent.
-         */
-        if (!apr_table_get(r->subprocess_env, AP_TRUST_CGILIKE_CL_ENVVAR))
-            apr_table_unset(r->headers_out, "Content-Length");
-        apr_table_unset(r->headers_out, "Transfer-Encoding");
-
-        if (ret != OK) {
+        if ((ret = ap_scan_script_header_err_brigade_ex(r, bb, sbuf,
+                                                        APLOG_MODULE_INDEX)))
+        {
             ret = log_script(r, conf, ret, dbuf, sbuf, bb, NULL);
 
             /*
diff --git a/modules/http/http_filters.c b/modules/http/http_filters.c
index f20aee7..1a8df34 100644
--- a/modules/http/http_filters.c
+++ b/modules/http/http_filters.c
@@ -778,18 +778,6 @@
     struct check_header_ctx ctx;
     core_server_config *conf =
             ap_get_core_module_config(r->server->module_config);
-    const char *val;
- 
-    if ((val = apr_table_get(r->headers_out, "Transfer-Encoding"))) {
-        if (apr_table_get(r->headers_out, "Content-Length")) {
-            apr_table_unset(r->headers_out, "Content-Length");
-            r->connection->keepalive = AP_CONN_CLOSE;
-        }
-        if (!ap_is_chunked(r->pool, val)) {
-            r->connection->keepalive = AP_CONN_CLOSE;
-            return 0;
-        }
-    }
 
     ctx.r = r;
     ctx.strict = (conf->http_conformance != AP_HTTP_CONFORMANCE_UNSAFE);
@@ -1365,9 +1353,6 @@
          */
         apr_table_clear(r->headers_out);
         apr_table_clear(r->err_headers_out);
-        r->content_type = r->content_encoding = NULL;
-        r->content_languages = NULL;
-        r->clength = r->chunked = 0;
         apr_brigade_cleanup(b);
 
         /* Don't recall ap_die() if we come back here (from its own internal
@@ -1384,6 +1369,8 @@
         APR_BRIGADE_INSERT_TAIL(b, e);
         e = apr_bucket_eos_create(c->bucket_alloc);
         APR_BRIGADE_INSERT_TAIL(b, e);
+        r->content_type = r->content_encoding = NULL;
+        r->content_languages = NULL;
         ap_set_content_length(r, 0);
         recursive_error = 1;
     }
@@ -1410,7 +1397,6 @@
     if (!apr_is_empty_table(r->err_headers_out)) {
         r->headers_out = apr_table_overlay(r->pool, r->err_headers_out,
                                            r->headers_out);
-        apr_table_clear(r->err_headers_out);
     }
 
     /*
@@ -1430,17 +1416,6 @@
         fixup_vary(r);
     }
 
-
-    /*
-     * Control cachability for non-cacheable responses if not already set by
-     * some other part of the server configuration.
-     */
-    if (r->no_cache && !apr_table_get(r->headers_out, "Expires")) {
-        char *date = apr_palloc(r->pool, APR_RFC822_DATE_LEN);
-        ap_recent_rfc822_date(date, r->request_time);
-        apr_table_addn(r->headers_out, "Expires", date);
-    }
-
     /*
      * Now remove any ETag response header field if earlier processing
      * says so (such as a 'FileETag None' directive).
@@ -1453,7 +1428,6 @@
     basic_http_header_check(r, &protocol);
     ap_set_keepalive(r);
 
-    /* 204/304 responses don't have content related headers */
     if (AP_STATUS_IS_HEADER_ONLY(r->status)) {
         apr_table_unset(r->headers_out, "Transfer-Encoding");
         apr_table_unset(r->headers_out, "Content-Length");
@@ -1496,6 +1470,16 @@
         apr_table_setn(r->headers_out, "Content-Language", field);
     }
 
+    /*
+     * Control cachability for non-cacheable responses if not already set by
+     * some other part of the server configuration.
+     */
+    if (r->no_cache && !apr_table_get(r->headers_out, "Expires")) {
+        char *date = apr_palloc(r->pool, APR_RFC822_DATE_LEN);
+        ap_recent_rfc822_date(date, r->request_time);
+        apr_table_addn(r->headers_out, "Expires", date);
+    }
+
     /* This is a hack, but I can't find anyway around it.  The idea is that
      * we don't want to send out 0 Content-Lengths if it is a head request.
      * This happens when modules try to outsmart the server, and return
diff --git a/modules/http2/h2_session.c b/modules/http2/h2_session.c
index da83606..7ba49cf 100644
--- a/modules/http2/h2_session.c
+++ b/modules/http2/h2_session.c
@@ -319,13 +319,9 @@
     
     status = h2_stream_add_header(stream, (const char *)name, namelen,
                                   (const char *)value, valuelen);
-    if (status != APR_SUCCESS &&
-        (!stream->rtmp ||
-         stream->rtmp->http_status == H2_HTTP_STATUS_UNSET ||
-         /* We accept a certain amount of failures in order to reply
-          * with an informative HTTP error response like 413. But if the
-          * client is too wrong, we fail the request a RESET of the stream */
-         stream->request_headers_failed > 100)) {
+    if (status != APR_SUCCESS
+        && (!stream->rtmp
+            || stream->rtmp->http_status == H2_HTTP_STATUS_UNSET)) {
         return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
     }
     return 0;
diff --git a/modules/http2/h2_stream.c b/modules/http2/h2_stream.c
index 0390967..cf6f798 100644
--- a/modules/http2/h2_stream.c
+++ b/modules/http2/h2_stream.c
@@ -759,7 +759,6 @@
     
 cleanup:
     if (error) {
-        ++stream->request_headers_failed;
         set_error_response(stream, error);
         return APR_EINVAL; 
     }
diff --git a/modules/http2/h2_stream.h b/modules/http2/h2_stream.h
index de704a0..695d56a 100644
--- a/modules/http2/h2_stream.h
+++ b/modules/http2/h2_stream.h
@@ -76,7 +76,6 @@
     struct h2_request *rtmp;    /* request being assembled */
     apr_table_t *trailers_in;   /* optional, incoming trailers */
     int request_headers_added;  /* number of request headers added */
-    int request_headers_failed; /* number of request headers failed to add */
 
 #if AP_HAS_RESPONSE_BUCKETS
     ap_bucket_response *response; /* the final, non-interim response or NULL */
diff --git a/modules/proxy/ajp_header.c b/modules/proxy/ajp_header.c
index 687da80..b4dc47c 100644
--- a/modules/proxy/ajp_header.c
+++ b/modules/proxy/ajp_header.c
@@ -17,8 +17,6 @@
 #include "ajp_header.h"
 #include "ajp.h"
 
-#include "util_script.h"
-
 APLOG_USE_MODULE(proxy_ajp);
 
 static const char *response_trans_headers[] = {
@@ -664,14 +662,6 @@
         }
     }
 
-    /* AJP has its own body framing mechanism which we don't
-     * match against any provided Content-Length, so let the
-     * core determine C-L vs T-E based on what's actually sent.
-     */
-    if (!apr_table_get(r->subprocess_env, AP_TRUST_CGILIKE_CL_ENVVAR))
-        apr_table_unset(r->headers_out, "Content-Length");
-    apr_table_unset(r->headers_out, "Transfer-Encoding");
-
     return APR_SUCCESS;
 }
 
diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c
index d8e7759..3382b9b 100644
--- a/modules/proxy/mod_proxy_fcgi.c
+++ b/modules/proxy/mod_proxy_fcgi.c
@@ -764,15 +764,6 @@
 
                             status = ap_scan_script_header_err_brigade_ex(r, ob,
                                 NULL, APLOG_MODULE_INDEX);
-
-                            /* FCGI has its own body framing mechanism which we don't
-                             * match against any provided Content-Length, so let the
-                             * core determine C-L vs T-E based on what's actually sent.
-                             */
-                            if (!apr_table_get(r->subprocess_env, AP_TRUST_CGILIKE_CL_ENVVAR))
-                                apr_table_unset(r->headers_out, "Content-Length");
-                            apr_table_unset(r->headers_out, "Transfer-Encoding");
-
                             /* suck in all the rest */
                             if (status != OK) {
                                 apr_bucket *tmp_b;
diff --git a/modules/proxy/mod_proxy_scgi.c b/modules/proxy/mod_proxy_scgi.c
index 393d58f..493757d 100644
--- a/modules/proxy/mod_proxy_scgi.c
+++ b/modules/proxy/mod_proxy_scgi.c
@@ -388,14 +388,6 @@
         return status;
     }
 
-    /* SCGI has its own body framing mechanism which we don't
-     * match against any provided Content-Length, so let the
-     * core determine C-L vs T-E based on what's actually sent.
-     */
-    if (!apr_table_get(r->subprocess_env, AP_TRUST_CGILIKE_CL_ENVVAR))
-        apr_table_unset(r->headers_out, "Content-Length");
-    apr_table_unset(r->headers_out, "Transfer-Encoding");
-
     conf = ap_get_module_config(r->per_dir_config, &proxy_scgi_module);
     if (conf->sendfile && conf->sendfile != scgi_sendfile_off) {
         short err = 1;
diff --git a/modules/proxy/mod_proxy_uwsgi.c b/modules/proxy/mod_proxy_uwsgi.c
index d4d3e17..e02450e 100644
--- a/modules/proxy/mod_proxy_uwsgi.c
+++ b/modules/proxy/mod_proxy_uwsgi.c
@@ -364,12 +364,6 @@
         apr_table_add(r->headers_out, buffer, value);
     }
 
-    /* T-E wins over C-L */
-    if (apr_table_get(r->headers_out, "Transfer-Encoding")) {
-        apr_table_unset(r->headers_out, "Content-Length");
-        backend->close = 1;
-    }
-
     if ((buf = apr_table_get(r->headers_out, "Content-Type"))) {
         ap_set_content_type(r, apr_pstrdup(r->pool, buf));
     }
