File apache2-mod_http2-issue-167.patch of Package apache2.21779
Index: httpd-2.4.34/modules/http2/h2_from_h1.c
===================================================================
--- httpd-2.4.34.orig/modules/http2/h2_from_h1.c 2018-05-29 23:16:29.000000000 +0200
+++ httpd-2.4.34/modules/http2/h2_from_h1.c 2019-02-27 12:39:19.503285243 +0100
@@ -22,6 +22,8 @@
#include <apr_strings.h>
#include <httpd.h>
+#define AP_STATUS_IS_HEADER_ONLY(x) ((x) == HTTP_NO_CONTENT || \
+ (x) == HTTP_NOT_MODIFIED)
#include <http_core.h>
#include <http_log.h>
#include <http_connection.h>
@@ -586,18 +588,20 @@ apr_status_t h2_filter_headers_out(ap_fi
}
}
- if (r->header_only) {
+ if (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)) {
ap_log_cerror(APLOG_MARK, APLOG_TRACE1, 0, f->c,
- "h2_task(%s): header_only, cleanup output brigade",
+ "h2_task(%s): headers only, cleanup output brigade",
task->id);
b = body_bucket? body_bucket : APR_BRIGADE_FIRST(bb);
while (b != APR_BRIGADE_SENTINEL(bb)) {
next = APR_BUCKET_NEXT(b);
if (APR_BUCKET_IS_EOS(b) || AP_BUCKET_IS_EOR(b)) {
break;
- }
- APR_BUCKET_REMOVE(b);
- apr_bucket_destroy(b);
+ }
+ if (!H2_BUCKET_IS_HEADERS(b)) {
+ APR_BUCKET_REMOVE(b);
+ apr_bucket_destroy(b);
+ }
b = next;
}
}