I need a tiny patch for mod_http2 that solves an empty response problem with 
the latest nghttp2 libraries:

Jim, can we get that still in? Commited in trunk as r1707468.

//Stefan

Index: modules/http2/h2_util.c
===================================================================
--- modules/http2/h2_util.c     (revision 1707467)
+++ modules/http2/h2_util.c     (revision 1707468)
@@ -484,20 +484,39 @@
 
 int h2_util_has_eos(apr_bucket_brigade *bb, apr_size_t len)
 {
-    apr_bucket *b, *end;
+    apr_bucket *b;
     
-    apr_status_t status = last_not_included(bb, len, 0, 0, &end);
-    if (status != APR_SUCCESS) {
-        return status;
+    if (len == 0) {
+        /* special case: this is only true, if there are only meta
+         * and an eos bucket in the brigade head.
+         */
+        for (b = APR_BRIGADE_FIRST(bb);
+             b != APR_BRIGADE_SENTINEL(bb);
+             b = APR_BUCKET_NEXT(b))
+        {
+            if (!APR_BUCKET_IS_METADATA(b) && b->length != 0) {
+                break;
+            }
+            else if (APR_BUCKET_IS_EOS(b)) {
+                return 1;
+            }
+        }
     }
-    
-    for (b = APR_BRIGADE_FIRST(bb);
-         b != APR_BRIGADE_SENTINEL(bb) && b != end;
-         b = APR_BUCKET_NEXT(b))
-    {
-        if (APR_BUCKET_IS_EOS(b)) {
-            return 1;
+    else {
+        apr_bucket *end;
+        apr_status_t status = last_not_included(bb, len, 0, 0, &end);
+        if (status != APR_SUCCESS) {
+            return status;
         }
+        
+        for (b = APR_BRIGADE_FIRST(bb);
+             b != APR_BRIGADE_SENTINEL(bb) && b != end;
+             b = APR_BUCKET_NEXT(b))
+        {
+            if (APR_BUCKET_IS_EOS(b)) {
+                return 1;
+            }
+        }
     }
     return 0;
 }
Index: modules/http2/h2_version.h
===================================================================
--- modules/http2/h2_version.h  (revision 1707467)
+++ modules/http2/h2_version.h  (revision 1707468)
@@ -20,7 +20,7 @@
  * @macro
  * Version number of the h2 module as c string
  */
-#define MOD_HTTP2_VERSION "0.9.9"
+#define MOD_HTTP2_VERSION "1.0.0"
 
 /**
  * @macro
@@ -28,7 +28,7 @@
  * release. This is a 24 bit number with 8 bits for major number, 8 bits
  * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
  */
-#define MOD_HTTP2_VERSION_NUM 0x000909
+#define MOD_HTTP2_VERSION_NUM 0x010000
 
 
 #endif /* mod_h2_h2_version_h */

Reply via email to